blob: badb431807df3980cf0cc7212eb271deae99e33a [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*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530475
476 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
477
schang86c22c42013-03-13 18:41:24 -0700478 /*-------------------------------------------------------------------------
479 Indications
480 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700481 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800482 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530483 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
484 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700485#ifdef WLAN_FEATURE_11W
486 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
487#else
488 NULL,
489#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700490 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
491 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530492#ifdef FEATURE_WLAN_BATCH_SCAN
493 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
494 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
495#else
496 NULL,
497 NULL,
498#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700499 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800500
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530501 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800502 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
503
504 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530505#ifdef FEATURE_WLAN_TDLS
506 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
507#else
508 NULL,
509#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530510
Jeff Johnson295189b2012-06-20 16:38:30 -0700511};
512
513
Jeff Johnsone7245742012-09-05 17:12:55 -0700514/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700515 DAL Request Processing Array - the functions in this table will only be
516 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700517 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700518 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700519WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700520{
521 /*INIT*/
522 WDI_ProcessStartRsp, /* WDI_START_RESP */
523 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
524 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
525
526 /*SCAN*/
527 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
528 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
529 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
530 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
531
532 /* ASSOCIATION*/
533 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
534 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
535 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
536 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
537 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
538
539 /* Security */
540 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
541 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
542 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
543 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
544
545 /* QoS and BA APIs */
546 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
547 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
548 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
549 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
550 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
551
552 /* Miscellaneous Control APIs */
553 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
554 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
555 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
556 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
557 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
558
559 /* BA APIs*/
560 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
561 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700562
Jeff Johnson295189b2012-06-20 16:38:30 -0700563 /* IBSS APIs*/
564 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
565 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
566
567 /*Soft AP APIs*/
568 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
569 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
570 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
571 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
572
573 /* PowerSave APIs */
574 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
575 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
576 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
577 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
578 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
579 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
580 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
581 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
582 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
583 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
584 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
585 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
586 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
587 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
588 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
589 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
590 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
591 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700592
Jeff Johnson295189b2012-06-20 16:38:30 -0700593
594 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
595
596 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
597 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
598#ifdef WLAN_FEATURE_VOWIFI_11R
599 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
600#else
601 NULL,
602#endif /* WLAN_FEATURE_VOWIFI_11R */
603 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
604 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700605#ifdef FEATURE_OEM_DATA_SUPPORT
606 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
607#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700608 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700609#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700610 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
611
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700613
Jeff Johnson295189b2012-06-20 16:38:30 -0700614 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700615
Jeff Johnsone7245742012-09-05 17:12:55 -0700616 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
617
Jeff Johnson295189b2012-06-20 16:38:30 -0700618#ifdef FEATURE_WLAN_SCAN_PNO
619 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
620 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
621 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
622#else
623 NULL,
624 NULL,
625 NULL,
626#endif // FEATURE_WLAN_SCAN_PNO
627
628 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700629 /*---------------------------------------------------------------------
630 Indications
631 ---------------------------------------------------------------------*/
632#ifdef WLAN_FEATURE_PACKET_FILTERING
633 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700634 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700636 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700637 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700638 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700639 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700640 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700641#else
642 NULL,
643 NULL,
644 NULL,
645 NULL,
646#endif // WLAN_FEATURE_PACKET_FILTERING
647
648 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
649 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
650
651 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800652#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700653 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
654#else
655 NULL,
656#endif
657
658#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700659 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
660 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700661#else
662 NULL,
663 NULL,
664#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700665 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
666 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700667#ifdef WLAN_FEATURE_11AC
668 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700669#else
670 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700671#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800672#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800673 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
674#else
675 NULL,
676#endif
schang86c22c42013-03-13 18:41:24 -0700677 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700678#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700679 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700680#else
681 NULL,
682#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530683#ifdef FEATURE_WLAN_TDLS
684 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
685#else
686 NULL,
687#endif
Leo Chang9056f462013-08-01 19:21:11 -0700688#ifdef FEATURE_WLAN_LPHB
689 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
690#else
691 NULL,
692#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530693
694#ifdef FEATURE_WLAN_BATCH_SCAN
695 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
696#else
697 NULL,
698#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800699 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530700
c_hpothu92367912014-05-01 15:18:17 +0530701 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800702
c_hpothu92367912014-05-01 15:18:17 +0530703 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
704
705 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800706
Sunil Duttbd736ed2014-05-26 21:19:41 +0530707
708#ifdef WLAN_FEATURE_LINK_LAYER_STATS
709 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
710 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
711 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
712#else
713 NULL,
714 NULL,
715 NULL,
716#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530717#ifdef WLAN_FEATURE_EXTSCAN
718 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
719 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
720 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
721 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
722 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
723 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
724 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
725 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
726#else
727 NULL,
728 NULL,
729 NULL,
730 NULL,
731 NULL,
732 NULL,
733 NULL,
734 NULL,
735#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530736 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530737
738 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530739
740 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530741 WDI_ProcessMgmtFrameLoggingInitRsp, /* WDI_MGMT_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530742 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530743
Srinivas Dasari32a79262015-02-19 13:04:49 +0530744 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
745
Jeff Johnson295189b2012-06-20 16:38:30 -0700746 /*---------------------------------------------------------------------
747 Indications
748 ---------------------------------------------------------------------*/
749 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
750 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
751 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
752 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
753 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
754 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
755
756 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
757
758 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
759
Jeff Johnson295189b2012-06-20 16:38:30 -0700760 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700761
762#ifdef FEATURE_WLAN_SCAN_PNO
763 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
764#else
765 NULL,
766#endif // FEATURE_WLAN_SCAN_PNO
767
768#ifdef WLAN_WAKEUP_EVENTS
769 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
770#else // WLAN_WAKEUP_EVENTS
771 NULL,
772#endif // WLAN_WAKEUP_EVENTS
773
774 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800775
Viral Modid86bde22012-12-10 13:09:21 -0800776 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530777#ifdef FEATURE_WLAN_TDLS
778 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
779#else
780 NULL,
781#endif
Leo Chang9056f462013-08-01 19:21:11 -0700782
783#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700784 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700785#else
786 NULL,
787#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700788
789 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700790
791 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530792
793#ifdef FEATURE_WLAN_BATCH_SCAN
794 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
795#else
796 NULL,
797#endif
798
Leo Chang0b0e45a2013-12-15 15:18:55 -0800799#ifdef FEATURE_WLAN_CH_AVOID
800 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
801#else
802 NULL,
803#endif /* FEATURE_WLAN_CH_AVOID */
804
Sunil Duttbd736ed2014-05-26 21:19:41 +0530805 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
806#ifdef WLAN_FEATURE_LINK_LAYER_STATS
807 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
808#else
809 NULL,
810#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530811#ifdef WLAN_FEATURE_EXTSCAN
812 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
813 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
814 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
815 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
816 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
817#else
818 NULL,
819 NULL,
820 NULL,
821 NULL,
822 NULL,
823#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530824#ifdef FEATURE_WLAN_TDLS
825 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
826#else
827 NULL,
828#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530829 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530830 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700831};
832
833
Jeff Johnsone7245742012-09-05 17:12:55 -0700834/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700835 WLAN DAL Global Control Block
836 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700837WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700838static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
839
Jeff Johnsone7245742012-09-05 17:12:55 -0700840const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700841
842/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700843WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700844void* WDI_GET_PAL_CTX( void )
845{
Jeff Johnsone7245742012-09-05 17:12:55 -0700846 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700847}/*WDI_GET_PAL_CTX*/
848
Jeff Johnsone7245742012-09-05 17:12:55 -0700849/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700850 Helper inline converters
851 ============================================================================*/
852/*Convert WDI driver type into HAL driver type*/
853WPT_STATIC WPT_INLINE WDI_Status
854WDI_HAL_2_WDI_STATUS
855(
856 eHalStatus halStatus
857);
858
859/*Convert WDI request type into HAL request type*/
860WPT_STATIC WPT_INLINE tHalHostMsgType
861WDI_2_HAL_REQ_TYPE
862(
863 WDI_RequestEnumType wdiReqType
864);
865
866/*Convert WDI response type into HAL response type*/
867WPT_STATIC WPT_INLINE WDI_ResponseEnumType
868HAL_2_WDI_RSP_TYPE
869(
870 tHalHostMsgType halMsg
871);
872
873/*Convert WDI driver type into HAL driver type*/
874WPT_STATIC WPT_INLINE tDriverType
875WDI_2_HAL_DRV_TYPE
876(
877 WDI_DriverType wdiDriverType
878);
879
880/*Convert WDI stop reason into HAL stop reason*/
881WPT_STATIC WPT_INLINE tHalStopType
882WDI_2_HAL_STOP_REASON
883(
884 WDI_StopType wdiStopType
885);
886
887/*Convert WDI scan mode type into HAL scan mode type*/
888WPT_STATIC WPT_INLINE eHalSysMode
889WDI_2_HAL_SCAN_MODE
890(
891 WDI_ScanMode wdiScanMode
892);
893
894/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700895WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700896WDI_2_HAL_SEC_CH_OFFSET
897(
898 WDI_HTSecondaryChannelOffset wdiSecChOffset
899);
900
901/*Convert WDI BSS type into HAL BSS type*/
902WPT_STATIC WPT_INLINE tSirBssType
903WDI_2_HAL_BSS_TYPE
904(
905 WDI_BssType wdiBSSType
906);
907
908/*Convert WDI NW type into HAL NW type*/
909WPT_STATIC WPT_INLINE tSirNwType
910WDI_2_HAL_NW_TYPE
911(
912 WDI_NwType wdiNWType
913);
914
915/*Convert WDI chanel bonding type into HAL cb type*/
916WPT_STATIC WPT_INLINE ePhyChanBondState
917WDI_2_HAL_CB_STATE
918(
919 WDI_PhyChanBondState wdiCbState
920);
921
922/*Convert WDI chanel bonding type into HAL cb type*/
923WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
924WDI_2_HAL_HT_OPER_MODE
925(
926 WDI_HTOperatingMode wdiHTOperMode
927);
928
929/*Convert WDI mimo PS type into HAL mimo PS type*/
930WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
931WDI_2_HAL_MIMO_PS
932(
933 WDI_HTMIMOPowerSaveState wdiHTOperMode
934);
935
936/*Convert WDI ENC type into HAL ENC type*/
937WPT_STATIC WPT_INLINE tAniEdType
938WDI_2_HAL_ENC_TYPE
939(
940 WDI_EncryptType wdiEncType
941);
942
943/*Convert WDI WEP type into HAL WEP type*/
944WPT_STATIC WPT_INLINE tAniWepType
945WDI_2_HAL_WEP_TYPE
946(
947 WDI_WepType wdiWEPType
948);
949
950/*Convert WDI Link State into HAL Link State*/
951WPT_STATIC WPT_INLINE tSirLinkState
952WDI_2_HAL_LINK_STATE
953(
954 WDI_LinkStateType wdiLinkState
955);
956
Jeff Johnsone7245742012-09-05 17:12:55 -0700957/*Translate a STA Context from WDI into HAL*/
958WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700959void
960WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700961(
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 tConfigStaParams* phalConfigSta,
963 WDI_ConfigStaReqInfoType* pwdiConfigSta
964);
Jeff Johnsone7245742012-09-05 17:12:55 -0700965
966/*Translate a Rate set info from WDI into HAL*/
967WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700968WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700969(
Jeff Johnson295189b2012-06-20 16:38:30 -0700970 tSirMacRateSet* pHalRateSet,
971 WDI_RateSet* pwdiRateSet
972);
973
974/*Translate an EDCA Parameter Record from WDI into HAL*/
975WPT_STATIC WPT_INLINE void
976WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700977(
Jeff Johnson295189b2012-06-20 16:38:30 -0700978 tSirMacEdcaParamRecord* phalEdcaParam,
979 WDI_EdcaParamRecord* pWDIEdcaParam
980);
981
982/*Copy a management frame header from WDI fmt into HAL fmt*/
983WPT_STATIC WPT_INLINE void
984WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
985(
986 tSirMacMgmtHdr* pmacMgmtHdr,
987 WDI_MacMgmtHdr* pwdiMacMgmtHdr
988);
989
990/*Copy config bss parameters from WDI fmt into HAL fmt*/
991WPT_STATIC WPT_INLINE void
992WDI_CopyWDIConfigBSSToHALConfigBSS
993(
994 tConfigBssParams* phalConfigBSS,
995 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
996);
997
Jeff Johnsone7245742012-09-05 17:12:55 -0700998/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700999 pointed to by user data */
1000WPT_STATIC WPT_INLINE void
1001WDI_ExtractRequestCBFromEvent
1002(
1003 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001004 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001005 void** ppUserData
1006);
1007
1008wpt_uint8
1009WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001010(
Jeff Johnson295189b2012-06-20 16:38:30 -07001011 WDI_ControlBlockType* pWDICtx,
1012 WDI_BSSSessionType** ppSession
1013);
1014
1015void
1016WDI_AddBcastSTAtoSTATable
1017(
1018 WDI_ControlBlockType* pWDICtx,
1019 WDI_AddStaParams * staParams,
1020 wpt_uint16 usBcastStaIdx
1021);
1022
1023WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001024(
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 WDI_ControlBlockType* pWDICtx,
1026 WDI_EventInfoType* pEventData
1027);
1028
1029void
1030WDI_SetPowerStateCb
1031(
1032 wpt_status status,
1033 unsigned int dxePhyAddr,
1034 void *pContext
1035);
1036
Jeff Johnson295189b2012-06-20 16:38:30 -07001037/**
1038 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001039
1040 @param wdiReqMsgId: WDI Message request Id
1041
1042 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001043 @return Result of the function call
1044*/
1045static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1046{
1047 switch (wdiReqMsgId)
1048 {
1049 CASE_RETURN_STRING( WDI_START_REQ );
1050 CASE_RETURN_STRING( WDI_STOP_REQ );
1051 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1052 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1053 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1054 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1055 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1056 CASE_RETURN_STRING( WDI_JOIN_REQ );
1057 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1058 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1059 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1060 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1061 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1062 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1063 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1064 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1065 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1066 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1067 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1068 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1069 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1070 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001071 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001072 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1073 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1074 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1075 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1076 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1077 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1078 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1079 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1080 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1081 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1082 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1083 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001084 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001085 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301086#ifdef FEATURE_WLAN_TDLS
1087 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301088 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301089#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1091 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1092 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1093 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1094 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1095 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1096 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1097 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1098 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1099 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1100 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1101 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1102 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1103 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1104 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1105 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1106 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1107 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1108 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1109 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1110 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1111 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1112 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1113 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1114 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001115 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001116 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1117 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1118 #ifdef FEATURE_WLAN_SCAN_PNO
1119 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1120 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1121 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1122 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001123#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001124 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001125#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001126 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1127 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1128 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1129 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1130 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1131 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1132 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1133 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1134 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301135 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001136 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001137 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001138#ifdef WLAN_FEATURE_11W
1139 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1140#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301141#ifdef FEATURE_WLAN_BATCH_SCAN
1142 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1143 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1144 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1145#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301146 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1147 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001148 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301149#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1150 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1151 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1152 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1153#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301154#ifdef WLAN_FEATURE_EXTSCAN
1155 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1156 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1157 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1158 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1159 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1160 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1161 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1162 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1163#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301164 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301165 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301166 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301167 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301168 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301169 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Jeff Johnson295189b2012-06-20 16:38:30 -07001170 default:
1171 return "Unknown WDI MessageId";
1172 }
1173}
1174
1175
1176
1177/**
1178 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001179
1180 @param wdiRespMsgId: WDI Message response Id
1181
1182 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 @return Result of the function call
1184*/
1185static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1186{
1187 switch (wdiRespMsgId)
1188 {
1189 CASE_RETURN_STRING( WDI_START_RESP );
1190 CASE_RETURN_STRING( WDI_STOP_RESP );
1191 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1192 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1193 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1194 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1195 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1196 CASE_RETURN_STRING( WDI_JOIN_RESP );
1197 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1198 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1199 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1200 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1201 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1202 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1203 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1204 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1205 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1206 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1207 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1208 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1209 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1210 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1211 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1212 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1213 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1214 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1215 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1216 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1217 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1218 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1219 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1220 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1221 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1222 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1223 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301224#ifdef FEATURE_WLAN_TDLS
1225 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301226 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301227 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1228#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001229 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1230 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1231 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1232 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1233 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1234 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1235 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1236 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1237 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1238 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1239 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1240 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1241 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1242 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1243 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1244 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1245 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1246 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1247 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1248 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1249 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1250 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1251 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1252 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1253 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001254 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001255 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1256 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1257 #ifdef FEATURE_WLAN_SCAN_PNO
1258 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1259 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1260 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1261 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001262#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001263 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001264#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001265 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1266 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1267 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1268 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1269 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1270 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1271 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1272 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001273 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301274#ifdef FEATURE_WLAN_BATCH_SCAN
1275 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1276#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001277 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301278 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301279 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301280#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1281 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1282 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1283 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1284#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301285#ifdef WLAN_FEATURE_EXTSCAN
1286 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1287 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1288 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1289 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1290 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1291 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1292 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1293 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1294 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1295 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1296 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1297 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1298 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1299
1300#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301301 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301302 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301303 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301304 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001305 default:
1306 return "Unknown WDI MessageId";
1307 }
1308}
1309
1310/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301311 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1312 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301313 @param capabilityBitmap - Base address of a 4 element Bitmap array
1314 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301315 @see
1316 @returns None
1317 */
1318void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1319{
Abhishek Singh08b60122014-02-04 18:05:23 +05301320 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301321 char capStr[512];
1322 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301323 for (j = 0; j < 4; j++) {
1324 for (i = 0; i < 32; i++) {
1325 if ((*(capabilityBitmap + j) & (1 << i))) {
1326 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301327 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1328 pCapStr += strlen("MCC");
1329 break;
1330 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1331 pCapStr += strlen("P2P");
1332 break;
1333 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1334 pCapStr += strlen("DOT11AC");
1335 break;
1336 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1337 pCapStr += strlen("SLM_SESSIONIZATION");
1338 break;
1339 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1340 pCapStr += strlen("DOT11AC_OPMODE");
1341 break;
1342 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1343 pCapStr += strlen("SAP32STA");
1344 break;
1345 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1346 pCapStr += strlen("TDLS");
1347 break;
1348 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1349 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1350 break;
1351 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1352 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1353 break;
1354 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1355 pCapStr += strlen("BEACON_OFFLOAD");
1356 break;
1357 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1358 pCapStr += strlen("SCAN_OFFLOAD");
1359 break;
1360 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1361 pCapStr += strlen("ROAM_OFFLOAD");
1362 break;
1363 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1364 pCapStr += strlen("BCN_MISS_OFFLOAD");
1365 break;
1366 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1367 pCapStr += strlen("STA_POWERSAVE");
1368 break;
1369 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1370 pCapStr += strlen("AP_UAPSD");
1371 break;
1372 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1373 pCapStr += strlen("AP_DFS");
1374 break;
1375 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1376 pCapStr += strlen("BLOCKACK");
1377 break;
1378 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1379 pCapStr += strlen("PHY_ERR");
1380 break;
1381 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1382 pCapStr += strlen("BCN_FILTER");
1383 break;
1384 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1385 pCapStr += strlen("RTT");
1386 break;
1387 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1388 pCapStr += strlen("RATECTRL");
1389 break;
1390 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1391 pCapStr += strlen("WOW");
1392 break;
1393 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1394 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1395 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301396 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1397 pCapStr += strlen("FW_IN_TX_PATH");
1398 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301399 case HT40_OBSS_SCAN:
1400 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1401 "%s", "HT40_OBSS_SCAN");
1402 pCapStr += strlen("HT40_OBSS_SCAN");
1403 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301404 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1405 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1406 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1407 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1408 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301409 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1410 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1411 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301412 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1413 pCapStr += strlen("CH_SWITCH_V1");
1414 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301415#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1416 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1417 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1418 break;
1419#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301420#ifdef WLAN_FEATURE_EXTSCAN
1421 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1422 pCapStr += strlen("EXTENDED_SCAN");
1423 break;
1424#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301425 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1426 pCapStr += strlen("MU_MIMO");
1427 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301428
Mihir Shetec34258c2014-07-30 17:50:27 +05301429 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1430 pCapStr += strlen("DYNAMIC_WMM_PS");
1431 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301432 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1433 pCapStr += strlen("FW_STATS");
1434 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301435 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1436 pCapStr += strlen("MAC_SPOOFED_SCAN");
1437 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301438 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1439 pCapStr += strlen("WPS_PRBRSP_TMPL");
1440 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301441 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1442 pCapStr += strlen("BCN_IE_FLT_DELTA");
1443 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301444 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1445 pCapStr += strlen("MGMT_FRAME_LOGGING");
1446 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301447 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1448 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1449 break;
1450
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301451 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1452 pCapStr += strlen("DISA");
1453 break;
1454
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301455 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1456 pCapStr += strlen("TDLS_OFF_CHANNEL");
1457 break;
1458
Abhishek Singh08b60122014-02-04 18:05:23 +05301459 }
1460 *pCapStr++ = ',';
1461 *pCapStr++ = ' ';
1462 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301463 }
1464 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301465 pCapStr -= 2;
1466 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301467 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301469}
1470
1471/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001473
1474 @param halStatusId: HAL status Id
1475
1476 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001477 @return Result of the function call
1478*/
1479static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1480{
1481 switch (halStatusId)
1482 {
1483 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1484 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1485 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1486 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1487 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1488 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1489 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1490 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1491 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1492 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1493 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1494 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1495 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1496 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1497 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1498 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1499 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1500 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1501 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1502 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1503 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1504 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1505 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1506 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1507 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1508 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1509 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1510 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1511 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1512 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1513 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1514 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1515 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1516 default:
1517 return "Unknown HAL status";
1518 }
1519}
1520
Jeff Johnsone7245742012-09-05 17:12:55 -07001521/*========================================================================
1522
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001524
Jeff Johnson295189b2012-06-20 16:38:30 -07001525==========================================================================*/
1526
1527/**
1528 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001529
Jeff Johnson295189b2012-06-20 16:38:30 -07001530 DAL will allocate all the resources it needs. It will open PAL, it will also
1531 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001532 DXE/SMD or any other drivers that they need.
1533
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301534 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 ppWDIGlobalCtx: output pointer of Global Context
1536 pWdiDevCapability: output pointer of device capability
1537
1538 @return Result of the function call
1539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001541WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001542(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301543 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001544 void** ppWDIGlobalCtx,
1545 WDI_DeviceCapabilityType* pWdiDevCapability,
1546 unsigned int driverType
1547)
1548{
1549 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001550 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001551 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001552 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1554
1555 /*---------------------------------------------------------------------
1556 Sanity check
1557 ---------------------------------------------------------------------*/
1558 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1559 {
1560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1561 "Invalid input parameters in WDI_Init");
1562
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 }
1565
1566 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001567 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 ---------------------------------------------------------------------*/
1569 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1570 {
1571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1572 "WDI module already initialized - return");
1573
Jeff Johnsone7245742012-09-05 17:12:55 -07001574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 }
1576
1577 /*Module is now initialized - this flag is to ensure the fact that multiple
1578 init will not happen on WDI
1579 !! - potential race does exist because read and set are not atomic,
1580 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001581 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001582
1583 /*Setup the control block */
1584 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301585 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001586
1587 /*Setup the STA Table*/
1588 wdiStatus = WDI_STATableInit(&gWDICb);
1589 if ( WDI_STATUS_SUCCESS != wdiStatus )
1590 {
1591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1592 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001593 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001594 goto fail_STATableInit;
1595 }
1596
1597 /*------------------------------------------------------------------------
1598 Open the PAL
1599 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301600 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1602 {
1603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1604 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001605 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 goto fail_wpalOpen;
1607 }
1608
1609 /*Initialize main synchro mutex - it will be used to ensure integrity of
1610 the main WDI Control Block*/
1611 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1612 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1613 {
1614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1615 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001616 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 goto fail_mutex;
1618 }
1619
1620 /*Initialize the response timer - it will be used to time all messages
1621 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001622 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1623 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 &gWDICb);
1625 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1626 {
1627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1628 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001629 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001630 goto fail_timer;
1631 }
1632
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001633 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1634 WDI_SsrTimerCB,
1635 &gWDICb);
1636 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1637 {
1638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1639 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001640 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001641 goto fail_timer2;
1642 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 /* Initialize the WDI Pending Request Queue*/
1644 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1645 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1646 {
1647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1648 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001649 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001650 goto fail_pend_queue;
1651 }
1652
1653 /*Init WDI Pending Assoc Id Queue */
1654 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1655 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1656 {
1657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1658 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001659 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 goto fail_assoc_queue;
1661 }
1662
1663 /*Initialize the BSS sessions pending Queue */
1664 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1665 {
1666 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1667 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1668 {
1669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1670 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001671 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001672 goto fail_bss_queue;
1673 }
1674 }
1675
1676 /*Indicate the control block is sufficiently initialized for callbacks*/
1677 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1678
1679 /*------------------------------------------------------------------------
1680 Initialize the Data Path Utility Module
1681 ------------------------------------------------------------------------*/
1682 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1683 if ( WDI_STATUS_SUCCESS != wdiStatus )
1684 {
1685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1686 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001687 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 goto fail_dp_util_init;
1689 }
1690
1691 /* Init Set power state event */
1692 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 {
1695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1696 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001697 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 goto fail_power_event;
1699 }
1700
1701 /* Init WCTS action event */
1702 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 {
1705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1706 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001707 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001708 goto fail_wcts_event;
1709 }
1710
1711 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 ------------------------------------------------------------------------*/
1714 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1715 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001716 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001717 wctsCBs.wctsRxMsgCBData = &gWDICb;
1718
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 WDI_CT_CHANNEL_SIZE,
1722 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001723
1724 if ( NULL == gWDICb.wctsHandle )
1725 {
1726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001727 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 goto fail_wcts_open;
1729 }
1730
1731 gWDICb.driverMode = (tDriverType)driverType;
1732 /* FTM mode not need to open Transport Driver */
1733 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 /*------------------------------------------------------------------------
1736 Open the Data Transport
1737 ------------------------------------------------------------------------*/
1738 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1739 {
1740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001741 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 goto fail_wdts_open;
1743 }
1744 }
1745
1746 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001747 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301748 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 /*Send the context as a ptr to the global WDI Control Block*/
1750 *ppWDIGlobalCtx = &gWDICb;
1751
1752 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1755 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1756 return WDI_STATUS_SUCCESS;
1757
1758 /* ERROR handlers
1759 Undo everything that completed successfully */
1760
1761 fail_wdts_open:
1762 {
1763 wpt_status eventStatus;
1764
1765 /* Closing WCTS in this scenario is tricky since it has to close
1766 the SMD channel and then we get notified asynchronously when
1767 the channel has been closed. So we take some of the logic from
1768 the "normal" close procedure in WDI_Close()
1769 */
1770
1771 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001775 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 }
1777
1778 WCTS_CloseTransport(gWDICb.wctsHandle);
1779
1780 /* Wait for WCTS to close the control transport. If we were able
1781 to reset the event flag, then we'll wait for the event,
1782 otherwise we'll wait for a maximum amount of time required for
1783 the channel to be closed */
1784 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1785 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001786 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 WDI_WCTS_ACTION_TIMEOUT);
1788 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1789 {
1790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001791 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 }
1793 }
1794 else
1795 {
1796 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1797 }
1798 }
1799 fail_wcts_open:
1800 wpalEventDelete(&gWDICb.wctsActionEvent);
1801 fail_wcts_event:
1802 wpalEventDelete(&gWDICb.setPowerStateEvent);
1803 fail_power_event:
1804 WDI_DP_UtilsExit(&gWDICb);
1805 fail_dp_util_init:
1806 gWDICb.magic = 0;
1807 fail_bss_queue:
1808 /* entries 0 thru i-1 were successfully initialized */
1809 while (0 < i)
1810 {
1811 i--;
1812 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1813 }
1814 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1815 fail_assoc_queue:
1816 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1817 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001818 wpalTimerDelete(&gWDICb.ssrTimer);
1819 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001820 wpalTimerDelete(&gWDICb.wptResponseTimer);
1821 fail_timer:
1822 wpalMutexDelete(&gWDICb.wptMutex);
1823 fail_mutex:
1824 wpalClose(gWDICb.pPALContext);
1825 fail_wpalOpen:
1826 WDI_STATableClose(&gWDICb);
1827 fail_STATableInit:
1828 gWDIInitialized = eWLAN_PAL_FALSE;
1829
1830 return WDI_STATUS_E_FAILURE;
1831
1832}/*WDI_Init*/;
1833
1834/**
1835 @brief WDI_Start will be called when the upper MAC is ready to
1836 commence operation with the WLAN Device. Upon the call
1837 of this API the WLAN DAL will pack and send a HAL Start
1838 message to the lower RIVA sub-system if the SMD channel
1839 has been fully opened and the RIVA subsystem is up.
1840
1841 If the RIVA sub-system is not yet up and running DAL
1842 will queue the request for Open and will wait for the
1843 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001845
1846 WDI_Init must have been called.
1847
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001850
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 wdiStartRspCb: callback for passing back the response of
1852 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001853
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 callback
1856
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 @see WDI_Start
1858 @return Result of the function call
1859*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001860WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001861WDI_Start
1862(
1863 WDI_StartReqParamsType* pwdiStartParams,
1864 WDI_StartRspCb wdiStartRspCb,
1865 void* pUserData
1866)
1867{
1868 WDI_EventInfoType wdiEventData;
1869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1870
1871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 ------------------------------------------------------------------------*/
1874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1877 "WDI API call before module is initialized - Fail request");
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 }
1881
1882 /*------------------------------------------------------------------------
1883 Fill in Event data and post to the Main FSM
1884 ------------------------------------------------------------------------*/
1885 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 wdiEventData.pEventData = pwdiStartParams;
1887 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1888 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 wdiEventData.pUserData = pUserData;
1890
1891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1892
1893}/*WDI_Start*/
1894
1895/**
1896 @brief WDI_Stop will be called when the upper MAC is ready to
1897 stop any operation with the WLAN Device. Upon the call
1898 of this API the WLAN DAL will pack and send a HAL Stop
1899 message to the lower RIVA sub-system if the DAL Core is
1900 in started state.
1901
1902 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001903
1904 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001905
1906 WDI_Start must have been called.
1907
Jeff Johnsone7245742012-09-05 17:12:55 -07001908 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001910
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 wdiStopRspCb: callback for passing back the response of
1912 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001913
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 callback
1916
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 @see WDI_Start
1918 @return Result of the function call
1919*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001920WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001921WDI_Stop
1922(
1923 WDI_StopReqParamsType* pwdiStopParams,
1924 WDI_StopRspCb wdiStopRspCb,
1925 void* pUserData
1926)
1927{
1928 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001929 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1931
1932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 ------------------------------------------------------------------------*/
1935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1936 {
1937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1938 "WDI API call before module is initialized - Fail request");
1939
Jeff Johnsone7245742012-09-05 17:12:55 -07001940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 }
1942
Jeff Johnson43971f52012-07-17 12:26:56 -07001943 /*Access to the global state must be locked before cleaning */
1944 wpalMutexAcquire(&pWDICtx->wptMutex);
1945
1946 /*Clear all pending request*/
1947 WDI_ClearPendingRequests(pWDICtx);
1948
1949 /*We have completed cleaning unlock now*/
1950 wpalMutexRelease(&pWDICtx->wptMutex);
1951
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 /* Free the global variables */
1953 wpalMemoryFree(gpHostWlanFeatCaps);
1954 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001955 gpHostWlanFeatCaps = NULL;
1956 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957
1958 /*------------------------------------------------------------------------
1959 Fill in Event data and post to the Main FSM
1960 ------------------------------------------------------------------------*/
1961 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001962 wdiEventData.pEventData = pwdiStopParams;
1963 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1964 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 wdiEventData.pUserData = pUserData;
1966
1967 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1968
1969}/*WDI_Stop*/
1970
1971
1972
1973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 needs to interact with DAL. DAL will free its control
1976 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001977
1978 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001979
1980 WDI_Stop must have been called.
1981
1982 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 @see WDI_Stop
1985 @return Result of the function call
1986*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001988WDI_Close
1989(
1990 void
1991)
1992{
1993 wpt_uint8 i;
1994 WDI_EventInfoType wdiEventData;
1995 wpt_status wptStatus;
1996 wpt_status eventStatus;
1997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1998
1999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 ------------------------------------------------------------------------*/
2002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2003 {
2004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2005 "WDI API call before module is initialized - Fail request");
2006
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002008 }
2009
2010 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2011 (the control transport will be closed by the FSM and we'll want
2012 to wait until that completes)*/
2013 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002014 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 {
2016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002017 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 /* fall through and try to finish closing via the FSM */
2019 }
2020
2021 /*------------------------------------------------------------------------
2022 Fill in Event data and post to the Main FSM
2023 ------------------------------------------------------------------------*/
2024 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002025 wdiEventData.pEventData = NULL;
2026 wdiEventData.uEventDataSize = 0;
2027 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wdiEventData.pUserData = NULL;
2029
2030 gWDIInitialized = eWLAN_PAL_FALSE;
2031
2032 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2033
2034 /*Wait for WCTS to close the control transport
2035 (but only if we were able to reset the event flag*/
2036 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2037 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 WDI_WCTS_ACTION_TIMEOUT);
2040 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2041 {
2042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002043 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 }
2045 }
2046
2047 /* Destroy the WCTS action event */
2048 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2049 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2050 {
2051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2052 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 }
2055
2056 /* Destroy the Set Power State event */
2057 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2058 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2059 {
2060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2061 "WDI Close failed to destroy an event");
2062
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 }
2065
2066 /*------------------------------------------------------------------------
2067 Closes the Data Path Utility Module
2068 ------------------------------------------------------------------------*/
2069 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2070 {
2071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2072 "WDI Init failed to close the DP Util Module");
2073
Jeff Johnsone7245742012-09-05 17:12:55 -07002074 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 }
2076
2077 /*destroy the BSS sessions pending Queue */
2078 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2079 {
2080 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2081 }
2082
2083 /* destroy the WDI Pending Assoc Id Request Queue*/
2084 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2085
2086 /* destroy the WDI Pending Request Queue*/
2087 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002088
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 /*destroy the response timer */
2090 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2091
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002092 /*destroy the SSR timer */
2093 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2094
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 /*invalidate the main synchro mutex */
2096 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2097 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2098 {
2099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2100 "Failed to delete mutex %d", wptStatus);
2101 WDI_ASSERT(0);
2102 }
2103
2104 /*Clear control block. note that this will clear the "magic"
2105 which will inhibit all asynchronous callbacks*/
2106 WDI_CleanCB(&gWDICb);
2107
2108 return wptStatus;
2109
2110}/*WDI_Close*/
2111
2112/**
2113 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2114 This will do most of the WDI stop & close
2115 operations without doing any handshake with Riva
2116
2117 This will also make sure that the control transport
2118 will NOT be closed.
2119
2120 This request will not be queued.
2121
2122
2123 WDI_Start must have been called.
2124
2125 @param closeTransport: Close control channel if this is set
2126
2127 @return Result of the function call
2128*/
2129WDI_Status
2130WDI_Shutdown
2131(
2132 wpt_boolean closeTransport
2133)
2134{
2135 WDI_EventInfoType wdiEventData;
2136 wpt_status wptStatus;
2137 int i = 0;
2138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2139
2140 /*------------------------------------------------------------------------
2141 Sanity Check
2142 ------------------------------------------------------------------------*/
2143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2144 {
2145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2146 "WDI API call before module is initialized - Fail request");
2147
2148 return WDI_STATUS_E_NOT_ALLOWED;
2149 }
2150
2151 /*------------------------------------------------------------------------
2152 Fill in Event data and post to the Main FSM
2153 ------------------------------------------------------------------------*/
2154 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2155 wdiEventData.pEventData = NULL;
2156 wdiEventData.uEventDataSize = 0;
2157
2158 /* Shutdown will not be queued, if the state is busy timer will be
2159 * stopped & this message will be processed.*/
2160 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2161 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2162 {
2163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002164 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 }
2166 /* Destroy the Set Power State event */
2167 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2168 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2169 {
2170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2171 "WDI Close failed to destroy an event");
2172
2173 WDI_ASSERT(0);
2174 }
2175 /*------------------------------------------------------------------------
2176 Closes the Data Path Utility Module
2177 ------------------------------------------------------------------------*/
2178 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2179 {
2180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2181 "WDI Init failed to close the DP Util Module");
2182
2183 WDI_ASSERT(0);
2184 }
2185 if ( closeTransport )
2186 {
2187 /* Close control transport, called from module unload */
2188 WCTS_CloseTransport(gWDICb.wctsHandle);
2189 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002190 else
2191 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002192 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002193 the pending messages in the transport queue */
2194 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2195 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 /*destroy the BSS sessions pending Queue */
2197 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2198 {
2199 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2200 }
2201
2202 /* destroy the WDI Pending Assoc Id Request Queue*/
2203 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2204 /* destroy the WDI Pending Request Queue*/
2205 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2206 /*destroy the response timer */
2207 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002208 /*destroy the SSR timer */
2209 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002210
2211 /*invalidate the main synchro mutex */
2212 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2213 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2214 {
2215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002216 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 WDI_ASSERT(0);
2218 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002219 /* Free the global variables */
2220 wpalMemoryFree(gpHostWlanFeatCaps);
2221 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002222 gpHostWlanFeatCaps = NULL;
2223 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 /*Clear control block. note that this will clear the "magic"
2225 which will inhibit all asynchronous callbacks*/
2226 WDI_CleanCB(&gWDICb);
2227 return wptStatus;
2228
2229}/*WDI_Shutdown*/
2230
2231
Jeff Johnsone7245742012-09-05 17:12:55 -07002232/*========================================================================
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236==========================================================================*/
2237
2238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 the WLAN Device to get ready for a scan procedure. Upon
2241 the call of this API the WLAN DAL will pack and send a
2242 HAL Init Scan request message to the lower RIVA
2243 sub-system if DAL is in state STARTED.
2244
2245 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002247
2248 WDI_Start must have been called.
2249
2250 @param wdiInitScanParams: the init scan parameters as specified
2251 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002252
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 wdiInitScanRspCb: callback for passing back the response
2254 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 callback
2258
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 @see WDI_Start
2260 @return Result of the function call
2261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002263WDI_InitScanReq
2264(
2265 WDI_InitScanReqParamsType* pwdiInitScanParams,
2266 WDI_InitScanRspCb wdiInitScanRspCb,
2267 void* pUserData
2268)
2269{
2270 WDI_EventInfoType wdiEventData;
2271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2272
2273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 ------------------------------------------------------------------------*/
2276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2277 {
2278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2279 "WDI API call before module is initialized - Fail request");
2280
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 }
2283
2284 /*------------------------------------------------------------------------
2285 Fill in Event data and post to the Main FSM
2286 ------------------------------------------------------------------------*/
2287 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 wdiEventData.pEventData = pwdiInitScanParams;
2289 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2290 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 wdiEventData.pUserData = pUserData;
2292
2293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2294
2295}/*WDI_InitScanReq*/
2296
2297/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 wishes to change the Scan channel on the WLAN Device.
2300 Upon the call of this API the WLAN DAL will pack and
2301 send a HAL Start Scan request message to the lower RIVA
2302 sub-system if DAL is in state STARTED.
2303
2304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002306
2307 WDI_InitScanReq must have been called.
2308
Jeff Johnsone7245742012-09-05 17:12:55 -07002309 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002310 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002311
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 wdiStartScanRspCb: callback for passing back the
2313 response of the start scan operation received from the
2314 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002315
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 callback
2318
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 @see WDI_InitScanReq
2320 @return Result of the function call
2321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002323WDI_StartScanReq
2324(
2325 WDI_StartScanReqParamsType* pwdiStartScanParams,
2326 WDI_StartScanRspCb wdiStartScanRspCb,
2327 void* pUserData
2328)
2329{
2330 WDI_EventInfoType wdiEventData;
2331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2332
2333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 ------------------------------------------------------------------------*/
2336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2337 {
2338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2339 "WDI API call before module is initialized - Fail request");
2340
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 }
2343
2344 /*------------------------------------------------------------------------
2345 Fill in Event data and post to the Main FSM
2346 ------------------------------------------------------------------------*/
2347 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 wdiEventData.pEventData = pwdiStartScanParams;
2349 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2350 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 wdiEventData.pUserData = pUserData;
2352
2353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2354
2355}/*WDI_StartScanReq*/
2356
2357
2358/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 wants to end scanning for a particular channel that it
2361 had set before by calling Scan Start on the WLAN Device.
2362 Upon the call of this API the WLAN DAL will pack and
2363 send a HAL End Scan request message to the lower RIVA
2364 sub-system if DAL is in state STARTED.
2365
2366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002368
2369 WDI_StartScanReq must have been called.
2370
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002372 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002373
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 wdiEndScanRspCb: callback for passing back the response
2375 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002376
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 callback
2379
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 @see WDI_StartScanReq
2381 @return Result of the function call
2382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002384WDI_EndScanReq
2385(
2386 WDI_EndScanReqParamsType* pwdiEndScanParams,
2387 WDI_EndScanRspCb wdiEndScanRspCb,
2388 void* pUserData
2389)
2390{
2391 WDI_EventInfoType wdiEventData;
2392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2393
2394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 ------------------------------------------------------------------------*/
2397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2398 {
2399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2400 "WDI API call before module is initialized - Fail request");
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 }
2404
2405 /*------------------------------------------------------------------------
2406 Fill in Event data and post to the Main FSM
2407 ------------------------------------------------------------------------*/
2408 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 wdiEventData.pEventData = pwdiEndScanParams;
2410 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2411 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 wdiEventData.pUserData = pUserData;
2413
2414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2415
2416}/*WDI_EndScanReq*/
2417
2418
2419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 completed the scan process on the WLAN Device. Upon the
2422 call of this API the WLAN DAL will pack and send a HAL
2423 Finish Scan Request request message to the lower RIVA
2424 sub-system if DAL is in state STARTED.
2425
2426 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002428
2429 WDI_InitScanReq must have been called.
2430
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002433
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 wdiFinishScanRspCb: callback for passing back the
2435 response of the finish scan operation received from the
2436 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002437
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 callback
2440
Jeff Johnson295189b2012-06-20 16:38:30 -07002441 @see WDI_InitScanReq
2442 @return Result of the function call
2443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002445WDI_FinishScanReq
2446(
2447 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2448 WDI_FinishScanRspCb wdiFinishScanRspCb,
2449 void* pUserData
2450)
2451{
2452 WDI_EventInfoType wdiEventData;
2453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2454
2455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 ------------------------------------------------------------------------*/
2458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2459 {
2460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2461 "WDI API call before module is initialized - Fail request");
2462
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 }
2465
2466 /*------------------------------------------------------------------------
2467 Fill in Event data and post to the Main FSM
2468 ------------------------------------------------------------------------*/
2469 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 wdiEventData.pEventData = pwdiFinishScanParams;
2471 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2472 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 wdiEventData.pUserData = pUserData;
2474
2475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2476
2477}/*WDI_FinishScanReq*/
2478
Jeff Johnsone7245742012-09-05 17:12:55 -07002479/*========================================================================
2480
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002482
Jeff Johnson295189b2012-06-20 16:38:30 -07002483==========================================================================*/
2484
2485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 to start an association procedure to a BSS. Upon the
2488 call of this API the WLAN DAL will pack and send a HAL
2489 Join request message to the lower RIVA sub-system if
2490 DAL is in state STARTED.
2491
2492 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002494
2495 WDI_Start must have been called.
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002499
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiJoinRspCb: callback for passing back the response of
2501 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002502
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 callback
2505
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 @see WDI_Start
2507 @return Result of the function call
2508*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002509WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002510WDI_JoinReq
2511(
2512 WDI_JoinReqParamsType* pwdiJoinParams,
2513 WDI_JoinRspCb wdiJoinRspCb,
2514 void* pUserData
2515)
2516{
2517 WDI_EventInfoType wdiEventData;
2518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2519
2520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 ------------------------------------------------------------------------*/
2523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2524 {
2525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2526 "WDI API call before module is initialized - Fail request");
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 }
2530
2531 /*------------------------------------------------------------------------
2532 Fill in Event data and post to the Main FSM
2533 ------------------------------------------------------------------------*/
2534 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 wdiEventData.pEventData = pwdiJoinParams;
2536 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2537 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 wdiEventData.pUserData = pUserData;
2539
2540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2541
2542}/*WDI_JoinReq*/
2543
2544/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 wishes to configure the newly acquired or in process of
2547 being acquired BSS to the HW . Upon the call of this API
2548 the WLAN DAL will pack and send a HAL Config BSS request
2549 message to the lower RIVA sub-system if DAL is in state
2550 STARTED.
2551
2552 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002554
2555 WDI_JoinReq must have been called.
2556
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002558 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002559
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 wdiConfigBSSRspCb: callback for passing back the
2561 response of the config BSS operation received from the
2562 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002563
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002565 callback
2566
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 @see WDI_JoinReq
2568 @return Result of the function call
2569*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002570WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002571WDI_ConfigBSSReq
2572(
2573 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2574 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2575 void* pUserData
2576)
2577{
2578 WDI_EventInfoType wdiEventData;
2579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2580
2581 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002582 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 ------------------------------------------------------------------------*/
2584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2585 {
2586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2587 "WDI API call before module is initialized - Fail request");
2588
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 }
2591
2592 /*------------------------------------------------------------------------
2593 Fill in Event data and post to the Main FSM
2594 ------------------------------------------------------------------------*/
2595 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 wdiEventData.pEventData = pwdiConfigBSSParams;
2597 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2598 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 wdiEventData.pUserData = pUserData;
2600
2601 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2602
2603}/*WDI_ConfigBSSReq*/
2604
2605/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 disassociating from the BSS and wishes to notify HW.
2608 Upon the call of this API the WLAN DAL will pack and
2609 send a HAL Del BSS request message to the lower RIVA
2610 sub-system if DAL is in state STARTED.
2611
2612 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002614
2615 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2616
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002619
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 wdiDelBSSRspCb: callback for passing back the response
2621 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002622
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002624 callback
2625
2626 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002627 @return Result of the function call
2628*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002629WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002630WDI_DelBSSReq
2631(
2632 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2633 WDI_DelBSSRspCb wdiDelBSSRspCb,
2634 void* pUserData
2635)
2636{
2637 WDI_EventInfoType wdiEventData;
2638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2639
2640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 ------------------------------------------------------------------------*/
2643 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2644 {
2645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2646 "WDI API call before module is initialized - Fail request");
2647
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 }
2650
2651 /*------------------------------------------------------------------------
2652 Fill in Event data and post to the Main FSM
2653 ------------------------------------------------------------------------*/
2654 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 wdiEventData.pEventData = pwdiDelBSSParams;
2656 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2657 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 wdiEventData.pUserData = pUserData;
2659
2660 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2661
2662}/*WDI_DelBSSReq*/
2663
2664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 associated to a BSS and wishes to configure HW for
2667 associated state. Upon the call of this API the WLAN DAL
2668 will pack and send a HAL Post Assoc request message to
2669 the lower RIVA sub-system if DAL is in state STARTED.
2670
2671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002673
2674 WDI_JoinReq must have been called.
2675
2676 @param wdiPostAssocReqParams: the assoc parameters as specified
2677 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002678
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 wdiPostAssocRspCb: callback for passing back the
2680 response of the post assoc operation received from the
2681 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002682
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 callback
2685
Jeff Johnson295189b2012-06-20 16:38:30 -07002686 @see WDI_JoinReq
2687 @return Result of the function call
2688*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002689WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002690WDI_PostAssocReq
2691(
2692 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2693 WDI_PostAssocRspCb wdiPostAssocRspCb,
2694 void* pUserData
2695)
2696{
2697 WDI_EventInfoType wdiEventData;
2698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2699
2700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 ------------------------------------------------------------------------*/
2703 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2704 {
2705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2706 "WDI API call before module is initialized - Fail request");
2707
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 }
2710
2711 /*------------------------------------------------------------------------
2712 Fill in Event data and post to the Main FSM
2713 ------------------------------------------------------------------------*/
2714 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 wdiEventData.pEventData = pwdiPostAssocReqParams;
2716 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2717 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 wdiEventData.pUserData = pUserData;
2719
2720 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2721
2722}/*WDI_PostAssocReq*/
2723
2724/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002725 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 association with another STA has ended and the station
2727 must be deleted from HW. Upon the call of this API the
2728 WLAN DAL will pack and send a HAL Del STA request
2729 message to the lower RIVA sub-system if DAL is in state
2730 STARTED.
2731
2732 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002734
2735 WDI_PostAssocReq must have been called.
2736
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002739
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 wdiDelSTARspCb: callback for passing back the response
2741 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002742
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002744 callback
2745
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 @see WDI_PostAssocReq
2747 @return Result of the function call
2748*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002749WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002750WDI_DelSTAReq
2751(
2752 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2753 WDI_DelSTARspCb wdiDelSTARspCb,
2754 void* pUserData
2755)
2756{
2757 WDI_EventInfoType wdiEventData;
2758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2759
2760 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002761 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 ------------------------------------------------------------------------*/
2763 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2764 {
2765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2766 "WDI API call before module is initialized - Fail request");
2767
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 }
2770
2771 /*------------------------------------------------------------------------
2772 Fill in Event data and post to the Main FSM
2773 ------------------------------------------------------------------------*/
2774 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 wdiEventData.pEventData = pwdiDelSTAParams;
2776 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2777 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 wdiEventData.pUserData = pUserData;
2779
2780 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2781
2782}/*WDI_DelSTAReq*/
2783
Jeff Johnsone7245742012-09-05 17:12:55 -07002784/*========================================================================
2785
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002787
Jeff Johnson295189b2012-06-20 16:38:30 -07002788==========================================================================*/
2789
2790/**
2791 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2792 install a BSS encryption key on the HW. Upon the call of this
2793 API the WLAN DAL will pack and send a Set BSS Key request
2794 message to the lower RIVA sub-system if DAL is in state
2795 STARTED.
2796
2797 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002799
2800 WDI_PostAssocReq must have been called.
2801
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002804
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 wdiSetBSSKeyRspCb: callback for passing back the
2806 response of the set BSS Key operation received from the
2807 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002808
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002810 callback
2811
Jeff Johnson295189b2012-06-20 16:38:30 -07002812 @see WDI_PostAssocReq
2813 @return Result of the function call
2814*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002815WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002816WDI_SetBSSKeyReq
2817(
2818 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2819 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2820 void* pUserData
2821)
2822{
2823 WDI_EventInfoType wdiEventData;
2824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2825
2826 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002827 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 ------------------------------------------------------------------------*/
2829 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2830 {
2831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2832 "WDI API call before module is initialized - Fail request");
2833
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 }
2836
2837 /*------------------------------------------------------------------------
2838 Fill in Event data and post to the Main FSM
2839 ------------------------------------------------------------------------*/
2840 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2842 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2843 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 wdiEventData.pUserData = pUserData;
2845
2846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2847
2848}/*WDI_SetBSSKeyReq*/
2849
2850/**
2851 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2852 uninstall a BSS key from HW. Upon the call of this API the
2853 WLAN DAL will pack and send a HAL Remove BSS Key request
2854 message to the lower RIVA sub-system if DAL is in state
2855 STARTED.
2856
2857 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002859
2860 WDI_SetBSSKeyReq must have been called.
2861
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 wdiRemoveBSSKeyRspCb: callback for passing back the
2866 response of the remove BSS key operation received from
2867 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002868
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 callback
2871
Jeff Johnson295189b2012-06-20 16:38:30 -07002872 @see WDI_SetBSSKeyReq
2873 @return Result of the function call
2874*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002875WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002876WDI_RemoveBSSKeyReq
2877(
2878 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2879 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2880 void* pUserData
2881)
2882{
2883 WDI_EventInfoType wdiEventData;
2884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2885
2886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 ------------------------------------------------------------------------*/
2889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2890 {
2891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2892 "WDI API call before module is initialized - Fail request");
2893
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 }
2896
2897 /*------------------------------------------------------------------------
2898 Fill in Event data and post to the Main FSM
2899 ------------------------------------------------------------------------*/
2900 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2902 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2903 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 wdiEventData.pUserData = pUserData;
2905
2906 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2907
2908}/*WDI_RemoveBSSKeyReq*/
2909
2910
2911/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 ready to install a STA(ast) encryption key in HW. Upon
2914 the call of this API the WLAN DAL will pack and send a
2915 HAL Set STA Key request message to the lower RIVA
2916 sub-system if DAL is in state STARTED.
2917
2918 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002920
2921 WDI_PostAssocReq must have been called.
2922
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002924 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002925
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 wdiSetSTAKeyRspCb: callback for passing back the
2927 response of the set STA key operation received from the
2928 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002929
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 callback
2932
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 @see WDI_PostAssocReq
2934 @return Result of the function call
2935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002937WDI_SetSTAKeyReq
2938(
2939 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2940 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2941 void* pUserData
2942)
2943{
2944 WDI_EventInfoType wdiEventData;
2945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2946
2947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 ------------------------------------------------------------------------*/
2950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2951 {
2952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2953 "WDI API call before module is initialized - Fail request");
2954
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 }
2957
2958 /*------------------------------------------------------------------------
2959 Fill in Event data and post to the Main FSM
2960 ------------------------------------------------------------------------*/
2961 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2963 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2964 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 wdiEventData.pUserData = pUserData;
2966
2967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2968
2969}/*WDI_SetSTAKeyReq*/
2970
2971
2972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 wants to uninstall a previously set STA key in HW. Upon
2975 the call of this API the WLAN DAL will pack and send a
2976 HAL Remove STA Key request message to the lower RIVA
2977 sub-system if DAL is in state STARTED.
2978
2979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002981
2982 WDI_SetSTAKeyReq must have been called.
2983
Jeff Johnsone7245742012-09-05 17:12:55 -07002984 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002986
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 wdiRemoveSTAKeyRspCb: callback for passing back the
2988 response of the remove STA key operation received from
2989 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002990
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 callback
2993
Jeff Johnson295189b2012-06-20 16:38:30 -07002994 @see WDI_SetSTAKeyReq
2995 @return Result of the function call
2996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002998WDI_RemoveSTAKeyReq
2999(
3000 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3001 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3002 void* pUserData
3003)
3004{
3005 WDI_EventInfoType wdiEventData;
3006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3007
3008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 ------------------------------------------------------------------------*/
3011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3012 {
3013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3014 "WDI API call before module is initialized - Fail request");
3015
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 }
3018
3019 /*------------------------------------------------------------------------
3020 Fill in Event data and post to the Main FSM
3021 ------------------------------------------------------------------------*/
3022 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3024 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3025 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 wdiEventData.pUserData = pUserData;
3027
3028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3029
3030}/*WDI_RemoveSTAKeyReq*/
3031
3032
3033/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003035 wants to install a STA Bcast encryption key on the HW.
3036 Upon the call of this API the WLAN DAL will pack and
3037 send a HAL Start request message to the lower RIVA
3038 sub-system if DAL is in state STARTED.
3039
3040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003042
3043 WDI_PostAssocReq must have been called.
3044
Jeff Johnsone7245742012-09-05 17:12:55 -07003045 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 wdiSetSTABcastKeyRspCb: callback for passing back the
3049 response of the set BSS Key operation received from the
3050 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003051
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 callback
3054
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 @see WDI_PostAssocReq
3056 @return Result of the function call
3057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003059WDI_SetSTABcastKeyReq
3060(
3061 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3062 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3063 void* pUserData
3064)
3065
3066{
3067 WDI_EventInfoType wdiEventData;
3068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3069
3070 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 ------------------------------------------------------------------------*/
3073 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3074 {
3075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3076 "WDI API call before module is initialized - Fail request");
3077
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 }
3080
3081 /*------------------------------------------------------------------------
3082 Fill in Event data and post to the Main FSM
3083 ------------------------------------------------------------------------*/
3084 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3086 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3087 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 wdiEventData.pUserData = pUserData;
3089
3090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3091
3092}/*WDI_SetSTABcastKeyReq*/
3093
3094/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003095 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 MAC wants to uninstall a STA Bcast key from HW. Upon the
3097 call of this API the WLAN DAL will pack and send a HAL
3098 Remove STA Bcast Key request message to the lower RIVA
3099 sub-system if DAL is in state STARTED.
3100
3101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003103
3104 WDI_SetSTABcastKeyReq must have been called.
3105
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 parameters as specified by the Device
3108 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3111 response of the remove STA Bcast key operation received
3112 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003113
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 callback
3116
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 @see WDI_SetSTABcastKeyReq
3118 @return Result of the function call
3119*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003120WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003121WDI_RemoveSTABcastKeyReq
3122(
3123 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3124 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3125 void* pUserData
3126)
3127{
3128 WDI_EventInfoType wdiEventData;
3129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3130
3131 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 ------------------------------------------------------------------------*/
3134 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3135 {
3136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3137 "WDI API call before module is initialized - Fail request");
3138
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003140 }
3141
3142 /*------------------------------------------------------------------------
3143 Fill in Event data and post to the Main FSM
3144 ------------------------------------------------------------------------*/
3145 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3147 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3148 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 wdiEventData.pUserData = pUserData;
3150
3151 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3152
3153}/*WDI_RemoveSTABcastKeyReq*/
3154
3155/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 MAC wants to set Max Tx Power to HW. Upon the
3158 call of this API the WLAN DAL will pack and send a HAL
3159 Remove STA Bcast Key request message to the lower RIVA
3160 sub-system if DAL is in state STARTED.
3161
3162 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003164
3165 WDI_SetSTABcastKeyReq must have been called.
3166
Jeff Johnsone7245742012-09-05 17:12:55 -07003167 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 parameters as specified by the Device
3169 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3172 response of the remove STA Bcast key operation received
3173 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003174
Jeff Johnson295189b2012-06-20 16:38:30 -07003175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 callback
3177
Jeff Johnson295189b2012-06-20 16:38:30 -07003178 @see WDI_SetMaxTxPowerReq
3179 @return Result of the function call
3180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003182WDI_SetMaxTxPowerReq
3183(
3184 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3185 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3186 void* pUserData
3187)
3188{
3189 WDI_EventInfoType wdiEventData;
3190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3191
3192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 ------------------------------------------------------------------------*/
3195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3196 {
3197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3198 "WDI API call before module is initialized - Fail request");
3199
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003201 }
3202
3203 /*------------------------------------------------------------------------
3204 Fill in Event data and post to the Main FSM
3205 ------------------------------------------------------------------------*/
3206 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3208 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3209 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 wdiEventData.pUserData = pUserData;
3211
3212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3213}
3214
schang86c22c42013-03-13 18:41:24 -07003215/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003216 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3217 MAC wants to set Max Tx Power to HW for specific band.
3218
3219 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3220
3221 wdiReqStatusCb: callback for passing back the
3222 response msg from the device
3223
3224 pUserData: user data will be passed back with the
3225 callback
3226
3227 @see WDI_SetMaxTxPowerPerBandReq
3228 @return Result of the function call
3229*/
3230WDI_Status
3231WDI_SetMaxTxPowerPerBandReq
3232(
3233 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3234 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3235 void* pUserData
3236)
3237{
3238 WDI_EventInfoType wdiEventData;
3239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3240
3241 /*------------------------------------------------------------------------
3242 Sanity Check
3243 ------------------------------------------------------------------------*/
3244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3245 {
3246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3247 "WDI API call before module is initialized - Fail request");
3248
3249 return WDI_STATUS_E_NOT_ALLOWED;
3250 }
3251
3252 /*------------------------------------------------------------------------
3253 Fill in Event data and post to the Main FSM
3254 ------------------------------------------------------------------------*/
3255 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3256 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3257 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3258 wdiEventData.pCBfnc = wdiReqStatusCb;
3259 wdiEventData.pUserData = pUserData;
3260
3261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3262}
3263
3264/**
schang86c22c42013-03-13 18:41:24 -07003265 @brief WDI_SetTxPowerReq will be called when the upper
3266 MAC wants to set Tx Power to HW.
3267 In state BUSY this request will be queued. Request won't
3268 be allowed in any other state.
3269
3270
3271 @param pwdiSetTxPowerParams: set TS Power parameters
3272 BSSID and target TX Power with dbm included
3273
3274 wdiReqStatusCb: callback for passing back the response
3275
3276 pUserData: user data will be passed back with the
3277 callback
3278
3279 @return Result of the function call
3280*/
3281WDI_Status
3282WDI_SetTxPowerReq
3283(
3284 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3285 WDA_SetTxPowerRspCb wdiReqStatusCb,
3286 void* pUserData
3287)
3288{
3289 WDI_EventInfoType wdiEventData;
3290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3291
3292 /*------------------------------------------------------------------------
3293 Sanity Check
3294 ------------------------------------------------------------------------*/
3295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3296 {
3297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3298 "WDI API call before module is initialized - Fail request");
3299
3300 return WDI_STATUS_E_NOT_ALLOWED;
3301 }
3302
3303 /*------------------------------------------------------------------------
3304 Fill in Event data and post to the Main FSM
3305 ------------------------------------------------------------------------*/
3306 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3307 wdiEventData.pEventData = pwdiSetTxPowerParams;
3308 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3309 wdiEventData.pCBfnc = wdiReqStatusCb;
3310 wdiEventData.pUserData = pUserData;
3311
3312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3313}
3314
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003315#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003316WDI_Status
3317WDI_TSMStatsReq
3318(
3319 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3320 WDI_TsmRspCb wdiReqStatusCb,
3321 void* pUserData
3322)
3323{
3324 WDI_EventInfoType wdiEventData;
3325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 /*------------------------------------------------------------------------
3327 Sanity Check
3328 ------------------------------------------------------------------------*/
3329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3330 {
3331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3332 "WDI API call before module is initialized - Fail request");
3333
3334 return WDI_STATUS_E_NOT_ALLOWED;
3335 }
3336
3337 /*------------------------------------------------------------------------
3338 Fill in Event data and post to the Main FSM
3339 ------------------------------------------------------------------------*/
3340 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3341 wdiEventData.pEventData = pwdiTsmReqParams;
3342 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3343 wdiEventData.pCBfnc = wdiReqStatusCb;
3344 wdiEventData.pUserData = pUserData;
3345
3346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3347
3348}
3349#endif
3350
3351/*========================================================================
3352
3353 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003354
Jeff Johnson295189b2012-06-20 16:38:30 -07003355==========================================================================*/
3356
3357/**
3358 @brief WDI_AddTSReq will be called when the upper MAC to inform
3359 the device of a successful add TSpec negotiation. HW
3360 needs to receive the TSpec Info from the UMAC in order
3361 to configure properly the QoS data traffic. Upon the
3362 call of this API the WLAN DAL will pack and send a HAL
3363 Add TS request message to the lower RIVA sub-system if
3364 DAL is in state STARTED.
3365
3366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003368
3369 WDI_PostAssocReq must have been called.
3370
3371 @param wdiAddTsReqParams: the add TS parameters as specified by
3372 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003373
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 wdiAddTsRspCb: callback for passing back the response of
3375 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003376
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003378 callback
3379
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 @see WDI_PostAssocReq
3381 @return Result of the function call
3382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003384WDI_AddTSReq
3385(
3386 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3387 WDI_AddTsRspCb wdiAddTsRspCb,
3388 void* pUserData
3389)
3390{
3391 WDI_EventInfoType wdiEventData;
3392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3393
3394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 ------------------------------------------------------------------------*/
3397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3398 {
3399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3400 "WDI API call before module is initialized - Fail request");
3401
Jeff Johnsone7245742012-09-05 17:12:55 -07003402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 }
3404
3405 /*------------------------------------------------------------------------
3406 Fill in Event data and post to the Main FSM
3407 ------------------------------------------------------------------------*/
3408 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 wdiEventData.pEventData = pwdiAddTsReqParams;
3410 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3411 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 wdiEventData.pUserData = pUserData;
3413
3414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3415
3416}/*WDI_AddTSReq*/
3417
3418
3419
3420/**
3421 @brief WDI_DelTSReq will be called when the upper MAC has ended
3422 admission on a specific AC. This is to inform HW that
3423 QoS traffic parameters must be rest. Upon the call of
3424 this API the WLAN DAL will pack and send a HAL Del TS
3425 request message to the lower RIVA sub-system if DAL is
3426 in state STARTED.
3427
3428 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003430
3431 WDI_AddTSReq must have been called.
3432
3433 @param wdiDelTsReqParams: the del TS parameters as specified by
3434 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003435
Jeff Johnson295189b2012-06-20 16:38:30 -07003436 wdiDelTsRspCb: callback for passing back the response of
3437 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003438
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 callback
3441
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 @see WDI_AddTSReq
3443 @return Result of the function call
3444*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003445WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003446WDI_DelTSReq
3447(
3448 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3449 WDI_DelTsRspCb wdiDelTsRspCb,
3450 void* pUserData
3451)
3452{
3453 WDI_EventInfoType wdiEventData;
3454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3455
3456 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 ------------------------------------------------------------------------*/
3459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3460 {
3461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3462 "WDI API call before module is initialized - Fail request");
3463
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 }
3466
3467 /*------------------------------------------------------------------------
3468 Fill in Event data and post to the Main FSM
3469 ------------------------------------------------------------------------*/
3470 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 wdiEventData.pEventData = pwdiDelTsReqParams;
3472 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3473 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 wdiEventData.pUserData = pUserData;
3475
3476 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3477
3478}/*WDI_DelTSReq*/
3479
3480
3481
3482/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 wishes to update the EDCA parameters used by HW for QoS
3485 data traffic. Upon the call of this API the WLAN DAL
3486 will pack and send a HAL Update EDCA Params request
3487 message to the lower RIVA sub-system if DAL is in state
3488 STARTED.
3489
3490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003492
3493 WDI_PostAssocReq must have been called.
3494
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003497
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 wdiUpdateEDCAParamsRspCb: callback for passing back the
3499 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003500
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 callback
3503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 @see WDI_PostAssocReq
3505 @return Result of the function call
3506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003508WDI_UpdateEDCAParams
3509(
3510 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3511 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3512 void* pUserData
3513)
3514{
3515 WDI_EventInfoType wdiEventData;
3516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3517
3518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 ------------------------------------------------------------------------*/
3521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3522 {
3523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3524 "WDI API call before module is initialized - Fail request");
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 }
3528
3529 /*------------------------------------------------------------------------
3530 Fill in Event data and post to the Main FSM
3531 ------------------------------------------------------------------------*/
3532 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3534 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3535 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 wdiEventData.pUserData = pUserData;
3537
3538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3539
3540}/*WDI_UpdateEDCAParams*/
3541
3542
3543/**
3544 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3545 successfully a BA session and needs to notify the HW for
3546 the appropriate settings to take place. Upon the call of
3547 this API the WLAN DAL will pack and send a HAL Add BA
3548 request message to the lower RIVA sub-system if DAL is
3549 in state STARTED.
3550
3551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003553
3554 WDI_PostAssocReq must have been called.
3555
3556 @param wdiAddBAReqParams: the add BA parameters as specified by
3557 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003558
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 wdiAddBARspCb: callback for passing back the response of
3560 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003561
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003563 callback
3564
Jeff Johnson295189b2012-06-20 16:38:30 -07003565 @see WDI_PostAssocReq
3566 @return Result of the function call
3567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003569WDI_AddBASessionReq
3570(
3571 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3572 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3573 void* pUserData
3574)
3575{
3576 WDI_EventInfoType wdiEventData;
3577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3578
3579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 ------------------------------------------------------------------------*/
3582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3583 {
3584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3585 "WDI API call before module is initialized - Fail request");
3586
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 }
3589
3590 /*------------------------------------------------------------------------
3591 Fill in Event data and post to the Main FSM
3592 ------------------------------------------------------------------------*/
3593 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3595 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3596 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 wdiEventData.pUserData = pUserData;
3598
3599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3600
3601}/*WDI_AddBASessionReq*/
3602
3603/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 inform HW that it has deleted a previously created BA
3606 session. Upon the call of this API the WLAN DAL will
3607 pack and send a HAL Del BA request message to the lower
3608 RIVA sub-system if DAL is in state STARTED.
3609
3610 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003612
3613 WDI_AddBAReq must have been called.
3614
3615 @param wdiDelBAReqParams: the del BA parameters as specified by
3616 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003617
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 wdiDelBARspCb: callback for passing back the response of
3619 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003620
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 callback
3623
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 @see WDI_AddBAReq
3625 @return Result of the function call
3626*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003627WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003628WDI_DelBAReq
3629(
3630 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3631 WDI_DelBARspCb wdiDelBARspCb,
3632 void* pUserData
3633)
3634{
3635 WDI_EventInfoType wdiEventData;
3636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3637
3638 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003639 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 ------------------------------------------------------------------------*/
3641 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3642 {
3643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3644 "WDI API call before module is initialized - Fail request");
3645
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 }
3648
3649 /*------------------------------------------------------------------------
3650 Fill in Event data and post to the Main FSM
3651 ------------------------------------------------------------------------*/
3652 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 wdiEventData.pEventData = pwdiDelBAReqParams;
3654 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3655 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 wdiEventData.pUserData = pUserData;
3657
3658 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3659
3660}/*WDI_DelBAReq*/
3661
Jeff Johnsone7245742012-09-05 17:12:55 -07003662/*========================================================================
3663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666==========================================================================*/
3667
3668/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 wants to set the power save related configurations of
3671 the WLAN Device. Upon the call of this API the WLAN DAL
3672 will pack and send a HAL Update CFG request message to
3673 the lower RIVA sub-system if DAL is in state STARTED.
3674
3675 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003676 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003677
3678 WDI_Start must have been called.
3679
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003682
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 wdiSetPwrSaveCfgCb: callback for passing back the
3684 response of the set power save cfg operation received
3685 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003686
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 callback
3689
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 @return Result of the function call
3692*/
3693WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003694WDI_SetPwrSaveCfgReq
3695(
3696 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3697 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3698 void* pUserData
3699)
3700{
3701 WDI_EventInfoType wdiEventData;
3702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3703
3704 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 ------------------------------------------------------------------------*/
3707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3708 {
3709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3710 "WDI API call before module is initialized - Fail request");
3711
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 }
3714
3715 /*------------------------------------------------------------------------
3716 Fill in Event data and post to the Main FSM
3717 ------------------------------------------------------------------------*/
3718 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 wdiEventData.pEventData = pwdiPowerSaveCfg;
3720 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3721 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 wdiEventData.pUserData = pUserData;
3723
3724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3725
3726}/*WDI_SetPwrSaveCfgReq*/
3727
3728/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 request the device to get into IMPS power state. Upon
3731 the call of this API the WLAN DAL will send a HAL Enter
3732 IMPS request message to the lower RIVA sub-system if DAL
3733 is in state STARTED.
3734
3735 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003737
Jeff Johnsone7245742012-09-05 17:12:55 -07003738
3739 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 response of the Enter IMPS operation received from the
3741 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003742
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 callback
3745
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 @see WDI_Start
3747 @return Result of the function call
3748*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003749WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003750WDI_EnterImpsReq
3751(
Mihir Shetea4306052014-03-25 00:02:54 +05303752 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3754 void* pUserData
3755)
3756{
3757 WDI_EventInfoType wdiEventData;
3758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3759
3760 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 ------------------------------------------------------------------------*/
3763 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3764 {
3765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3766 "WDI API call before module is initialized - Fail request");
3767
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 }
3770
3771 /*------------------------------------------------------------------------
3772 Fill in Event data and post to the Main FSM
3773 ------------------------------------------------------------------------*/
3774 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303775 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3776 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003777 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 wdiEventData.pUserData = pUserData;
3779
3780 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3781
3782}/*WDI_EnterImpsReq*/
3783
3784/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003786 request the device to get out of IMPS power state. Upon
3787 the call of this API the WLAN DAL will send a HAL Exit
3788 IMPS request message to the lower RIVA sub-system if DAL
3789 is in state STARTED.
3790
3791 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003792 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003793
Jeff Johnson295189b2012-06-20 16:38:30 -07003794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795
3796 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003798
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 callback
3801
Jeff Johnson295189b2012-06-20 16:38:30 -07003802 @see WDI_Start
3803 @return Result of the function call
3804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003806WDI_ExitImpsReq
3807(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303808 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3810 void* pUserData
3811)
3812{
3813 WDI_EventInfoType wdiEventData;
3814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3815
3816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 ------------------------------------------------------------------------*/
3819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3820 {
3821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3822 "WDI API call before module is initialized - Fail request");
3823
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 }
3826
3827 /*------------------------------------------------------------------------
3828 Fill in Event data and post to the Main FSM
3829 ------------------------------------------------------------------------*/
3830 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303831 wdiEventData.pEventData = pwdiExitImpsReqParams;
3832 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 wdiEventData.pUserData = pUserData;
3835
3836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3837
3838}/*WDI_ExitImpsReq*/
3839
3840/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003841 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 request the device to get into BMPS power state. Upon
3843 the call of this API the WLAN DAL will pack and send a
3844 HAL Enter BMPS request message to the lower RIVA
3845 sub-system if DAL is in state STARTED.
3846
3847 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003849
3850 WDI_PostAssocReq must have been called.
3851
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003854
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 wdiEnterBmpsRspCb: callback for passing back the
3856 response of the Enter BMPS operation received from the
3857 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003858
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 callback
3861
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 @see WDI_PostAssocReq
3863 @return Result of the function call
3864*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003865WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003866WDI_EnterBmpsReq
3867(
3868 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3869 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3870 void* pUserData
3871)
3872{
3873 WDI_EventInfoType wdiEventData;
3874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3875
3876 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 ------------------------------------------------------------------------*/
3879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3880 {
3881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3882 "WDI API call before module is initialized - Fail request");
3883
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 }
3886
3887 /*------------------------------------------------------------------------
3888 Fill in Event data and post to the Main FSM
3889 ------------------------------------------------------------------------*/
3890 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3892 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3893 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 wdiEventData.pUserData = pUserData;
3895
3896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3897
3898}/*WDI_EnterBmpsReq*/
3899
3900/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003901 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 request the device to get out of BMPS power state. Upon
3903 the call of this API the WLAN DAL will pack and send a
3904 HAL Exit BMPS request message to the lower RIVA
3905 sub-system if DAL is in state STARTED.
3906
3907 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003909
3910 WDI_PostAssocReq must have been called.
3911
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003914
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 wdiExitBmpsRspCb: callback for passing back the response
3916 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003917
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 callback
3920
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 @see WDI_PostAssocReq
3922 @return Result of the function call
3923*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003924WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003925WDI_ExitBmpsReq
3926(
3927 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3928 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3929 void* pUserData
3930)
3931{
3932 WDI_EventInfoType wdiEventData;
3933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3934
3935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 ------------------------------------------------------------------------*/
3938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3939 {
3940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3941 "WDI API call before module is initialized - Fail request");
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 }
3945
3946 /*------------------------------------------------------------------------
3947 Fill in Event data and post to the Main FSM
3948 ------------------------------------------------------------------------*/
3949 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3951 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3952 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 wdiEventData.pUserData = pUserData;
3954
3955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3956
3957}/*WDI_ExitBmpsReq*/
3958
3959/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 request the device to get into UAPSD power state. Upon
3962 the call of this API the WLAN DAL will pack and send a
3963 HAL Enter UAPSD request message to the lower RIVA
3964 sub-system if DAL is in state STARTED.
3965
3966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003968
3969 WDI_PostAssocReq must have been called.
3970 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003971
3972 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003974
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 wdiEnterUapsdRspCb: callback for passing back the
3976 response of the Enter UAPSD operation received from the
3977 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003978
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 callback
3981
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3983 @return Result of the function call
3984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003986WDI_EnterUapsdReq
3987(
3988 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3989 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3990 void* pUserData
3991)
3992{
3993 WDI_EventInfoType wdiEventData;
3994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3995
3996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 ------------------------------------------------------------------------*/
3999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4000 {
4001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4002 "WDI API call before module is initialized - Fail request");
4003
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 }
4006
4007 /*------------------------------------------------------------------------
4008 Fill in Event data and post to the Main FSM
4009 ------------------------------------------------------------------------*/
4010 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4012 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4013 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 wdiEventData.pUserData = pUserData;
4015
4016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4017
4018}/*WDI_EnterUapsdReq*/
4019
4020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004021 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004022 request the device to get out of UAPSD power state. Upon
4023 the call of this API the WLAN DAL will send a HAL Exit
4024 UAPSD request message to the lower RIVA sub-system if
4025 DAL is in state STARTED.
4026
4027 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004029
4030 WDI_PostAssocReq must have been called.
4031
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 response of the Exit UAPSD operation received from the
4034 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004035
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 callback
4038
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 @see WDI_PostAssocReq
4040 @return Result of the function call
4041*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004042WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004043WDI_ExitUapsdReq
4044(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004045 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4047 void* pUserData
4048)
4049{
4050 WDI_EventInfoType wdiEventData;
4051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4052
4053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 ------------------------------------------------------------------------*/
4056 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4057 {
4058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4059 "WDI API call before module is initialized - Fail request");
4060
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 }
4063
4064 /*------------------------------------------------------------------------
4065 Fill in Event data and post to the Main FSM
4066 ------------------------------------------------------------------------*/
4067 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004068 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4069 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 wdiEventData.pUserData = pUserData;
4072
4073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4074
4075}/*WDI_ExitUapsdReq*/
4076
4077/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 MAC wants to set the UAPSD related configurations
4080 of an associated STA (while acting as an AP) to the WLAN
4081 Device. Upon the call of this API the WLAN DAL will pack
4082 and send a HAL Update UAPSD params request message to
4083 the lower RIVA sub-system if DAL is in state STARTED.
4084
4085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004087
4088 WDI_ConfigBSSReq must have been called.
4089
Jeff Johnsone7245742012-09-05 17:12:55 -07004090 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004092
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 wdiUpdateUapsdParamsCb: callback for passing back the
4094 response of the update UAPSD params operation received
4095 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004096
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004098 callback
4099
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 @see WDI_ConfigBSSReq
4101 @return Result of the function call
4102*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004103WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004104WDI_UpdateUapsdParamsReq
4105(
4106 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4107 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4108 void* pUserData
4109)
4110{
4111 WDI_EventInfoType wdiEventData;
4112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4113
4114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004115 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 ------------------------------------------------------------------------*/
4117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4118 {
4119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4120 "WDI API call before module is initialized - Fail request");
4121
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 }
4124
4125 /*------------------------------------------------------------------------
4126 Fill in Event data and post to the Main FSM
4127 ------------------------------------------------------------------------*/
4128 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004130 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 wdiEventData.pUserData = pUserData;
4133
4134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4135
4136}/*WDI_UpdateUapsdParamsReq*/
4137
4138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 MAC wants to set the UAPSD related configurations before
4141 requesting for enter UAPSD power state to the WLAN
4142 Device. Upon the call of this API the WLAN DAL will pack
4143 and send a HAL Set UAPSD params request message to
4144 the lower RIVA sub-system if DAL is in state STARTED.
4145
4146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004148
4149 WDI_PostAssocReq must have been called.
4150
4151 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4152 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004153
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 wdiSetUapsdAcParamsCb: callback for passing back the
4155 response of the set UAPSD params operation received from
4156 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004157
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 callback
4160
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 @see WDI_PostAssocReq
4162 @return Result of the function call
4163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004165WDI_SetUapsdAcParamsReq
4166(
4167 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4168 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4169 void* pUserData
4170)
4171{
4172 WDI_EventInfoType wdiEventData;
4173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4174
4175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 ------------------------------------------------------------------------*/
4178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4179 {
4180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4181 "WDI API call before module is initialized - Fail request");
4182
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 }
4185
4186 /*------------------------------------------------------------------------
4187 Fill in Event data and post to the Main FSM
4188 ------------------------------------------------------------------------*/
4189 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 wdiEventData.pEventData = pwdiUapsdInfo;
4191 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4192 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiEventData.pUserData = pUserData;
4194
4195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4196
4197}/*WDI_SetUapsdAcParamsReq*/
4198
4199/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304200 @brief WDI_GetFrameLogReq will be called when the upper
4201 MAC wants to initialize frame logging. Upon the call of
4202 this API the WLAN DAL will pack and send a HAL
4203 Frame logging init request message to
4204 the lower RIVA sub-system.
4205
4206 In state BUSY this request will be queued. Request won't
4207 be allowed in any other state.
4208
4209
4210 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4211 as specified by the Device Interface
4212
4213 wdiGetFrameLogRspCb: callback for passing back the
4214 response of the frame logging init operation received
4215 from the device
4216
4217 pUserData: user data will be passed back with the
4218 callback
4219
4220 @return Result of the function call
4221*/
4222WDI_Status
4223WDI_GetFrameLogReq
4224(
4225 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4226 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4227 void* pUserData
4228)
4229{
4230 WDI_EventInfoType wdiEventData;
4231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4232
4233 /*------------------------------------------------------------------------
4234 Sanity Check
4235 ------------------------------------------------------------------------*/
4236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4237 {
4238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4239 "WDI API call before module is initialized - Fail request");
4240
4241 return WDI_STATUS_E_NOT_ALLOWED;
4242 }
4243
4244 /*------------------------------------------------------------------------
4245 Fill in Event data and post to the Main FSM
4246 ------------------------------------------------------------------------*/
4247 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4248 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4249 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4250 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4251 wdiEventData.pUserData = pUserData;
4252
4253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4254}
4255/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304256 @brief WDI_MgmtLoggingInitReq will be called when the upper
4257 MAC wants to initialize frame logging. Upon the call of
4258 this API the WLAN DAL will pack and send a HAL
4259 Frame logging init request message to
4260 the lower RIVA sub-system.
4261
4262 In state BUSY this request will be queued. Request won't
4263 be allowed in any other state.
4264
4265
4266 @param pwdiMgmtLoggingInitReqParams: the Frame Logging params
4267 as specified by the Device Interface
4268
4269 wdiMgmtLoggingInitReqCb: callback for passing back the
4270 response of the frame logging init operation received
4271 from the device
4272
4273 pUserData: user data will be passed back with the
4274 callback
4275
4276 @return Result of the function call
4277*/
4278WDI_Status
4279WDI_MgmtLoggingInitReq
4280(
4281 WDI_MgmtLoggingInitReqInfoType *pwdiMgmtLoggingInitReqInfo,
4282 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb,
4283 void* pUserData
4284)
4285{
4286 WDI_EventInfoType wdiEventData;
4287
4288 /*------------------------------------------------------------------------
4289 Sanity Check
4290 ------------------------------------------------------------------------*/
4291 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4292 {
4293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4294 "WDI API call before module is initialized - Fail request");
4295
4296 return WDI_STATUS_E_NOT_ALLOWED;
4297 }
4298
4299 /*------------------------------------------------------------------------
4300 Fill in Event data and post to the Main FSM
4301 ------------------------------------------------------------------------*/
4302 wdiEventData.wdiRequest = WDI_MGMT_LOGGING_INIT_REQ;
4303 wdiEventData.pEventData = pwdiMgmtLoggingInitReqInfo;
4304 wdiEventData.uEventDataSize = sizeof(*pwdiMgmtLoggingInitReqInfo);
4305 wdiEventData.pCBfnc = wdiMgmtLoggingInitRspCb;
4306 wdiEventData.pUserData = pUserData;
4307
4308 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4309}
4310
4311/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 MAC wants to set/reset the RXP filters for received pkts
4314 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4315 and send a HAL configure RXP filter request message to
4316 the lower RIVA sub-system.
4317
4318 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004320
Jeff Johnsone7245742012-09-05 17:12:55 -07004321
4322 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 filter as specified by the Device
4324 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004325
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 wdiConfigureRxpFilterCb: callback for passing back the
4327 response of the configure RXP filter operation received
4328 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004329
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004331 callback
4332
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 @return Result of the function call
4334*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004335WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004336WDI_ConfigureRxpFilterReq
4337(
4338 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4339 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4340 void* pUserData
4341)
4342{
4343 WDI_EventInfoType wdiEventData;
4344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4345
4346 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004347 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004348 ------------------------------------------------------------------------*/
4349 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4350 {
4351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4352 "WDI API call before module is initialized - Fail request");
4353
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 }
4356
4357 /*------------------------------------------------------------------------
4358 Fill in Event data and post to the Main FSM
4359 ------------------------------------------------------------------------*/
4360 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004361 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4362 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4363 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 wdiEventData.pUserData = pUserData;
4365
4366 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4367}/*WDI_ConfigureRxpFilterReq*/
4368
4369/**
4370 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4371 wants to set the beacon filters while in power save.
4372 Upon the call of this API the WLAN DAL will pack and
4373 send a Beacon filter request message to the
4374 lower RIVA sub-system.
4375
4376 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004377 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004378
Jeff Johnsone7245742012-09-05 17:12:55 -07004379
4380 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 filter as specified by the Device
4382 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004383
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 wdiBeaconFilterCb: callback for passing back the
4385 response of the set beacon filter operation received
4386 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004387
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004389 callback
4390
Jeff Johnson295189b2012-06-20 16:38:30 -07004391 @return Result of the function call
4392*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004393WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004394WDI_SetBeaconFilterReq
4395(
4396 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4397 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4398 void* pUserData
4399)
4400{
4401 WDI_EventInfoType wdiEventData;
4402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4403
4404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 ------------------------------------------------------------------------*/
4407 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4408 {
4409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4410 "WDI API call before module is initialized - Fail request");
4411
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004413 }
4414
4415 /*------------------------------------------------------------------------
4416 Fill in Event data and post to the Main FSM
4417 ------------------------------------------------------------------------*/
4418 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004420 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004422 wdiEventData.pUserData = pUserData;
4423
4424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4425}/*WDI_SetBeaconFilterReq*/
4426
4427/**
4428 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4429 wants to remove the beacon filter for particular IE
4430 while in power save. Upon the call of this API the WLAN
4431 DAL will pack and send a remove Beacon filter request
4432 message to the lower RIVA sub-system.
4433
4434 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004436
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
4438 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 filter as specified by the Device
4440 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004441
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 wdiBeaconFilterCb: callback for passing back the
4443 response of the remove beacon filter operation received
4444 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004445
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 callback
4448
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 @return Result of the function call
4450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004452WDI_RemBeaconFilterReq
4453(
4454 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4455 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4456 void* pUserData
4457)
4458{
4459 WDI_EventInfoType wdiEventData;
4460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4461
4462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 ------------------------------------------------------------------------*/
4465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4466 {
4467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4468 "WDI API call before module is initialized - Fail request");
4469
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 }
4472
4473 /*------------------------------------------------------------------------
4474 Fill in Event data and post to the Main FSM
4475 ------------------------------------------------------------------------*/
4476 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004478 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wdiEventData.pUserData = pUserData;
4481
4482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4483}/*WDI_RemBeaconFilterReq*/
4484
4485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 MAC wants to set the RSSI thresholds related
4488 configurations while in power save. Upon the call of
4489 this API the WLAN DAL will pack and send a HAL Set RSSI
4490 thresholds request message to the lower RIVA
4491 sub-system if DAL is in state STARTED.
4492
4493 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004495
4496 WDI_PostAssocReq must have been called.
4497
4498 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4499 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004500
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 wdiSetUapsdAcParamsCb: callback for passing back the
4502 response of the set UAPSD params operation received from
4503 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004504
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004506 callback
4507
Jeff Johnson295189b2012-06-20 16:38:30 -07004508 @see WDI_PostAssocReq
4509 @return Result of the function call
4510*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004511WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004512WDI_SetRSSIThresholdsReq
4513(
4514 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4515 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4516 void* pUserData
4517)
4518{
4519 WDI_EventInfoType wdiEventData;
4520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4521
4522 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 ------------------------------------------------------------------------*/
4525 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4526 {
4527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4528 "WDI API call before module is initialized - Fail request");
4529
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 }
4532
4533 /*------------------------------------------------------------------------
4534 Fill in Event data and post to the Main FSM
4535 ------------------------------------------------------------------------*/
4536 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004538 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wdiEventData.pUserData = pUserData;
4541
4542 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4543}/* WDI_SetRSSIThresholdsReq*/
4544
4545/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 wants to set the filter to minimize unnecessary host
4548 wakeup due to broadcast traffic while in power save.
4549 Upon the call of this API the WLAN DAL will pack and
4550 send a HAL host offload request message to the
4551 lower RIVA sub-system if DAL is in state STARTED.
4552
4553 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004555
4556 WDI_PostAssocReq must have been called.
4557
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004560
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 wdiHostOffloadCb: callback for passing back the response
4562 of the host offload operation received from the
4563 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004564
Jeff Johnson295189b2012-06-20 16:38:30 -07004565 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 callback
4567
Jeff Johnson295189b2012-06-20 16:38:30 -07004568 @see WDI_PostAssocReq
4569 @return Result of the function call
4570*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004572WDI_HostOffloadReq
4573(
4574 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4575 WDI_HostOffloadCb wdiHostOffloadCb,
4576 void* pUserData
4577)
4578{
4579 WDI_EventInfoType wdiEventData;
4580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4581
4582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004583 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004584 ------------------------------------------------------------------------*/
4585 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4586 {
4587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4588 "WDI API call before module is initialized - Fail request");
4589
Jeff Johnsone7245742012-09-05 17:12:55 -07004590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 }
4592
4593 /*------------------------------------------------------------------------
4594 Fill in Event data and post to the Main FSM
4595 ------------------------------------------------------------------------*/
4596 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004598 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004599 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 wdiEventData.pUserData = pUserData;
4601
4602 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4603}/*WDI_HostOffloadReq*/
4604
4605/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004606 @brief WDI_KeepAliveReq will be called when the upper MAC
4607 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 and minimize unnecessary host wakeups due to while in power save.
4609 Upon the call of this API the WLAN DAL will pack and
4610 send a HAL Keep Alive request message to the
4611 lower RIVA sub-system if DAL is in state STARTED.
4612
4613 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004614 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004615
4616 WDI_PostAssocReq must have been called.
4617
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004620
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 wdiKeepAliveCb: callback for passing back the response
4622 of the Keep Alive operation received from the
4623 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004624
Jeff Johnson295189b2012-06-20 16:38:30 -07004625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 callback
4627
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 @see WDI_PostAssocReq
4629 @return Result of the function call
4630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004632WDI_KeepAliveReq
4633(
4634 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4635 WDI_KeepAliveCb wdiKeepAliveCb,
4636 void* pUserData
4637)
4638{
4639 WDI_EventInfoType wdiEventData;
4640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4641
4642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004644 ------------------------------------------------------------------------*/
4645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4646 {
4647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4648 "WDI_KeepAliveReq: WDI API call before module "
4649 "is initialized - Fail request");
4650
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 }
4653
4654 /*------------------------------------------------------------------------
4655 Fill in Event data and post to the Main FSM
4656 ------------------------------------------------------------------------*/
4657 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004658 wdiEventData.pEventData = pwdiKeepAliveParams;
4659 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4660 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 wdiEventData.pUserData = pUserData;
4662
4663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4664}/*WDI_KeepAliveReq*/
4665
4666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 wants to set the Wowl Bcast ptrn to minimize unnecessary
4669 host wakeup due to broadcast traffic while in power
4670 save. Upon the call of this API the WLAN DAL will pack
4671 and send a HAL Wowl Bcast ptrn request message to the
4672 lower RIVA sub-system if DAL is in state STARTED.
4673
4674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004676
4677 WDI_PostAssocReq must have been called.
4678
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004681
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 wdiWowlAddBcPtrnCb: callback for passing back the
4683 response of the add Wowl bcast ptrn operation received
4684 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004685
Jeff Johnson295189b2012-06-20 16:38:30 -07004686 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 callback
4688
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 @see WDI_PostAssocReq
4690 @return Result of the function call
4691*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004692WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004693WDI_WowlAddBcPtrnReq
4694(
4695 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4696 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4697 void* pUserData
4698)
4699{
4700 WDI_EventInfoType wdiEventData;
4701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4702
4703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 ------------------------------------------------------------------------*/
4706 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4707 {
4708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4709 "WDI API call before module is initialized - Fail request");
4710
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004712 }
4713
4714 /*------------------------------------------------------------------------
4715 Fill in Event data and post to the Main FSM
4716 ------------------------------------------------------------------------*/
4717 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004719 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 wdiEventData.pUserData = pUserData;
4722
4723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4724}/*WDI_WowlAddBcPtrnReq*/
4725
4726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 wants to clear the Wowl Bcast ptrn. Upon the call of
4729 this API the WLAN DAL will pack and send a HAL delete
4730 Wowl Bcast ptrn request message to the lower RIVA
4731 sub-system if DAL is in state STARTED.
4732
4733 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004734 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004735
4736 WDI_WowlAddBcPtrnReq must have been called.
4737
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004740
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wdiWowlDelBcPtrnCb: callback for passing back the
4742 response of the del Wowl bcast ptrn operation received
4743 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004744
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 callback
4747
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 @see WDI_WowlAddBcPtrnReq
4749 @return Result of the function call
4750*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004751WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004752WDI_WowlDelBcPtrnReq
4753(
4754 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4755 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4756 void* pUserData
4757)
4758{
4759 WDI_EventInfoType wdiEventData;
4760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4761
4762 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 ------------------------------------------------------------------------*/
4765 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4766 {
4767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4768 "WDI API call before module is initialized - Fail request");
4769
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004771 }
4772
4773 /*------------------------------------------------------------------------
4774 Fill in Event data and post to the Main FSM
4775 ------------------------------------------------------------------------*/
4776 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004778 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004780 wdiEventData.pUserData = pUserData;
4781
4782 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4783}/*WDI_WowlDelBcPtrnReq*/
4784
4785/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 wants to enter the Wowl state to minimize unnecessary
4788 host wakeup while in power save. Upon the call of this
4789 API the WLAN DAL will pack and send a HAL Wowl enter
4790 request message to the lower RIVA sub-system if DAL is
4791 in state STARTED.
4792
4793 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004794 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004795
4796 WDI_PostAssocReq must have been called.
4797
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wdiWowlEnterReqCb: callback for passing back the
4802 response of the enter Wowl operation received from the
4803 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004804
Jeff Johnson295189b2012-06-20 16:38:30 -07004805 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 callback
4807
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 @see WDI_PostAssocReq
4809 @return Result of the function call
4810*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004811WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004812WDI_WowlEnterReq
4813(
4814 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4815 WDI_WowlEnterReqCb wdiWowlEnterCb,
4816 void* pUserData
4817)
4818{
4819 WDI_EventInfoType wdiEventData;
4820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4821
4822 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 ------------------------------------------------------------------------*/
4825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4826 {
4827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4828 "WDI API call before module is initialized - Fail request");
4829
Jeff Johnsone7245742012-09-05 17:12:55 -07004830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 }
4832
4833 /*------------------------------------------------------------------------
4834 Fill in Event data and post to the Main FSM
4835 ------------------------------------------------------------------------*/
4836 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004837 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004838 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 wdiEventData.pUserData = pUserData;
4841
4842 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4843}/*WDI_WowlEnterReq*/
4844
4845/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 wants to exit the Wowl state. Upon the call of this API
4848 the WLAN DAL will pack and send a HAL Wowl exit request
4849 message to the lower RIVA sub-system if DAL is in state
4850 STARTED.
4851
4852 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004854
4855 WDI_WowlEnterReq must have been called.
4856
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wdiWowlExitReqCb: callback for passing back the response
4861 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 callback
4865
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 @see WDI_WowlEnterReq
4867 @return Result of the function call
4868*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004869WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004870WDI_WowlExitReq
4871(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004872 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004873 WDI_WowlExitReqCb wdiWowlExitCb,
4874 void* pUserData
4875)
4876{
4877 WDI_EventInfoType wdiEventData;
4878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4879
4880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 ------------------------------------------------------------------------*/
4883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4884 {
4885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4886 "WDI API call before module is initialized - Fail request");
4887
Jeff Johnsone7245742012-09-05 17:12:55 -07004888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 }
4890
4891 /*------------------------------------------------------------------------
4892 Fill in Event data and post to the Main FSM
4893 ------------------------------------------------------------------------*/
4894 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004895 wdiEventData.pEventData = pwdiWowlExitParams;
4896 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiEventData.pUserData = pUserData;
4899
4900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4901}/*WDI_WowlExitReq*/
4902
4903/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 the upper MAC wants to dynamically adjusts the listen
4906 interval based on the WLAN/MSM activity. Upon the call
4907 of this API the WLAN DAL will pack and send a HAL
4908 configure Apps Cpu Wakeup State request message to the
4909 lower RIVA sub-system.
4910
4911 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004913
Jeff Johnsone7245742012-09-05 17:12:55 -07004914
4915 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 Apps Cpu Wakeup State as specified by the
4917 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004918
Jeff Johnson295189b2012-06-20 16:38:30 -07004919 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4920 back the response of the configure Apps Cpu Wakeup State
4921 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004922
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004924 callback
4925
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 @return Result of the function call
4927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004929WDI_ConfigureAppsCpuWakeupStateReq
4930(
4931 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4932 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4933 void* pUserData
4934)
4935{
4936 WDI_EventInfoType wdiEventData;
4937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4938
4939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 ------------------------------------------------------------------------*/
4942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4943 {
4944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4945 "WDI API call before module is initialized - Fail request");
4946
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 }
4949
4950 /*------------------------------------------------------------------------
4951 Fill in Event data and post to the Main FSM
4952 ------------------------------------------------------------------------*/
4953 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4955 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4956 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 wdiEventData.pUserData = pUserData;
4958
4959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4960}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 to to perform a flush operation on a given AC. Upon the
4964 call of this API the WLAN DAL will pack and send a HAL
4965 Flush AC request message to the lower RIVA sub-system if
4966 DAL is in state STARTED.
4967
4968 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004970
4971 WDI_AddBAReq must have been called.
4972
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004975
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 wdiFlushAcRspCb: callback for passing back the response
4977 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004978
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 callback
4981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 @see WDI_AddBAReq
4983 @return Result of the function call
4984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004986WDI_FlushAcReq
4987(
4988 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4989 WDI_FlushAcRspCb wdiFlushAcRspCb,
4990 void* pUserData
4991)
4992{
4993 WDI_EventInfoType wdiEventData;
4994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4995
4996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 ------------------------------------------------------------------------*/
4999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5000 {
5001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5002 "WDI API call before module is initialized - Fail request");
5003
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 }
5006
5007 /*------------------------------------------------------------------------
5008 Fill in Event data and post to the Main FSM
5009 ------------------------------------------------------------------------*/
5010 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 wdiEventData.pEventData = pwdiFlushAcReqParams;
5012 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5013 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 wdiEventData.pUserData = pUserData;
5015
5016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5017
5018}/*WDI_FlushAcReq*/
5019
5020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 wants to notify the lower mac on a BT AMP event. This is
5023 to inform BTC-SLM that some BT AMP event occurred. Upon
5024 the call of this API the WLAN DAL will pack and send a
5025 HAL BT AMP event request message to the lower RIVA
5026 sub-system if DAL is in state STARTED.
5027
5028 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005029 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005030
Jeff Johnsone7245742012-09-05 17:12:55 -07005031
5032 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005033 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 wdiBtAmpEventRspCb: callback for passing back the
5036 response of the BT AMP event operation received from the
5037 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005040 callback
5041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 @return Result of the function call
5043*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005044WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005045WDI_BtAmpEventReq
5046(
5047 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5048 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5049 void* pUserData
5050)
5051{
5052 WDI_EventInfoType wdiEventData;
5053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5054
5055 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 ------------------------------------------------------------------------*/
5058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5059 {
5060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5061 "WDI API call before module is initialized - Fail request");
5062
Jeff Johnsone7245742012-09-05 17:12:55 -07005063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005064 }
5065
5066 /*------------------------------------------------------------------------
5067 Fill in Event data and post to the Main FSM
5068 ------------------------------------------------------------------------*/
5069 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5071 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5072 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 wdiEventData.pUserData = pUserData;
5074
5075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5076
5077}/*WDI_BtAmpEventReq*/
5078
Jeff Johnsone7245742012-09-05 17:12:55 -07005079#ifdef FEATURE_OEM_DATA_SUPPORT
5080/**
5081 @brief WDI_Start Oem Data Req will be called when the upper MAC
5082 wants to notify the lower mac on a oem data Req event.Upon
5083 the call of this API the WLAN DAL will pack and send a
5084 HAL OEM Data Req event request message to the lower RIVA
5085 sub-system if DAL is in state STARTED.
5086
5087 In state BUSY this request will be queued. Request won't
5088 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005089
5090
Jeff Johnsone7245742012-09-05 17:12:55 -07005091
5092 @param pwdiOemDataReqParams: the Oem Data Req as
5093 specified by the Device Interface
5094
5095 wdiStartOemDataRspCb: callback for passing back the
5096 response of the Oem Data Req received from the
5097 device
5098
5099 pUserData: user data will be passed back with the
5100 callback
5101
5102 @return Result of the function call
5103*/
5104WDI_Status
5105WDI_StartOemDataReq
5106(
5107 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5108 WDI_oemDataRspCb wdiOemDataRspCb,
5109 void* pUserData
5110)
5111{
5112 WDI_EventInfoType wdiEventData;
5113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5114
5115 /*------------------------------------------------------------------------
5116 Sanity Check
5117 ------------------------------------------------------------------------*/
5118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5119 {
5120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5121 "WDI API call before module is initialized - Fail request");
5122
5123 return WDI_STATUS_E_NOT_ALLOWED;
5124 }
5125
5126 /*------------------------------------------------------------------------
5127 Fill in Event data and post to the Main FSM
5128 ------------------------------------------------------------------------*/
5129 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5130 wdiEventData.pEventData = pwdiOemDataReqParams;
5131 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5132 wdiEventData.pCBfnc = wdiOemDataRspCb;
5133 wdiEventData.pUserData = pUserData;
5134
5135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5136
5137
5138}
5139
5140#endif
5141
5142
5143/*========================================================================
5144
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147==========================================================================*/
5148/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 the WLAN HW to change the current channel of operation.
5151 Upon the call of this API the WLAN DAL will pack and
5152 send a HAL Start request message to the lower RIVA
5153 sub-system if DAL is in state STARTED.
5154
5155 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005157
5158 WDI_Start must have been called.
5159
Jeff Johnsone7245742012-09-05 17:12:55 -07005160 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005162
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 wdiSwitchChRspCb: callback for passing back the response
5164 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005165
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005167 callback
5168
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 @see WDI_Start
5170 @return Result of the function call
5171*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005172WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005173WDI_SwitchChReq
5174(
5175 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5176 WDI_SwitchChRspCb wdiSwitchChRspCb,
5177 void* pUserData
5178)
5179{
5180 WDI_EventInfoType wdiEventData;
5181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5182
5183 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005184 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 ------------------------------------------------------------------------*/
5186 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5187 {
5188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5189 "WDI API call before module is initialized - Fail request");
5190
Jeff Johnsone7245742012-09-05 17:12:55 -07005191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 }
5193
5194 /*------------------------------------------------------------------------
5195 Fill in Event data and post to the Main FSM
5196 ------------------------------------------------------------------------*/
5197 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 wdiEventData.pEventData = pwdiSwitchChReqParams;
5199 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5200 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 wdiEventData.pUserData = pUserData;
5202
5203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5204
5205}/*WDI_SwitchChReq*/
5206
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005207/**
5208 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5209 the WLAN HW to change the current channel of operation.
5210 Upon the call of this API the WLAN DAL will pack and
5211 send a HAL Start request message to the lower RIVA
5212 sub-system if DAL is in state STARTED.
5213 This request message also includes source of channel switch,
5214 like CSA,
5215
5216 In state BUSY this request will be queued. Request won't
5217 be allowed in any other state.
5218
5219 WDI_Start must have been called.
5220
5221 @param wdiSwitchChReqParams: the switch ch parameters as
5222 specified by the Device Interface
5223
5224 wdiSwitchChRspCb: callback for passing back the response
5225 of the switch ch operation received from the device
5226
5227 pUserData: user data will be passed back with the
5228 callback
5229
5230 @see WDI_Start
5231 @return Result of the function call
5232*/
5233WDI_Status
5234WDI_SwitchChReq_V1
5235(
5236 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5237 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5238 void* pUserData
5239)
5240{
5241 WDI_EventInfoType wdiEventData;
5242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5244 "WDI API call WDI_SwitchChReq_V1");
5245 /*------------------------------------------------------------------------
5246 Sanity Check
5247 ------------------------------------------------------------------------*/
5248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5249 {
5250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5251 "WDI API call before module is initialized - Fail request");
5252
5253 return WDI_STATUS_E_NOT_ALLOWED;
5254 }
5255
5256 /*------------------------------------------------------------------------
5257 Fill in Event data and post to the Main FSM
5258 ------------------------------------------------------------------------*/
5259 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5260 wdiEventData.pEventData = pwdiSwitchChReqParams;
5261 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5262 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5263 wdiEventData.pUserData = pUserData;
5264
5265 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5266
5267}/*WDI_SwitchChReq_V1*/
5268
Jeff Johnson295189b2012-06-20 16:38:30 -07005269
5270/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005272 wishes to add or update a STA in HW. Upon the call of
5273 this API the WLAN DAL will pack and send a HAL Start
5274 message request message to the lower RIVA sub-system if
5275 DAL is in state STARTED.
5276
5277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005279
5280 WDI_Start must have been called.
5281
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 wdiConfigSTARspCb: callback for passing back the
5286 response of the config STA operation received from the
5287 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005288
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 callback
5291
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 @see WDI_Start
5293 @return Result of the function call
5294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005296WDI_ConfigSTAReq
5297(
5298 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5299 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5300 void* pUserData
5301)
5302{
5303 WDI_EventInfoType wdiEventData;
5304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5305
5306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 ------------------------------------------------------------------------*/
5309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5310 {
5311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5312 "WDI API call before module is initialized - Fail request");
5313
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 }
5316
5317 /*------------------------------------------------------------------------
5318 Fill in Event data and post to the Main FSM
5319 ------------------------------------------------------------------------*/
5320 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5322 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5323 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiEventData.pUserData = pUserData;
5325
5326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5327
5328}/*WDI_ConfigSTAReq*/
5329
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005330 /**
5331 @brief WDI_UpdateChannelReq will be called when the upper MAC
5332 wants to update the channel list on change in country code.
5333
5334 In state BUSY this request will be queued. Request won't
5335 be allowed in any other state.
5336
5337 WDI_UpdateChannelReq must have been called.
5338
5339 @param wdiUpdateChannelReqParams: the updated channel parameters
5340 as specified by the Device Interface
5341
5342 wdiUpdateChannelRspCb: callback for passing back the
5343 response of the update channel operation received from
5344 the device
5345
5346 pUserData: user data will be passed back with the
5347 callback
5348
5349 @return Result of the function call
5350*/
5351WDI_Status
5352WDI_UpdateChannelReq
5353(
5354 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5355 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5356 void* pUserData
5357)
5358{
5359 WDI_EventInfoType wdiEventData = {{0}};
5360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5361
5362 /*------------------------------------------------------------------------
5363 Sanity Check
5364 ------------------------------------------------------------------------*/
5365 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5366 {
5367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5368 "WDI API call before module is initialized - Fail request");
5369
5370 return WDI_STATUS_E_NOT_ALLOWED;
5371 }
5372
5373 /*------------------------------------------------------------------------
5374 Fill in Event data and post to the Main FSM
5375 ------------------------------------------------------------------------*/
5376 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5377 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5378 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5379 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5380 wdiEventData.pUserData = pUserData;
5381
5382 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5383
5384}/*WDI_UpdateChannelReq*/
5385
Jeff Johnson295189b2012-06-20 16:38:30 -07005386/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 wants to change the state of an ongoing link. Upon the
5389 call of this API the WLAN DAL will pack and send a HAL
5390 Start message request message to the lower RIVA
5391 sub-system if DAL is in state STARTED.
5392
5393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005395
5396 WDI_JoinStartReq must have been called.
5397
Jeff Johnsone7245742012-09-05 17:12:55 -07005398 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005400
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 wdiSetLinkStateRspCb: callback for passing back the
5402 response of the set link state operation received from
5403 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005404
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 callback
5407
Jeff Johnson295189b2012-06-20 16:38:30 -07005408 @see WDI_JoinStartReq
5409 @return Result of the function call
5410*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005411WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005412WDI_SetLinkStateReq
5413(
5414 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5415 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5416 void* pUserData
5417)
5418{
5419 WDI_EventInfoType wdiEventData;
5420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5421
5422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 ------------------------------------------------------------------------*/
5425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5426 {
5427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5428 "WDI API call before module is initialized - Fail request");
5429
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 }
5432
5433 /*------------------------------------------------------------------------
5434 Fill in Event data and post to the Main FSM
5435 ------------------------------------------------------------------------*/
5436 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5438 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5439 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 wdiEventData.pUserData = pUserData;
5441
5442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5443
5444}/*WDI_SetLinkStateReq*/
5445
5446
5447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 to get statistics (MIB counters) from the device. Upon
5450 the call of this API the WLAN DAL will pack and send a
5451 HAL Start request message to the lower RIVA sub-system
5452 if DAL is in state STARTED.
5453
5454 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005456
5457 WDI_Start must have been called.
5458
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005460 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005461
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 wdiGetStatsRspCb: callback for passing back the response
5463 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005464
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005466 callback
5467
Jeff Johnson295189b2012-06-20 16:38:30 -07005468 @see WDI_Start
5469 @return Result of the function call
5470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005472WDI_GetStatsReq
5473(
5474 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5475 WDI_GetStatsRspCb wdiGetStatsRspCb,
5476 void* pUserData
5477)
5478{
5479 WDI_EventInfoType wdiEventData;
5480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5481
5482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 ------------------------------------------------------------------------*/
5485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5486 {
5487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5488 "WDI API call before module is initialized - Fail request");
5489
Jeff Johnsone7245742012-09-05 17:12:55 -07005490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 }
5492
5493 /*------------------------------------------------------------------------
5494 Fill in Event data and post to the Main FSM
5495 ------------------------------------------------------------------------*/
5496 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 wdiEventData.pEventData = pwdiGetStatsReqParams;
5498 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5499 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 wdiEventData.pUserData = pUserData;
5501
5502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5503
5504}/*WDI_GetStatsReq*/
5505
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005506#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005507/**
5508 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5509 to get roam rssi from the device. Upon
5510 the call of this API the WLAN DAL will pack and send a
5511 HAL Start request message to the lower RIVA sub-system
5512 if DAL is in state STARTED.
5513
5514 In state BUSY this request will be queued. Request won't
5515 be allowed in any other state.
5516
5517 WDI_Start must have been called.
5518
5519 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5520 specified by the Device Interface
5521
5522 wdiGetRoamRssiRspCb: callback for passing back the response
5523 of the get stats operation received from the device
5524
5525 pUserData: user data will be passed back with the
5526 callback
5527
5528 @see WDI_Start
5529 @return Result of the function call
5530*/
5531WDI_Status
5532WDI_GetRoamRssiReq
5533(
5534 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5535 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5536 void* pUserData
5537)
5538{
5539 WDI_EventInfoType wdiEventData;
5540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5541
5542 /*------------------------------------------------------------------------
5543 Sanity Check
5544 ------------------------------------------------------------------------*/
5545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5546 {
5547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5548 "WDI API call before module is initialized - Fail request");
5549
5550 return WDI_STATUS_E_NOT_ALLOWED;
5551 }
5552 /*------------------------------------------------------------------------
5553 Fill in Event data and post to the Main FSM
5554 ------------------------------------------------------------------------*/
5555 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5556 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5557 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5558 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5559 wdiEventData.pUserData = pUserData;
5560
5561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5562
5563}/*WDI_GetRoamRssiReq*/
5564#endif
5565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566
5567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 it wishes to change the configuration of the WLAN
5570 Device. Upon the call of this API the WLAN DAL will pack
5571 and send a HAL Update CFG request message to the lower
5572 RIVA sub-system if DAL is in state STARTED.
5573
5574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005576
5577 WDI_Start must have been called.
5578
Jeff Johnsone7245742012-09-05 17:12:55 -07005579 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005581
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 wdiUpdateCfgsRspCb: callback for passing back the
5583 response of the update cfg operation received from the
5584 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005585
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 callback
5588
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 @see WDI_Start
5590 @return Result of the function call
5591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005593WDI_UpdateCfgReq
5594(
5595 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5596 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5597 void* pUserData
5598)
5599{
5600 WDI_EventInfoType wdiEventData;
5601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5602
5603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 ------------------------------------------------------------------------*/
5606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5607 {
5608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5609 "WDI API call before module is initialized - Fail request");
5610
Jeff Johnsone7245742012-09-05 17:12:55 -07005611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 }
5613
5614 /*------------------------------------------------------------------------
5615 Fill in Event data and post to the Main FSM
5616 ------------------------------------------------------------------------*/
5617 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005618 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5619 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5620 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 wdiEventData.pUserData = pUserData;
5622
5623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5624
5625}/*WDI_UpdateCfgReq*/
5626
5627
5628
5629/**
5630 @brief WDI_AddBAReq will be called when the upper MAC has setup
5631 successfully a BA session and needs to notify the HW for
5632 the appropriate settings to take place. Upon the call of
5633 this API the WLAN DAL will pack and send a HAL Add BA
5634 request message to the lower RIVA sub-system if DAL is
5635 in state STARTED.
5636
5637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005639
5640 WDI_PostAssocReq must have been called.
5641
5642 @param wdiAddBAReqParams: the add BA parameters as specified by
5643 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005644
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 wdiAddBARspCb: callback for passing back the response of
5646 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005647
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 callback
5650
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 @see WDI_PostAssocReq
5652 @return Result of the function call
5653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005655WDI_AddBAReq
5656(
5657 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5658 WDI_AddBARspCb wdiAddBARspCb,
5659 void* pUserData
5660)
5661{
5662 WDI_EventInfoType wdiEventData;
5663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5664
5665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 ------------------------------------------------------------------------*/
5668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5669 {
5670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5671 "WDI API call before module is initialized - Fail request");
5672
Jeff Johnsone7245742012-09-05 17:12:55 -07005673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 }
5675
5676 /*------------------------------------------------------------------------
5677 Fill in Event data and post to the Main FSM
5678 ------------------------------------------------------------------------*/
5679 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 wdiEventData.pEventData = pwdiAddBAReqParams;
5681 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5682 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005683 wdiEventData.pUserData = pUserData;
5684
5685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5686
5687}/*WDI_AddBAReq*/
5688
5689
5690/**
5691 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5692 successfully a BA session and needs to notify the HW for
5693 the appropriate settings to take place. Upon the call of
5694 this API the WLAN DAL will pack and send a HAL Add BA
5695 request message to the lower RIVA sub-system if DAL is
5696 in state STARTED.
5697
5698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005700
5701 WDI_PostAssocReq must have been called.
5702
5703 @param wdiAddBAReqParams: the add BA parameters as specified by
5704 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005705
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 wdiAddBARspCb: callback for passing back the response of
5707 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005708
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005710 callback
5711
Jeff Johnson295189b2012-06-20 16:38:30 -07005712 @see WDI_PostAssocReq
5713 @return Result of the function call
5714*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005715WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005716WDI_TriggerBAReq
5717(
5718 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5719 WDI_TriggerBARspCb wdiTriggerBARspCb,
5720 void* pUserData
5721)
5722{
5723 WDI_EventInfoType wdiEventData;
5724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5725
5726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 ------------------------------------------------------------------------*/
5729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5730 {
5731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5732 "WDI API call before module is initialized - Fail request");
5733
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 }
5736
5737 /*------------------------------------------------------------------------
5738 Fill in Event data and post to the Main FSM
5739 ------------------------------------------------------------------------*/
5740 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5742 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5743 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 wdiEventData.pUserData = pUserData;
5745
5746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5747
5748}/*WDI_AddBAReq*/
5749
5750/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 wishes to update any of the Beacon parameters used by HW.
5753 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5754 message to the lower RIVA sub-system if DAL is in state
5755 STARTED.
5756
5757 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005759
5760 WDI_PostAssocReq must have been called.
5761
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 wdiUpdateBeaconParamsRspCb: callback for passing back the
5766 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005767
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 callback
5770
Jeff Johnson295189b2012-06-20 16:38:30 -07005771 @see WDI_PostAssocReq
5772 @return Result of the function call
5773*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005774WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005775WDI_UpdateBeaconParamsReq
5776(
5777 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5778 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5779 void* pUserData
5780)
5781{
5782 WDI_EventInfoType wdiEventData;
5783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5784
5785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 ------------------------------------------------------------------------*/
5788 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5789 {
5790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5791 "WDI API call before module is initialized - Fail request");
5792
Jeff Johnsone7245742012-09-05 17:12:55 -07005793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005794 }
5795
5796 /*------------------------------------------------------------------------
5797 Fill in Event data and post to the Main FSM
5798 ------------------------------------------------------------------------*/
5799 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5801 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5802 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 wdiEventData.pUserData = pUserData;
5804
5805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5806
5807}/*WDI_UpdateBeaconParamsReq*/
5808
5809/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 wishes to update the Beacon template used by HW.
5812 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5813 message to the lower RIVA sub-system if DAL is in state
5814 STARTED.
5815
5816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005818
5819 WDI_PostAssocReq must have been called.
5820
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 wdiSendBeaconParamsRspCb: callback for passing back the
5825 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 callback
5829
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 @see WDI_PostAssocReq
5831 @return Result of the function call
5832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005834WDI_SendBeaconParamsReq
5835(
5836 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5837 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5838 void* pUserData
5839)
5840{
5841 WDI_EventInfoType wdiEventData;
5842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5843
5844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 ------------------------------------------------------------------------*/
5847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5848 {
5849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5850 "WDI API call before module is initialized - Fail request");
5851
Jeff Johnsone7245742012-09-05 17:12:55 -07005852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 }
5854
5855 /*------------------------------------------------------------------------
5856 Fill in Event data and post to the Main FSM
5857 ------------------------------------------------------------------------*/
5858 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 wdiEventData.pEventData = pwdiSendBeaconParams;
5860 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5861 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 wdiEventData.pUserData = pUserData;
5863
5864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5865
5866}/*WDI_SendBeaconParamsReq*/
5867
5868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 upper MAC wants to update the probe response template to
5871 be transmitted as Soft AP
5872 Upon the call of this API the WLAN DAL will
5873 pack and send the probe rsp template message to the
5874 lower RIVA sub-system if DAL is in state STARTED.
5875
5876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005878
5879
Jeff Johnsone7245742012-09-05 17:12:55 -07005880 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005882
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 wdiSendBeaconParamsRspCb: callback for passing back the
5884 response of the Send Beacon Params operation received
5885 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005886
Jeff Johnson295189b2012-06-20 16:38:30 -07005887 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 callback
5889
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 @see WDI_AddBAReq
5891 @return Result of the function call
5892*/
5893
Jeff Johnsone7245742012-09-05 17:12:55 -07005894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005895WDI_UpdateProbeRspTemplateReq
5896(
5897 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5898 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5899 void* pUserData
5900)
5901{
5902 WDI_EventInfoType wdiEventData;
5903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5904
5905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 ------------------------------------------------------------------------*/
5908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5909 {
5910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5911 "WDI API call before module is initialized - Fail request");
5912
Jeff Johnsone7245742012-09-05 17:12:55 -07005913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 }
5915
5916 /*------------------------------------------------------------------------
5917 Fill in Event data and post to the Main FSM
5918 ------------------------------------------------------------------------*/
5919 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005920 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5921 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5922 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 wdiEventData.pUserData = pUserData;
5924
5925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5926
5927}/*WDI_UpdateProbeRspTemplateReq*/
5928
5929/**
5930 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5931 to the NV memory.
5932
5933
5934 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5935 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005936
Jeff Johnson295189b2012-06-20 16:38:30 -07005937 wdiNvDownloadRspCb: callback for passing back the response of
5938 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005939
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005941 callback
5942
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 @see WDI_PostAssocReq
5944 @return Result of the function call
5945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005947WDI_NvDownloadReq
5948(
5949 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5950 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5951 void* pUserData
5952)
5953{
5954 WDI_EventInfoType wdiEventData;
5955
5956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005958 ------------------------------------------------------------------------*/
5959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5960 {
5961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5962 "WDI API call before module is initialized - Fail request");
5963
Jeff Johnsone7245742012-09-05 17:12:55 -07005964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 }
5966
5967 /*------------------------------------------------------------------------
5968 Fill in Event data and post to the Main FSM
5969 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5971 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5972 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5973 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 wdiEventData.pUserData = pUserData;
5975
5976 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5977
5978}/*WDI_NVDownloadReq*/
5979
Jeff Johnson295189b2012-06-20 16:38:30 -07005980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005981 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005982 upper MAC wants to send Notice of Absence
5983 Upon the call of this API the WLAN DAL will
5984 pack and send the probe rsp template message to the
5985 lower RIVA sub-system if DAL is in state STARTED.
5986
5987 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005988 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005989
5990
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005993
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 wdiSendBeaconParamsRspCb: callback for passing back the
5995 response of the Send Beacon Params operation received
5996 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005997
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005999 callback
6000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 @see WDI_AddBAReq
6002 @return Result of the function call
6003*/
6004WDI_Status
6005WDI_SetP2PGONOAReq
6006(
6007 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6008 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6009 void* pUserData
6010)
6011{
6012 WDI_EventInfoType wdiEventData;
6013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6014
6015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 ------------------------------------------------------------------------*/
6018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6019 {
6020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6021 "WDI API call before module is initialized - Fail request");
6022
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 }
6025
6026 /*------------------------------------------------------------------------
6027 Fill in Event data and post to the Main FSM
6028 ------------------------------------------------------------------------*/
6029 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6031 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6032 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 wdiEventData.pUserData = pUserData;
6034
6035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6036
6037}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006038
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306039#ifdef FEATURE_WLAN_TDLS
6040/**
6041 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6042 upper MAC wants to send TDLS Link Establish Request Parameters
6043 Upon the call of this API the WLAN DAL will
6044 pack and send the TDLS Link Establish Request message to the
6045 lower RIVA sub-system if DAL is in state STARTED.
6046
6047 In state BUSY this request will be queued. Request won't
6048 be allowed in any other state.
6049
6050
6051 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6052 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6053
6054 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6055 response of the TDLS Link Establish request received
6056 from the device
6057
6058 pUserData: user data will be passed back with the
6059 callback
6060
6061 @see
6062 @return Result of the function call
6063*/
6064WDI_Status
6065WDI_SetTDLSLinkEstablishReq
6066(
6067 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6068 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6069 void* pUserData
6070)
6071{
6072 WDI_EventInfoType wdiEventData;
6073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6074
6075 /*------------------------------------------------------------------------
6076 Sanity Check
6077 ------------------------------------------------------------------------*/
6078 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6079 {
6080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6081 "WDI API call before module is initialized - Fail request");
6082
6083 return WDI_STATUS_E_NOT_ALLOWED;
6084 }
6085
6086 /*------------------------------------------------------------------------
6087 Fill in Event data and post to the Main FSM
6088 ------------------------------------------------------------------------*/
6089 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6090 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6091 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6092 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6093 wdiEventData.pUserData = pUserData;
6094
6095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6096
6097}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306098
6099//tdlsoffchan
6100/**
6101 @brief WDI_SetTDLSChanSwitchReq will be called when the
6102 upper MAC wants to send TDLS Chan Switch Request Parameters
6103 Upon the call of this API the WLAN DAL will
6104 pack and send the TDLS Link Establish Request message to the
6105 lower RIVA sub-system if DAL is in state STARTED.
6106
6107 In state BUSY this request will be queued. Request won't
6108 be allowed in any other state.
6109
6110
6111 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6112 for Link Establishment (Used for TDLS Off Channel ...)
6113
6114 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6115 response of the TDLS Chan Switch request received
6116 from the device
6117
6118 pUserData: user data will be passed back with the
6119 callback
6120
6121 @see
6122 @return Result of the function call
6123*/
6124WDI_Status
6125WDI_SetTDLSChanSwitchReq
6126(
6127 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6128 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6129 void* pUserData
6130)
6131{
6132 WDI_EventInfoType wdiEventData;
6133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6134
6135 /*------------------------------------------------------------------------
6136 Sanity Check
6137 ------------------------------------------------------------------------*/
6138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6139 {
6140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6141 "WDI API call before module is initialized - Fail request");
6142
6143 return WDI_STATUS_E_NOT_ALLOWED;
6144 }
6145
6146 /*------------------------------------------------------------------------
6147 Fill in Event data and post to the Main FSM
6148 ------------------------------------------------------------------------*/
6149 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6150 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6151 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6152 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6153 wdiEventData.pUserData = pUserData;
6154
6155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6156
6157}/*WDI_SetTDLSChanSwitchReq*/
6158
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306159#endif
6160
Jeff Johnson295189b2012-06-20 16:38:30 -07006161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006163 UMAC wanted to add STA self while opening any new session
6164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006166
6167
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006169 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006170
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006172 callback
6173
6174 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 @return Result of the function call
6176*/
6177WDI_Status
6178WDI_AddSTASelfReq
6179(
6180 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6181 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6182 void* pUserData
6183)
6184{
6185 WDI_EventInfoType wdiEventData;
6186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6187
6188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 ------------------------------------------------------------------------*/
6191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6192 {
6193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6194 "WDI API call before module is initialized - Fail request");
6195
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 }
6198
6199 /*------------------------------------------------------------------------
6200 Fill in Event data and post to the Main FSM
6201 ------------------------------------------------------------------------*/
6202 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006203 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6204 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6205 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 wdiEventData.pUserData = pUserData;
6207
6208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6209
6210}/*WDI_AddSTASelfReq*/
6211
6212
Jeff Johnsone7245742012-09-05 17:12:55 -07006213#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006214/**
6215 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6216 the device of a successful add TSpec negotiation. HW
6217 needs to receive the TSpec Info from the UMAC in order
6218 to configure properly the QoS data traffic. Upon the
6219 call of this API the WLAN DAL will pack and send a HAL
6220 Add TS request message to the lower RIVA sub-system if
6221 DAL is in state STARTED.
6222
6223 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006225
6226 WDI_PostAssocReq must have been called.
6227
6228 @param wdiAddTsReqParams: the add TS parameters as specified by
6229 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231 wdiAddTsRspCb: callback for passing back the response of
6232 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 callback
6236
Jeff Johnson295189b2012-06-20 16:38:30 -07006237 @see WDI_PostAssocReq
6238 @return Result of the function call
6239*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006241WDI_AggrAddTSReq
6242(
6243 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6244 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6245 void* pUserData
6246)
6247{
6248 WDI_EventInfoType wdiEventData;
6249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6250
6251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 ------------------------------------------------------------------------*/
6254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6255 {
6256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6257 "WDI API call before module is initialized - Fail request");
6258
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 }
6261
6262 /*------------------------------------------------------------------------
6263 Fill in Event data and post to the Main FSM
6264 ------------------------------------------------------------------------*/
6265 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006266 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6267 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6268 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 wdiEventData.pUserData = pUserData;
6270
6271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6272
6273}/*WDI_AggrAddTSReq*/
6274
6275#endif /* WLAN_FEATURE_VOWIFI_11R */
6276
Jeff Johnson295189b2012-06-20 16:38:30 -07006277/**
6278 @brief WDI_FTMCommandReq
6279 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006280
6281 @param ftmCommandReq: FTM Command Body
6282 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006283 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006284
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 @see
6286 @return Result of the function call
6287*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006289WDI_FTMCommandReq
6290(
6291 WDI_FTMCommandReqType *ftmCommandReq,
6292 WDI_FTMCommandRspCb ftmCommandRspCb,
6293 void *pUserData
6294)
6295{
6296 WDI_EventInfoType wdiEventData;
6297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6298
6299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 ------------------------------------------------------------------------*/
6302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6303 {
6304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6305 "WDI API call before module is initialized - Fail request");
6306
Jeff Johnsone7245742012-09-05 17:12:55 -07006307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 }
6309
6310 /*------------------------------------------------------------------------
6311 Fill in Event data and post to the Main FSM
6312 ------------------------------------------------------------------------*/
6313 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6314 wdiEventData.pEventData = (void *)ftmCommandReq;
6315 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6316 wdiEventData.pCBfnc = ftmCommandRspCb;
6317 wdiEventData.pUserData = pUserData;
6318
6319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6320}
Jeff Johnson295189b2012-06-20 16:38:30 -07006321/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006322 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006323
6324 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006326
6327
6328 @param pwdiResumeReqParams: as specified by
6329 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006330
Jeff Johnson295189b2012-06-20 16:38:30 -07006331 wdiResumeReqRspCb: callback for passing back the response of
6332 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006333
Jeff Johnson295189b2012-06-20 16:38:30 -07006334 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 callback
6336
6337 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 @return Result of the function call
6339*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006340WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006341WDI_HostResumeReq
6342(
6343 WDI_ResumeParamsType* pwdiResumeReqParams,
6344 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6345 void* pUserData
6346)
6347{
6348 WDI_EventInfoType wdiEventData;
6349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6350
6351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 ------------------------------------------------------------------------*/
6354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6355 {
6356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6357 "WDI API call before module is initialized - Fail request");
6358
Jeff Johnsone7245742012-09-05 17:12:55 -07006359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 }
6361
6362 /*------------------------------------------------------------------------
6363 Fill in Event data and post to the Main FSM
6364 ------------------------------------------------------------------------*/
6365 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006366 wdiEventData.pEventData = pwdiResumeReqParams;
6367 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6368 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006369 wdiEventData.pUserData = pUserData;
6370
6371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6372
6373}/*WDI_HostResumeReq*/
6374
6375/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006377
6378 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006379 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006380
6381
6382 @param pwdiDelStaSelfReqParams: as specified by
6383 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006384
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 wdiDelStaSelfRspCb: callback for passing back the response of
6386 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006387
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 callback
6390
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 @see WDI_PostAssocReq
6392 @return Result of the function call
6393*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006394WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006395WDI_DelSTASelfReq
6396(
6397 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6398 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6399 void* pUserData
6400)
6401{
6402 WDI_EventInfoType wdiEventData;
6403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6404
6405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006406 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 ------------------------------------------------------------------------*/
6408 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6409 {
6410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6411 "WDI API call before module is initialized - Fail request");
6412
Jeff Johnsone7245742012-09-05 17:12:55 -07006413 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006414 }
6415
6416 /*------------------------------------------------------------------------
6417 Fill in Event data and post to the Main FSM
6418 ------------------------------------------------------------------------*/
6419 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006420 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6421 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6422 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 wdiEventData.pUserData = pUserData;
6424
6425 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6426
6427}/*WDI_AggrAddTSReq*/
6428
6429/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6431 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 Upon the call of this API the WLAN DAL will pack
6433 and send a HAL Set Tx Per Tracking request message to the
6434 lower RIVA sub-system if DAL is in state STARTED.
6435
6436 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006438
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006441
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 pwdiSetTxPerTrackingRspCb: callback for passing back the
6443 response of the set Tx PER Tracking configurations operation received
6444 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006445
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 callback
6448
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 @return Result of the function call
6450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006452WDI_SetTxPerTrackingReq
6453(
6454 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6455 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6456 void* pUserData
6457)
6458{
6459 WDI_EventInfoType wdiEventData;
6460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6461
6462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 ------------------------------------------------------------------------*/
6465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6466 {
6467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6468 "WDI API call before module is initialized - Fail request");
6469
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 }
6472
6473 /*------------------------------------------------------------------------
6474 Fill in Event data and post to the Main FSM
6475 ------------------------------------------------------------------------*/
6476 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006477 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 wdiEventData.pUserData = pUserData;
6481
6482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6483
6484}/*WDI_SetTxPerTrackingReq*/
6485
6486/**
6487 @brief WDI_SetTmLevelReq
6488 If HW Thermal condition changed, driver should react based on new
6489 HW thermal condition.
6490
6491 @param pwdiSetTmLevelReq: New thermal condition information
6492
6493 pwdiSetTmLevelRspCb: callback
6494
6495 usrData: user data will be passed back with the
6496 callback
6497
6498 @return Result of the function call
6499*/
6500WDI_Status
6501WDI_SetTmLevelReq
6502(
6503 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6504 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6505 void *usrData
6506)
6507{
6508 WDI_EventInfoType wdiEventData;
6509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6510
6511 /*------------------------------------------------------------------------
6512 Sanity Check
6513 ------------------------------------------------------------------------*/
6514 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6515 {
6516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6517 "WDI API call before module is initialized - Fail request");
6518
6519 return WDI_STATUS_E_NOT_ALLOWED;
6520 }
6521
6522 /*------------------------------------------------------------------------
6523 Fill in Event data and post to the Main FSM
6524 ------------------------------------------------------------------------*/
6525 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6526 wdiEventData.pEventData = pwdiSetTmLevelReq;
6527 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6528 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6529 wdiEventData.pUserData = usrData;
6530
6531 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6532}
6533
6534/**
6535 @brief WDI_HostSuspendInd
6536
6537 Suspend Indication from the upper layer will be sent
6538 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006539
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006541
6542 @see
6543
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 @return Status of the request
6545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006547WDI_HostSuspendInd
6548(
6549 WDI_SuspendParamsType* pwdiSuspendIndParams
6550)
6551{
6552
6553 WDI_EventInfoType wdiEventData;
6554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6555
6556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 ------------------------------------------------------------------------*/
6559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6560 {
6561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6562 "WDI API call before module is initialized - Fail request");
6563
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 }
6566
6567 /*------------------------------------------------------------------------
6568 Fill in Event data and post to the Main FSM
6569 ------------------------------------------------------------------------*/
6570 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006571 wdiEventData.pEventData = pwdiSuspendIndParams;
6572 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6573 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 wdiEventData.pUserData = NULL;
6575
6576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6577
6578}/*WDI_HostSuspendInd*/
6579
6580/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006581 @brief WDI_TrafficStatsInd
6582 Traffic Stats from the upper layer will be sent
6583 down to HAL
6584
6585 @param WDI_TrafficStatsIndType
6586
6587 @see
6588
6589 @return Status of the request
6590*/
6591WDI_Status
6592WDI_TrafficStatsInd
6593(
6594 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6595)
6596{
6597
6598 WDI_EventInfoType wdiEventData;
6599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6600
6601 /*------------------------------------------------------------------------
6602 Sanity Check
6603 ------------------------------------------------------------------------*/
6604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6605 {
6606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6607 "WDI API call before module is initialized - Fail request");
6608
6609 return WDI_STATUS_E_NOT_ALLOWED;
6610 }
6611
6612 /*------------------------------------------------------------------------
6613 Fill in Event data and post to the Main FSM
6614 ------------------------------------------------------------------------*/
6615 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6616 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6617 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6618 wdiEventData.pCBfnc = NULL;
6619 wdiEventData.pUserData = NULL;
6620
6621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6622
6623}/*WDI_TrafficStatsInd*/
6624
Chet Lanctot186b5732013-03-18 10:26:30 -07006625#ifdef WLAN_FEATURE_11W
6626/**
6627 @brief WDI_ExcludeUnencryptedInd
6628 Register with HAL to receive/drop unencrypted frames
6629
6630 @param WDI_ExcludeUnencryptIndType
6631
6632 @see
6633
6634 @return Status of the request
6635*/
6636WDI_Status
6637WDI_ExcludeUnencryptedInd
6638(
6639 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6640)
6641{
6642
6643 WDI_EventInfoType wdiEventData;
6644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6645
6646 /*------------------------------------------------------------------------
6647 Sanity Check
6648 ------------------------------------------------------------------------*/
6649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6650 {
6651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6652 "WDI API call before module is initialized - Fail request");
6653
6654 return WDI_STATUS_E_NOT_ALLOWED;
6655 }
6656
6657 /*------------------------------------------------------------------------
6658 Fill in Event data and post to the Main FSM
6659 ------------------------------------------------------------------------*/
6660 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6661 wdiEventData.pEventData = pWdiExcUnencParams;
6662 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6663 wdiEventData.pCBfnc = NULL;
6664 wdiEventData.pUserData = NULL;
6665
6666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6667
6668}/*WDI_TrafficStatsInd*/
6669#endif
6670
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006671/**
Yue Mab9c86f42013-08-14 15:59:08 -07006672 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6673
6674 @param addPeriodicTxPtrnParams: Add Pattern parameters
6675
6676 @see
6677
6678 @return Status of the request
6679*/
6680WDI_Status
6681WDI_AddPeriodicTxPtrnInd
6682(
6683 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6684)
6685{
6686 WDI_EventInfoType wdiEventData;
6687
6688 /*-------------------------------------------------------------------------
6689 Sanity Check
6690 ------------------------------------------------------------------------*/
6691 if (eWLAN_PAL_FALSE == gWDIInitialized)
6692 {
6693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6694 "WDI API call before module is initialized - Fail request!");
6695
6696 return WDI_STATUS_E_NOT_ALLOWED;
6697 }
6698
6699 /*-------------------------------------------------------------------------
6700 Fill in Event data and post to the Main FSM
6701 ------------------------------------------------------------------------*/
6702 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6703 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6704 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6705 wdiEventData.pCBfnc = NULL;
6706 wdiEventData.pUserData = NULL;
6707
6708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6709}
6710
6711/**
6712 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6713
6714 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6715
6716 @see
6717
6718 @return Status of the request
6719*/
6720WDI_Status
6721WDI_DelPeriodicTxPtrnInd
6722(
6723 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6724)
6725{
6726 WDI_EventInfoType wdiEventData;
6727
6728 /*-------------------------------------------------------------------------
6729 Sanity Check
6730 ------------------------------------------------------------------------*/
6731 if (eWLAN_PAL_FALSE == gWDIInitialized)
6732 {
6733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6734 "WDI API call before module is initialized - Fail request!");
6735
6736 return WDI_STATUS_E_NOT_ALLOWED;
6737 }
6738
6739 /*-------------------------------------------------------------------------
6740 Fill in Event data and post to the Main FSM
6741 ------------------------------------------------------------------------*/
6742 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6743 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6744 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6745 wdiEventData.pCBfnc = NULL;
6746 wdiEventData.pUserData = NULL;
6747
6748 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6749}
6750
6751/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006752 @brief WDI_HALDumpCmdReq
6753 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006754
6755 @param halDumpCmdReqParams: Hal Dump Command Body
6756 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006758
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 @see
6760 @return Result of the function call
6761*/
6762WDI_Status WDI_HALDumpCmdReq
6763(
6764 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6765 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6766 void *pUserData
6767)
6768{
6769 WDI_EventInfoType wdiEventData;
6770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6771
6772 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 ------------------------------------------------------------------------*/
6775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6776 {
6777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6778 "WDI API call before module is initialized - Fail request");
6779
Jeff Johnsone7245742012-09-05 17:12:55 -07006780 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 }
6782
6783 /*------------------------------------------------------------------------
6784 Fill in Event data and post to the Main FSM
6785 ------------------------------------------------------------------------*/
6786 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6787 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6788 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6789 wdiEventData.pCBfnc = halDumpCmdRspCb;
6790 wdiEventData.pUserData = pUserData;
6791
6792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6793}
6794
Jeff Johnsone7245742012-09-05 17:12:55 -07006795/*============================================================================
6796
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006798
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 ============================================================================*/
6800
6801/**
6802 @brief Main FSM Start function for all states except BUSY
6803
Jeff Johnsone7245742012-09-05 17:12:55 -07006804
6805 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 wdiEV: event posted to the main DAL FSM
6807 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 structure
6809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 @see
6811 @return Result of the function call
6812*/
6813WDI_Status
6814WDI_PostMainEvent
6815(
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 WDI_ControlBlockType* pWDICtx,
6817 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006819)
6820{
Jeff Johnsone7245742012-09-05 17:12:55 -07006821 WDI_Status wdiStatus;
6822 WDI_MainFuncType pfnWDIMainEvHdlr;
6823 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6825
6826 /*-------------------------------------------------------------------------
6827 Sanity check
6828 -------------------------------------------------------------------------*/
6829 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6830 ( wdiEV >= WDI_MAX_EVENT ))
6831 {
6832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6833 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6834 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 }
6837
6838 /*Access to the global state must be locked */
6839 wpalMutexAcquire(&pWDICtx->wptMutex);
6840
6841 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006843
6844 wdiOldState = pWDICtx->uGlobalState;
6845
6846 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6848 response comes from CCPU for the request sent by host:
6849 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 -07006850 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 -07006851 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 CCPU:
6853 don't change the state */
6854 if ( WDI_RESPONSE_EVENT != wdiEV)
6855 {
6856 /*Transition to BUSY State - the request is now being processed by the FSM,
6857 if the request fails we shall transition back to the old state, if not
6858 the request will manage its own state transition*/
6859 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6860 }
6861 /* If the state function associated with the EV is NULL it means that this
6862 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 {
6865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006866 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 }
6870 else
6871 {
6872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006875 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006876 }
6877
6878 /* If a request handles itself well it will end up in a success or in a
6879 pending
6880 Success - means that the request was processed and the proper state
6881 transition already occurred or will occur when the resp is received
6882 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006883
Jeff Johnson295189b2012-06-20 16:38:30 -07006884 Pending - means the request could not be processed at this moment in time
6885 because the FSM was already busy so no state transition or dequeueing
6886 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006887
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 Success for synchronous case means that the transition may occur and
6889 processing of pending requests may continue - so it should go through
6890 and restores the state and continue processing queued requests*/
6891 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6892 ( WDI_STATUS_PENDING != wdiStatus ))
6893 {
6894 if ( WDI_RESPONSE_EVENT != wdiEV)
6895 {
6896 /*The request has failed or could not be processed - transition back to
6897 the old state - check to see if anything was queued and try to execute
6898 The dequeue logic should post a message to a thread and return - no
6899 actual processing can occur */
6900 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6901 }
6902 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006903
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 }
6905
6906 /* we have completed processing the event */
6907 wpalMutexRelease(&pWDICtx->wptMutex);
6908
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910
6911}/*WDI_PostMainEvent*/
6912
6913
6914/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006916--------------------------------------------------------------------------*/
6917/**
6918 @brief Main FSM Start function for all states except BUSY
6919
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
6921 @param pWDICtx: pointer to the WLAN DAL context
6922 pEventData: pointer to the event information structure
6923
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 @see
6925 @return Result of the function call
6926*/
6927WDI_Status
6928WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006929(
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 WDI_ControlBlockType* pWDICtx,
6931 WDI_EventInfoType* pEventData
6932)
6933{
6934
6935 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 ----------------------------------------------------------------------*/
6938 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6939 {
6940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006941 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 pWDICtx, pEventData);
6943 return WDI_STATUS_E_FAILURE;
6944 }
6945
6946 wpalMutexAcquire(&pWDICtx->wptMutex);
6947
6948 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006949 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 ----------------------------------------------------------------------*/
6951 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6952 {
6953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6954 "Control Transport not yet Open - queueing the request");
6955
6956 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006958
6959 wpalMutexRelease(&pWDICtx->wptMutex);
6960 return WDI_STATUS_PENDING;
6961 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 wpalMutexRelease(&pWDICtx->wptMutex);
6964
6965 /*Return Success*/
6966 return WDI_ProcessRequest( pWDICtx, pEventData );
6967
6968}/*WDI_MainStart*/
6969
6970/**
6971 @brief Main FSM Response function for state INIT
6972
Jeff Johnsone7245742012-09-05 17:12:55 -07006973
6974 @param pWDICtx: pointer to the WLAN DAL context
6975 pEventData: pointer to the event information structure
6976
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 @see
6978 @return Result of the function call
6979*/
6980WDI_Status
6981WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006982(
Jeff Johnson295189b2012-06-20 16:38:30 -07006983 WDI_ControlBlockType* pWDICtx,
6984 WDI_EventInfoType* pEventData
6985)
6986{
6987 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006991
6992 /*Return Success*/
6993 return WDI_STATUS_E_NOT_ALLOWED;
6994}/* WDI_MainRspInit */
6995
6996/**
6997 @brief Main FSM Close function for all states except BUSY
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999
7000 @param pWDICtx: pointer to the WLAN DAL context
7001 pEventData: pointer to the event information structure
7002
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 @see
7004 @return Result of the function call
7005*/
7006WDI_Status
7007WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007008(
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 WDI_ControlBlockType* pWDICtx,
7010 WDI_EventInfoType* pEventData
7011)
7012{
7013
7014 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 ----------------------------------------------------------------------*/
7017 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7018 {
7019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007020 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 pWDICtx, pEventData);
7022 return WDI_STATUS_E_FAILURE;
7023 }
7024
7025 /*Return Success*/
7026 return WDI_ProcessRequest( pWDICtx, pEventData );
7027
7028}/*WDI_MainClose*/
7029/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007031--------------------------------------------------------------------------*/
7032/**
7033 @brief Main FSM Start function for state STARTED
7034
Jeff Johnsone7245742012-09-05 17:12:55 -07007035
7036 @param pWDICtx: pointer to the WLAN DAL context
7037 pEventData: pointer to the event information structure
7038
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 @see
7040 @return Result of the function call
7041*/
7042WDI_Status
7043WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007044(
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 WDI_ControlBlockType* pWDICtx,
7046 WDI_EventInfoType* pEventData
7047)
7048{
7049 WDI_StartRspCb wdiStartRspCb = NULL;
7050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7051
7052 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 ----------------------------------------------------------------------*/
7055 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7056 {
7057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007058 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 pWDICtx, pEventData);
7060 return WDI_STATUS_E_FAILURE;
7061 }
7062
7063 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 ----------------------------------------------------------------------*/
7066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007067 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007068
7069 wpalMutexAcquire(&pWDICtx->wptMutex);
7070
7071 /*Transition back to started because the post function transitioned us to
7072 busy*/
7073 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7074
7075 /*Check to see if any request is pending*/
7076 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007077
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 wpalMutexRelease(&pWDICtx->wptMutex);
7079
7080 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7082
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 /*Notify UMAC*/
7084 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
7085
7086 /*Return Success*/
7087 return WDI_STATUS_SUCCESS;
7088
7089}/*WDI_MainStartStarted*/
7090
7091/**
7092 @brief Main FSM Stop function for state STARTED
7093
Jeff Johnsone7245742012-09-05 17:12:55 -07007094
7095 @param pWDICtx: pointer to the WLAN DAL context
7096 pEventData: pointer to the event information structure
7097
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 @see
7099 @return Result of the function call
7100*/
7101WDI_Status
7102WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007103(
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 WDI_ControlBlockType* pWDICtx,
7105 WDI_EventInfoType* pEventData
7106)
7107{
7108 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007109 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 ----------------------------------------------------------------------*/
7111 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7112 {
7113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007114 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 pWDICtx, pEventData);
7116 return WDI_STATUS_E_FAILURE;
7117 }
7118
7119 /*State at this point is BUSY - because we enter this state before posting
7120 an event to the FSM in order to prevent potential race conditions*/
7121
7122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7123 "Processing stop request in FSM");
7124
7125 /*Return Success*/
7126 return WDI_ProcessRequest( pWDICtx, pEventData );
7127
7128}/*WDI_MainStopStarted*/
7129/**
7130 @brief Main FSM Request function for state started
7131
Jeff Johnsone7245742012-09-05 17:12:55 -07007132
7133 @param pWDICtx: pointer to the WLAN DAL context
7134 pEventData: pointer to the event information structure
7135
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 @see
7137 @return Result of the function call
7138*/
7139WDI_Status
7140WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007141(
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 WDI_ControlBlockType* pWDICtx,
7143 WDI_EventInfoType* pEventData
7144)
7145{
7146
7147 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 ----------------------------------------------------------------------*/
7150 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7151 {
7152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007153 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 pWDICtx, pEventData);
7155 return WDI_STATUS_E_FAILURE;
7156 }
7157
7158 /*State at this point is BUSY - because we enter this state before posting
7159 an event to the FSM in order to prevent potential race conditions*/
7160
7161 /*Return Success*/
7162 return WDI_ProcessRequest( pWDICtx, pEventData );
7163
7164}/*WDI_MainReqStarted*/
7165
7166/**
7167 @brief Main FSM Response function for all states except INIT
7168
Jeff Johnsone7245742012-09-05 17:12:55 -07007169
7170 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007172
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 @see
7174 @return Result of the function call
7175*/
7176WDI_Status
7177WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007178(
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 WDI_ControlBlockType* pWDICtx,
7180 WDI_EventInfoType* pEventData
7181)
7182{
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 wpt_boolean expectedResponse;
7185
7186 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 ----------------------------------------------------------------------*/
7189 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7190 {
7191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007192 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007193 pWDICtx, pEventData);
7194 return WDI_STATUS_E_FAILURE;
7195 }
7196
7197 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7198 {
7199 /* we received an expected response */
7200 expectedResponse = eWLAN_PAL_TRUE;
7201
7202 /*We expect that we will transition to started after this processing*/
7203 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7204
7205 /* we are no longer expecting a response */
7206 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7207 }
7208 else
7209 {
7210 /* we received an indication or unexpected response */
7211 expectedResponse = eWLAN_PAL_FALSE;
7212 /* for indications no need to update state from what it is right
7213 now, unless it explicitly does it in the indication handler (say
7214 for device failure ind) */
7215 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7216 }
7217
7218 /*Process the response and indication */
7219 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7220
7221 /*Lock the CB as we are about to do a state transition*/
7222 wpalMutexAcquire(&pWDICtx->wptMutex);
7223
7224 /*Transition to the expected state after the response processing
7225 - this should always be started state with the following exceptions:
7226 1. processing of a failed start response
7227 2. device failure detected while processing response
7228 3. stop response received*/
7229 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007230
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 /*Dequeue request that may have been queued while we were waiting for the
7232 response */
7233 if ( expectedResponse )
7234 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 }
7237
7238 wpalMutexRelease(&pWDICtx->wptMutex);
7239
7240 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242
7243}/*WDI_MainRsp*/
7244
7245/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007247--------------------------------------------------------------------------*/
7248/**
7249 @brief Main FSM Stop function for state STOPPED
7250
Jeff Johnsone7245742012-09-05 17:12:55 -07007251
7252 @param pWDICtx: pointer to the WLAN DAL context
7253 pEventData: pointer to the event information structure
7254
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 @see
7256 @return Result of the function call
7257*/
7258WDI_Status
7259WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007260(
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 WDI_ControlBlockType* pWDICtx,
7262 WDI_EventInfoType* pEventData
7263)
7264{
7265 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 ----------------------------------------------------------------------*/
7268 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7269 {
7270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007271 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 pWDICtx, pEventData);
7273 return WDI_STATUS_E_FAILURE;
7274 }
7275
7276 /*We should normally not get a STOP request if we are already stopped
7277 since we should normally be stopped by the UMAC. However in some
7278 error situations we put ourselves in the stopped state without the
7279 UMAC knowing, so when we get a STOP request in this state we still
7280 process it since we need to clean up the underlying state */
7281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7282 "Processing stop request while stopped in FSM");
7283
7284 /*Return Success*/
7285 return WDI_ProcessRequest( pWDICtx, pEventData );
7286
7287}/*WDI_MainStopStopped*/
7288
7289/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007291--------------------------------------------------------------------------*/
7292/**
7293 @brief Main FSM Start function for state BUSY
7294
Jeff Johnsone7245742012-09-05 17:12:55 -07007295
7296 @param pWDICtx: pointer to the WLAN DAL context
7297 pEventData: pointer to the event information structure
7298
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 @see
7300 @return Result of the function call
7301*/
7302WDI_Status
7303WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007304(
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 WDI_ControlBlockType* pWDICtx,
7306 WDI_EventInfoType* pEventData
7307)
7308{
7309 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 ----------------------------------------------------------------------*/
7312 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7313 {
7314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007315 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 pWDICtx, pEventData);
7317 return WDI_STATUS_E_FAILURE;
7318 }
7319
7320 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 ----------------------------------------------------------------------*/
7323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7324 "WDI Busy state - queue start request");
7325
7326 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007328
7329 /*Return Success*/
7330 return WDI_STATUS_PENDING;
7331}/*WDI_MainStartBusy*/
7332
7333/**
7334 @brief Main FSM Stop function for state BUSY
7335
Jeff Johnsone7245742012-09-05 17:12:55 -07007336
7337 @param pWDICtx: pointer to the WLAN DAL context
7338 pEventData: pointer to the event information structure
7339
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 @see
7341 @return Result of the function call
7342*/
7343WDI_Status
7344WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007345(
Jeff Johnson295189b2012-06-20 16:38:30 -07007346 WDI_ControlBlockType* pWDICtx,
7347 WDI_EventInfoType* pEventData
7348)
7349{
7350 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 ----------------------------------------------------------------------*/
7353 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7354 {
7355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007356 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 pWDICtx, pEventData);
7358 return WDI_STATUS_E_FAILURE;
7359 }
7360
7361 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 ----------------------------------------------------------------------*/
7364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7365 "WDI Busy state - queue stop request");
7366
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007369
Jeff Johnson295189b2012-06-20 16:38:30 -07007370}/*WDI_MainStopBusy*/
7371
7372/**
7373 @brief Main FSM Request function for state BUSY
7374
Jeff Johnsone7245742012-09-05 17:12:55 -07007375
7376 @param pWDICtx: pointer to the WLAN DAL context
7377 pEventData: pointer to the event information structure
7378
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 @see
7380 @return Result of the function call
7381*/
7382WDI_Status
7383WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007384(
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 WDI_ControlBlockType* pWDICtx,
7386 WDI_EventInfoType* pEventData
7387)
7388{
7389 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 ----------------------------------------------------------------------*/
7392 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7393 {
7394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007395 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 pWDICtx, pEventData);
7397 return WDI_STATUS_E_FAILURE;
7398 }
7399
7400 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 ----------------------------------------------------------------------*/
7403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7404 "WDI Busy state - queue request %d because waiting for response %d",
7405 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7406
Jeff Johnsone7245742012-09-05 17:12:55 -07007407 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007409
Jeff Johnson295189b2012-06-20 16:38:30 -07007410}/*WDI_MainReqBusy*/
7411/**
7412 @brief Main FSM Close function for state BUSY
7413
Jeff Johnsone7245742012-09-05 17:12:55 -07007414
7415 @param pWDICtx: pointer to the WLAN DAL context
7416 pEventData: pointer to the event information structure
7417
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 @see
7419 @return Result of the function call
7420*/
7421WDI_Status
7422WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007423(
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 WDI_ControlBlockType* pWDICtx,
7425 WDI_EventInfoType* pEventData
7426)
7427{
7428 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 ----------------------------------------------------------------------*/
7431 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7432 {
7433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007434 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 pWDICtx, pEventData);
7436 return WDI_STATUS_E_FAILURE;
7437 }
7438
7439 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 ----------------------------------------------------------------------*/
7442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7443 "WDI Busy state - queue close request");
7444
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007447
Jeff Johnson295189b2012-06-20 16:38:30 -07007448}/*WDI_MainCloseBusy*/
7449
7450/**
7451 @brief Main FSM Shutdown function for INIT & STARTED states
7452
7453
7454 @param pWDICtx: pointer to the WLAN DAL context
7455 pEventData: pointer to the event information structure
7456
7457 @see
7458 @return Result of the function call
7459*/
7460WDI_Status
7461WDI_MainShutdown
7462(
7463 WDI_ControlBlockType* pWDICtx,
7464 WDI_EventInfoType* pEventData
7465)
7466{
7467 /*--------------------------------------------------------------------
7468 Sanity Check
7469 ----------------------------------------------------------------------*/
7470 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7471 {
7472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007473 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 pWDICtx, pEventData);
7475 return WDI_STATUS_E_FAILURE;
7476 }
7477
7478 /*State at this point is BUSY - because we enter this state before posting
7479 an event to the FSM in order to prevent potential race conditions*/
7480
7481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7482 "Processing shutdown request in FSM");
7483
7484 /*Return Success*/
7485 return WDI_ProcessRequest( pWDICtx, pEventData );
7486
7487}/*WDI_MainShutdown*/
7488
7489/**
7490 @brief Main FSM Shutdown function for BUSY state
7491
7492
7493 @param pWDICtx: pointer to the WLAN DAL context
7494 pEventData: pointer to the event information structure
7495
7496 @see
7497 @return Result of the function call
7498*/
7499WDI_Status
7500WDI_MainShutdownBusy
7501(
7502 WDI_ControlBlockType* pWDICtx,
7503 WDI_EventInfoType* pEventData
7504)
7505{
7506 /*--------------------------------------------------------------------
7507 Sanity Check
7508 ----------------------------------------------------------------------*/
7509 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7510 {
7511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007512 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 pWDICtx, pEventData);
7514 return WDI_STATUS_E_FAILURE;
7515 }
7516
7517 /* If you are waiting for a HAL response at this stage, you are not
7518 * going to get it. Riva is already shutdown/crashed.
7519 */
7520 wpalTimerStop(&gWDICb.wptResponseTimer);
7521
7522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7523 "Processing shutdown request in FSM: Busy state ");
7524
7525 return WDI_ProcessRequest( pWDICtx, pEventData );
7526
7527}/*WDI_MainShutdownBusy*/
7528
7529
Jeff Johnsone7245742012-09-05 17:12:55 -07007530/*=======================================================================
7531
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007533
Jeff Johnson295189b2012-06-20 16:38:30 -07007534*=======================================================================*/
7535
7536/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007538========================================================================*/
7539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007542
7543 @param pWDICtx: pointer to the WLAN DAL context
7544 pEventData: pointer to the event information structure
7545
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 @see
7547 @return Result of the function call
7548*/
7549WDI_Status
7550WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007551(
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 WDI_ControlBlockType* pWDICtx,
7553 WDI_EventInfoType* pEventData
7554)
7555{
7556 WDI_StartReqParamsType* pwdiStartParams = NULL;
7557 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 wpt_uint16 usDataOffset = 0;
7560 wpt_uint16 usSendSize = 0;
7561
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 tHalMacStartReqMsg halStartReq;
7563 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7565
7566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 -------------------------------------------------------------------------*/
7569 if (( NULL == pEventData ) ||
7570 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7571 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7572 {
7573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 }
7578
7579 /*-----------------------------------------------------------------------
7580 Get message buffer
7581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 pwdiStartParams->usConfigBufferLen;
7584
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 usLen,
7587 &pSendBuffer, &usDataOffset, &usSendSize))||
7588 ( usSendSize < (usDataOffset + usLen )))
7589 {
7590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007591 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 pEventData, pwdiStartParams, wdiStartRspCb);
7593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 }
7596
7597 /*-----------------------------------------------------------------------
7598 Fill in the message
7599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 halStartReq.startReqParams.driverType =
7601 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007602
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 halStartReq.startReqParams.uConfigBufferLen =
7604 pwdiStartParams->usConfigBufferLen;
7605 wpalMemoryCopy( pSendBuffer+usDataOffset,
7606 &halStartReq.startReqParams,
7607 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007608
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 usDataOffset += sizeof(halStartReq.startReqParams);
7610 wpalMemoryCopy( pSendBuffer+usDataOffset,
7611 pwdiStartParams->pConfigBuffer,
7612 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007613
7614 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616
7617 /*Save Low Level Ind CB and associated user data - it will be used further
7618 on when an indication is coming from the lower MAC*/
7619 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007621
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7628
Jeff Johnsone7245742012-09-05 17:12:55 -07007629
Jeff Johnson295189b2012-06-20 16:38:30 -07007630}/*WDI_ProcessStartReq*/
7631
7632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007635
7636 @param pWDICtx: pointer to the WLAN DAL context
7637 pEventData: pointer to the event information structure
7638
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 @see
7640 @return Result of the function call
7641*/
7642WDI_Status
7643WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007644(
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 WDI_ControlBlockType* pWDICtx,
7646 WDI_EventInfoType* pEventData
7647)
7648{
7649 WDI_StopReqParamsType* pwdiStopParams = NULL;
7650 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 wpt_uint16 usDataOffset = 0;
7653 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007654 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7657
7658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 -------------------------------------------------------------------------*/
7661 if (( NULL == pEventData ) ||
7662 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7663 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7664 {
7665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007668 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 }
7670
7671 /*-----------------------------------------------------------------------
7672 Get message buffer
7673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 sizeof(halStopReq.stopReqParams),
7676 &pSendBuffer, &usDataOffset, &usSendSize))||
7677 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7678 {
7679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007680 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 pEventData, pwdiStopParams, wdiStopRspCb);
7682 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007683 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 }
7685
7686 /*-----------------------------------------------------------------------
7687 Fill in the message
7688 -----------------------------------------------------------------------*/
7689 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7690 pwdiStopParams->wdiStopReason);
7691
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 wpalMemoryCopy( pSendBuffer+usDataOffset,
7693 &halStopReq.stopReqParams,
7694 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007695
7696 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007698
7699 /*! TO DO: stop the data services */
7700 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7701 {
7702 /*Stop the STA Table !UT- check this logic again
7703 It is safer to do it here than on the response - because a stop is imminent*/
7704 WDI_STATableStop(pWDICtx);
7705
7706 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007707 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7708 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 {
7710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7711 "WDI Init failed to reset power state event");
7712
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007714 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 }
7716 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007717 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7718 if( eWLAN_PAL_STATUS_SUCCESS != status )
7719 {
7720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007721 "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 -08007722 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007723 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007724 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007728 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7729 WDI_SET_POWER_STATE_TIMEOUT);
7730 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 {
7732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7733 "WDI Init failed to wait on an event");
7734
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007736 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 }
7738 }
7739
7740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7745
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007746fail:
7747 // Release the message buffer so we don't leak
7748 wpalMemoryFree(pSendBuffer);
7749
7750failRequest:
7751 //WDA should have failure check to avoid the memory leak
7752 return WDI_STATUS_E_FAILURE;
7753
Jeff Johnson295189b2012-06-20 16:38:30 -07007754}/*WDI_ProcessStopReq*/
7755
7756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007759
7760 @param pWDICtx: pointer to the WLAN DAL context
7761 pEventData: pointer to the event information structure
7762
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 @see
7764 @return Result of the function call
7765*/
7766WDI_Status
7767WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007768(
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 WDI_ControlBlockType* pWDICtx,
7770 WDI_EventInfoType* pEventData
7771)
7772{
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7775
7776 /*Lock control block for cleanup*/
7777 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007778
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 /*Clear all pending request*/
7780 WDI_ClearPendingRequests(pWDICtx);
7781
7782 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007783 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007784
7785 /* Close Data transport*/
7786 /* FTM mode does not open Data Path */
7787 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7788 {
7789 WDTS_Close(pWDICtx);
7790 }
7791
7792 /*Close the STA Table !UT- check this logic again*/
7793 WDI_STATableClose(pWDICtx);
7794
7795 /*close the PAL */
7796 wptStatus = wpalClose(pWDICtx->pPALContext);
7797 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7798 {
7799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7800 "Failed to wpal Close %d", wptStatus);
7801 WDI_ASSERT(0);
7802 }
7803
7804 /*Transition back to init state*/
7805 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7806
7807 wpalMutexRelease(&pWDICtx->wptMutex);
7808
7809 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007811
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813}/*WDI_ProcessCloseReq*/
7814
7815
7816/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007818===========================================================================*/
7819
7820/**
7821 @brief Process Init Scan Request function (called when Main FSM
7822 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007823
7824 @param pWDICtx: pointer to the WLAN DAL context
7825 pEventData: pointer to the event information structure
7826
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 @see
7828 @return Result of the function call
7829*/
7830WDI_Status
7831WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007832(
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 WDI_ControlBlockType* pWDICtx,
7834 WDI_EventInfoType* pEventData
7835)
7836{
7837 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7838 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 wpt_uint16 usDataOffset = 0;
7841 wpt_uint16 usSendSize = 0;
7842 wpt_uint8 i = 0;
7843
7844 tHalInitScanReqMsg halInitScanReqMsg;
7845
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 * It shold be removed once host and riva changes are in sync*/
7848 tHalInitScanConReqMsg halInitScanConReqMsg;
7849
7850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7851
7852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 -------------------------------------------------------------------------*/
7855 if (( NULL == pEventData ) ||
7856 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7857 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7858 {
7859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 }
7864
7865#if 0
7866 wpalMutexAcquire(&pWDICtx->wptMutex);
7867 /*-----------------------------------------------------------------------
7868 Check to see if SCAN is already in progress - if so reject the req
7869 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 -----------------------------------------------------------------------*/
7872 if ( pWDICtx->bScanInProgress )
7873 {
7874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7875 "Scan is already in progress - subsequent scan is not allowed"
7876 " until the first scan completes");
7877
7878 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 }
7881
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7883 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007884
7885 wpalMutexRelease(&pWDICtx->wptMutex);
7886#endif
Viral Modid86bde22012-12-10 13:09:21 -08007887 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 * It shold be removed once host and riva changes are in sync*/
7891 /*-----------------------------------------------------------------------
7892 Get message buffer
7893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 sizeof(halInitScanConReqMsg.initScanParams),
7896 &pSendBuffer, &usDataOffset, &usSendSize))||
7897 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7898 {
7899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007900 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 }
7905
7906
7907 /*-----------------------------------------------------------------------
7908 Fill in the message
7909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7912
7913 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7914 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7915
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7922
7923 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7924 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7925
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7927 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7931
7932 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7933 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7936 }
7937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpalMemoryCopy( pSendBuffer+usDataOffset,
7939 &halInitScanConReqMsg.initScanParams,
7940 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 }
7942 else
7943 {
7944 /*-----------------------------------------------------------------------
7945 Get message buffer
7946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 sizeof(halInitScanReqMsg.initScanParams),
7949 &pSendBuffer, &usDataOffset, &usSendSize))||
7950 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7951 {
7952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007953 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 }
7958
7959
7960 /*-----------------------------------------------------------------------
7961 Fill in the message
7962 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007963 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7965
7966 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7967 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7968
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7975
7976 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7977 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7978
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7981
7982 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7983 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7986 }
7987
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 wpalMemoryCopy( pSendBuffer+usDataOffset,
7989 &halInitScanReqMsg.initScanParams,
7990 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 }
7992
7993 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007995
7996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8001
8002}/*WDI_ProcessInitScanReq*/
8003
8004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008007
8008 @param pWDICtx: pointer to the WLAN DAL context
8009 pEventData: pointer to the event information structure
8010
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 @see
8012 @return Result of the function call
8013*/
8014WDI_Status
8015WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008016(
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WDI_ControlBlockType* pWDICtx,
8018 WDI_EventInfoType* pEventData
8019)
8020{
8021 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8022 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 wpt_uint16 usDataOffset = 0;
8025 wpt_uint16 usSendSize = 0;
8026
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8029
8030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 -------------------------------------------------------------------------*/
8033 if (( NULL == pEventData ) ||
8034 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8035 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8036 {
8037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 }
8042
8043#if 0
8044 wpalMutexAcquire(&pWDICtx->wptMutex);
8045 /*-----------------------------------------------------------------------
8046 Check to see if SCAN is already in progress - start scan is only
8047 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8052 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8053 {
8054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8055 "Scan start not allowed in this state %d %d",
8056 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 }
8061
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063
8064 wpalMutexRelease(&pWDICtx->wptMutex);
8065#endif
8066
8067 /*-----------------------------------------------------------------------
8068 Get message buffer
8069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 sizeof(halStartScanReqMsg.startScanParams),
8072 &pSendBuffer, &usDataOffset, &usSendSize))||
8073 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8074 {
8075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008076 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 }
8081
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 wpalMemoryCopy( pSendBuffer+usDataOffset,
8085 &halStartScanReqMsg.startScanParams,
8086 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008087
8088 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090
8091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8096}/*WDI_ProcessStartScanReq*/
8097
8098
8099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008102
8103 @param pWDICtx: pointer to the WLAN DAL context
8104 pEventData: pointer to the event information structure
8105
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 @see
8107 @return Result of the function call
8108*/
8109WDI_Status
8110WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008111(
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 WDI_ControlBlockType* pWDICtx,
8113 WDI_EventInfoType* pEventData
8114)
8115{
8116 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8117 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 wpt_uint16 usDataOffset = 0;
8120 wpt_uint16 usSendSize = 0;
8121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8124
8125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 -------------------------------------------------------------------------*/
8128 if (( NULL == pEventData ) ||
8129 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8130 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8131 {
8132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 }
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8139 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 * forwarded to HAL and result in hang*/
8141#if 0
8142 wpalMutexAcquire(&pWDICtx->wptMutex);
8143 /*-----------------------------------------------------------------------
8144 Check to see if SCAN is already in progress - end scan is only
8145 allowed when a scan is ongoing and the state of the scan procedure
8146 is started
8147 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8152 "End start not allowed in this state %d %d",
8153 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008154
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 }
8158
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160
8161 wpalMutexRelease(&pWDICtx->wptMutex);
8162#endif
8163
8164 /*-----------------------------------------------------------------------
8165 Get message buffer
8166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 sizeof(halEndScanReqMsg.endScanParams),
8169 &pSendBuffer, &usDataOffset, &usSendSize))||
8170 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8171 {
8172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008173 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 }
8178
8179 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8180
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 wpalMemoryCopy( pSendBuffer+usDataOffset,
8182 &halEndScanReqMsg.endScanParams,
8183 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008184
8185 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008187
8188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8193}/*WDI_ProcessEndScanReq*/
8194
8195
8196/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008199
8200 @param pWDICtx: pointer to the WLAN DAL context
8201 pEventData: pointer to the event information structure
8202
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 @see
8204 @return Result of the function call
8205*/
8206WDI_Status
8207WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008208(
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 WDI_ControlBlockType* pWDICtx,
8210 WDI_EventInfoType* pEventData
8211)
8212{
8213 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8214 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 wpt_uint16 usDataOffset = 0;
8217 wpt_uint16 usSendSize = 0;
8218 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008219 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8222
8223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 -------------------------------------------------------------------------*/
8226 if (( NULL == pEventData ) ||
8227 ( NULL == pEventData->pEventData) ||
8228 ( NULL == pEventData->pCBfnc))
8229 {
8230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 }
8235
8236 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8237 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8239 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 * forwarded to HAL and result in hang*/
8241#if 0
8242 wpalMutexAcquire(&pWDICtx->wptMutex);
8243 /*-----------------------------------------------------------------------
8244 Check to see if SCAN is already in progress
8245 Finish scan gets invoked any scan states. ie. abort scan
8246 It should be allowed in any states.
8247 -----------------------------------------------------------------------*/
8248 if ( !pWDICtx->bScanInProgress )
8249 {
8250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8251 "Finish start not allowed in this state %d",
8252 pWDICtx->bScanInProgress );
8253
8254 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 }
8257
8258 /*-----------------------------------------------------------------------
8259 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8263 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 wpalMutexRelease(&pWDICtx->wptMutex);
8265#endif
8266
8267 if ( pWDICtx->bInBmps )
8268 {
8269 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008270 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8271 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8272 {
8273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008274 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008275 WDI_ASSERT(0);
8276 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 }
8278
8279 /*-----------------------------------------------------------------------
8280 Get message buffer
8281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 sizeof(halFinishScanReqMsg.finishScanParams),
8284 &pSendBuffer, &usDataOffset, &usSendSize))||
8285 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8286 {
8287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008288 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 }
8293
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8296
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8299
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8302
8303 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8304 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8305
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8312
Jeff Johnsone7245742012-09-05 17:12:55 -07008313 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8315
8316 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8317 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8320 }
8321
8322 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8323 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 wpalMemoryCopy( pSendBuffer+usDataOffset,
8326 &halFinishScanReqMsg.finishScanParams,
8327 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
8332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8337}/*WDI_ProcessFinishScanReq*/
8338
8339
8340/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008342==========================================================================*/
8343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 @brief Process BSS Join for a given Session
8345
8346 @param pWDICtx: pointer to the WLAN DAL context
8347 pEventData: pointer to the event information structure
8348
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 @see
8350 @return Result of the function call
8351*/
8352WDI_Status
8353WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008354(
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 WDI_ControlBlockType* pWDICtx,
8356 WDI_JoinReqParamsType* pwdiJoinParams,
8357 WDI_JoinRspCb wdiJoinRspCb,
8358 void* pUserData
8359)
8360{
8361 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008363 wpt_uint16 usDataOffset = 0;
8364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8369
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008370 wpalMutexAcquire(&pWDICtx->wptMutex);
8371
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 /*------------------------------------------------------------------------
8373 Check to see if we have any session with this BSSID already stored, we
8374 should not
8375 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8377 pwdiJoinParams->wdiReqInfo.macBSSID,
8378 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008379
8380 if ( NULL != pBSSSes )
8381 {
8382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008383 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8384 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008385
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008386 /*reset the bAssociationInProgress otherwise the next
8387 *join request will be queued*/
8388 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8389 wpalMutexRelease(&pWDICtx->wptMutex);
8390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 }
8392
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 if ( NULL == pBSSSes )
8398 {
8399
8400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8401 "DAL has no free sessions - cannot run another join");
8402
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008403 /*reset the bAssociationInProgress otherwise the next
8404 *join request will be queued*/
8405 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8412 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_MAC_ADDR_LEN);
8414
8415 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008418
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 wpalMutexRelease(&pWDICtx->wptMutex);
8420
8421 /*-----------------------------------------------------------------------
8422 Get message buffer
8423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 sizeof(halJoinReqMsg.joinReqParams),
8426 &pSendBuffer, &usDataOffset, &usSendSize))||
8427 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8428 {
8429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008430 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 pUserData, pwdiJoinParams, wdiJoinRspCb);
8432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 }
8435
8436 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008438
8439 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 pwdiJoinParams->wdiReqInfo.macSTASelf,
8441 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8445
8446 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8447
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008448#ifdef WLAN_FEATURE_VOWIFI
8449 halJoinReqMsg.joinReqParams.maxTxPower =
8450 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8451#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8454#endif
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8458 wdiSecondaryChannelOffset);
8459
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 wpalMemoryCopy( pSendBuffer+usDataOffset,
8461 &halJoinReqMsg.joinReqParams,
8462 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008463
8464 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008466
8467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8471 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008472
8473}/*WDI_ProcessBSSSessionJoinReq*/
8474
8475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008478
8479 @param pWDICtx: pointer to the WLAN DAL context
8480 pEventData: pointer to the event information structure
8481
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 @see
8483 @return Result of the function call
8484*/
8485WDI_Status
8486WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008487(
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 WDI_ControlBlockType* pWDICtx,
8489 WDI_EventInfoType* pEventData
8490)
8491{
8492 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8493 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8494 WDI_JoinRspCb wdiJoinRspCb = NULL;
8495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8496
8497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 -------------------------------------------------------------------------*/
8500 if (( NULL == pEventData ) ||
8501 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8502 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8503 {
8504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008509
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 /*-------------------------------------------------------------------------
8511 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 -------------------------------------------------------------------------*/
8514 wpalMutexAcquire(&pWDICtx->wptMutex);
8515
8516 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8517 {
8518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8519 "Association is currently in progress, queueing new join req");
8520
8521 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 pwdiJoinParams->wdiReqInfo.macBSSID);
8524
8525 wpalMutexRelease(&pWDICtx->wptMutex);
8526
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 }
8529
8530 /*Starting a new association */
8531 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8532 wpalMutexRelease(&pWDICtx->wptMutex);
8533
8534 /*Process the Join Request*/
8535 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8536 wdiJoinRspCb,pEventData->pUserData);
8537
8538}/*WDI_ProcessJoinReq*/
8539
8540
8541/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008544
8545 @param pWDICtx: pointer to the WLAN DAL context
8546 pEventData: pointer to the event information structure
8547
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 @see
8549 @return Result of the function call
8550*/
8551WDI_Status
8552WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008553(
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 WDI_ControlBlockType* pWDICtx,
8555 WDI_EventInfoType* pEventData
8556)
8557{
8558 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8559 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 wpt_uint16 uMsgSize = 0;
8563 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 wpt_uint16 usDataOffset = 0;
8565 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008567
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8570
8571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 -------------------------------------------------------------------------*/
8574 if (( NULL == pEventData ) ||
8575 ( NULL == pEventData->pEventData ) ||
8576 ( NULL == pEventData->pCBfnc ))
8577 {
8578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 }
8583
Abhishek Singh6927fa02014-06-27 17:19:55 +05308584 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8586 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8587 /*-------------------------------------------------------------------------
8588 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 -------------------------------------------------------------------------*/
8591 wpalMutexAcquire(&pWDICtx->wptMutex);
8592
8593 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8597 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8598 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008599
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 {
8602#ifdef WLAN_FEATURE_VOWIFI_11R
8603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 if ( NULL == pBSSSes )
8608 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008609
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8611 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008612
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008616
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8619 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008621
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8625#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 * Request in case of IBSS*/
8628 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8629 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8630 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8631 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8632 {
8633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 if ( NULL == pBSSSes )
8638 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008639
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8641 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008642
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008646
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8649 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008651
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8655 }
8656 else
8657 {
8658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8660 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8661 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8662
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 /* for IBSS testing */
8664 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667#endif
8668 }
8669
8670 /*------------------------------------------------------------------------
8671 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 ------------------------------------------------------------------------*/
8674 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8675 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8677 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8678 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8679 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008680
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008682
8683 wpalMutexRelease(&pWDICtx->wptMutex);
8684
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 }
8687
8688 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8690 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 sizeof(pWDICtx->wdiCachedConfigBssReq));
8692
8693 wpalMutexRelease(&pWDICtx->wptMutex);
8694
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8696#ifdef WLAN_FEATURE_11AC
8697 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008698 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 else
8700#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008701 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
8703 /*-----------------------------------------------------------------------
8704 Get message buffer
8705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8708 ( usSendSize < (usDataOffset + uMsgSize )))
8709 {
8710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008711 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 }
8716
8717 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008718#ifdef WLAN_FEATURE_11AC
8719 if (WDI_getFwWlanFeatCaps(DOT11AC))
8720 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8721 &pwdiConfigBSSParams->wdiReqInfo);
8722 else
8723#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 &pwdiConfigBSSParams->wdiReqInfo);
8726
8727 /* Need to fill in the STA Index to invalid, since at this point we have not
8728 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730
8731 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8733
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008734#ifdef WLAN_FEATURE_11AC
8735 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8736 wpalMemoryCopy( pSendBuffer+usDataOffset,
8737 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8738 uMsgSize);
8739 }else
8740#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008741 {
8742 if ( uMsgSize <= sizeof(tConfigBssParams) )
8743 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008744 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008745 &halConfigBssReqMsg.uBssParams.configBssParams,
8746 uMsgSize);
8747 }
8748 else
8749 {
8750 return WDI_STATUS_E_FAILURE;
8751 }
8752 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308756 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8761 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 WDI_CONFIG_BSS_RESP);
8763
8764}/*WDI_ProcessConfigBSSReq*/
8765
8766
8767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008770
8771 @param pWDICtx: pointer to the WLAN DAL context
8772 pEventData: pointer to the event information structure
8773
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 @see
8775 @return Result of the function call
8776*/
8777WDI_Status
8778WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008779(
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_ControlBlockType* pWDICtx,
8781 WDI_EventInfoType* pEventData
8782)
8783{
8784 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8785 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 wpt_uint16 usDataOffset = 0;
8790 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008792
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8795
8796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 -------------------------------------------------------------------------*/
8799 if (( NULL == pEventData ) ||
8800 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8801 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8802 {
8803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 }
8808
8809 /*-------------------------------------------------------------------------
8810 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 -------------------------------------------------------------------------*/
8813 wpalMutexAcquire(&pWDICtx->wptMutex);
8814
8815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8819 pwdiDelBSSParams->ucBssIdx,
8820 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 {
8824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 "%s: BSS does not yet exist. ucBssIdx %d",
8826 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008827
8828 wpalMutexRelease(&pWDICtx->wptMutex);
8829
8830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008832
8833 /*------------------------------------------------------------------------
8834 Check if this BSS is being currently processed or queued,
8835 if queued - queue the new request as well
8836 ------------------------------------------------------------------------*/
8837 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8840 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8841 __func__, pwdiDelBSSParams->ucBssIdx);
8842
8843 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8844
8845 wpalMutexRelease(&pWDICtx->wptMutex);
8846
8847 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008849
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 /*-----------------------------------------------------------------------
8851 If we receive a Del BSS request for an association that is already in
8852 progress, it indicates that the assoc has failed => we no longer have
8853 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 -----------------------------------------------------------------------*/
8856 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8857 {
8858 /*We can switch to false here because even if a subsequent Join comes in
8859 it will only be processed when DAL transitions out of BUSY state which
8860 happens when the Del BSS request comes */
8861 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8862
8863 /*Former association is complete - prepare next pending assoc for
8864 processing */
8865 WDI_DequeueAssocRequest(pWDICtx);
8866 }
8867
8868 wpalMutexRelease(&pWDICtx->wptMutex);
8869 /*-----------------------------------------------------------------------
8870 Get message buffer
8871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 sizeof(halBssReqMsg.deleteBssParams),
8874 &pSendBuffer, &usDataOffset, &usSendSize))||
8875 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8876 {
8877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008878 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 }
8883
8884 /*Fill in the message request structure*/
8885
8886 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008887 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 wpalMemoryCopy( pSendBuffer+usDataOffset,
8890 &halBssReqMsg.deleteBssParams,
8891 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
8893 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008895
Jeff Johnsone7245742012-09-05 17:12:55 -07008896
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8902
Jeff Johnsone7245742012-09-05 17:12:55 -07008903
Jeff Johnson295189b2012-06-20 16:38:30 -07008904}/*WDI_ProcessDelBSSReq*/
8905
8906/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008909
8910 @param pWDICtx: pointer to the WLAN DAL context
8911 pEventData: pointer to the event information structure
8912
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 @see
8914 @return Result of the function call
8915*/
8916WDI_Status
8917WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008918(
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 WDI_ControlBlockType* pWDICtx,
8920 WDI_EventInfoType* pEventData
8921)
8922{
8923 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8924 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 wpt_uint16 usDataOffset = 0;
8929 wpt_uint16 usSendSize = 0;
8930 wpt_uint16 uMsgSize = 0;
8931 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8936
8937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 -------------------------------------------------------------------------*/
8940 if (( NULL == pEventData ) ||
8941 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8942 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8943 {
8944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950 /*-------------------------------------------------------------------------
8951 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 -------------------------------------------------------------------------*/
8954 wpalMutexAcquire(&pWDICtx->wptMutex);
8955
8956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8960 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8961 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
8963 if ( NULL == pBSSSes )
8964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8966 "%s: Association sequence for this BSS does not yet exist - "
8967 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8968 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008969
8970 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 }
8973
8974 /*------------------------------------------------------------------------
8975 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 ------------------------------------------------------------------------*/
8978 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8979 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8981 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8982 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008983
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008985
8986 wpalMutexRelease(&pWDICtx->wptMutex);
8987
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 }
8990
8991 /*-----------------------------------------------------------------------
8992 If Post Assoc was not yet received - the current association must
8993 be in progress
8994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8997 {
8998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8999 "Association sequence for this BSS association no longer in "
9000 "progress - not allowed");
9001
9002 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 }
9005
9006 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 -----------------------------------------------------------------------*/
9009 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9010 {
9011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9012 "Post Assoc not allowed before JOIN - failing request");
9013
9014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 }
9017
9018 wpalMutexRelease(&pWDICtx->wptMutex);
9019
9020 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9021 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9022 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9027 ( usSendSize < (usDataOffset + uMsgSize )))
9028 {
9029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009030 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 }
9035
9036 /*Copy the STA parameters */
9037 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9038 &pwdiPostAssocParams->wdiSTAParams );
9039
9040 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 WDI_STATableFindStaidByAddr(pWDICtx,
9043 pwdiPostAssocParams->wdiSTAParams.macSTA,
9044 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9045 {
9046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009047 MAC_ADDRESS_STR
9048 ": This station does not exist in the WDI Station Table",
9049 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009051 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054
9055 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 pBSSSes->ucBSSIdx;
9058
9059 /*Copy the BSS parameters */
9060 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9061 &pwdiPostAssocParams->wdiBSSParams);
9062
9063 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 WDI_STATableFindStaidByAddr(pWDICtx,
9066 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 {
9069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009070 MAC_ADDRESS_STR
9071 ": This station does not exist in the WDI Station Table",
9072 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009074 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 }
9077
9078 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 pBSSSes->ucBSSIdx;
9081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082
9083 wpalMemoryCopy( pSendBuffer+usDataOffset,
9084 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9085 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009086
9087 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9088
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9090 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9091 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009092
Jeff Johnsone7245742012-09-05 17:12:55 -07009093
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096
Jeff Johnsone7245742012-09-05 17:12:55 -07009097
9098 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009101
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309102 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9108
Jeff Johnsone7245742012-09-05 17:12:55 -07009109
Jeff Johnson295189b2012-06-20 16:38:30 -07009110}/*WDI_ProcessPostAssocReq*/
9111
9112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009115
9116 @param pWDICtx: pointer to the WLAN DAL context
9117 pEventData: pointer to the event information structure
9118
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 @see
9120 @return Result of the function call
9121*/
9122WDI_Status
9123WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009124(
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 WDI_ControlBlockType* pWDICtx,
9126 WDI_EventInfoType* pEventData
9127)
9128{
9129 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9130 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 wpt_uint16 usDataOffset = 0;
9135 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9138
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9141
9142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 -------------------------------------------------------------------------*/
9145 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9146 ( NULL == pEventData->pCBfnc ))
9147 {
9148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
9154 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9155 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9156 /*-------------------------------------------------------------------------
9157 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 -------------------------------------------------------------------------*/
9160 wpalMutexAcquire(&pWDICtx->wptMutex);
9161
9162 /*------------------------------------------------------------------------
9163 Find the BSS for which the request is made and identify WDI session
9164 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9166 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 &macBSSID))
9168 {
9169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009170 "This station does not exist in the WDI Station Table %d",
9171 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9177 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9180 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9181 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009182
9183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 }
9186
9187 /*------------------------------------------------------------------------
9188 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 ------------------------------------------------------------------------*/
9191 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9192 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9194 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9195 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 }
9201
9202 wpalMutexRelease(&pWDICtx->wptMutex);
9203 /*-----------------------------------------------------------------------
9204 Get message buffer
9205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 sizeof(halDelStaReqMsg.delStaParams),
9208 &pSendBuffer, &usDataOffset, &usSendSize))||
9209 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9210 {
9211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009212 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 }
9217
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9219 wpalMemoryCopy( pSendBuffer+usDataOffset,
9220 &halDelStaReqMsg.delStaParams,
9221 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009222
9223 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009225
9226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9231
9232}/*WDI_ProcessDelSTAReq*/
9233
9234
9235/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009237==========================================================================*/
9238/**
9239 @brief Process Set BSS Key Request function (called when Main FSM
9240 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009241
9242 @param pWDICtx: pointer to the WLAN DAL context
9243 pEventData: pointer to the event information structure
9244
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 @see
9246 @return Result of the function call
9247*/
9248WDI_Status
9249WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009250(
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 WDI_ControlBlockType* pWDICtx,
9252 WDI_EventInfoType* pEventData
9253)
9254{
9255 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9256 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 wpt_uint16 usDataOffset = 0;
9261 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9264 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309265 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266
9267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9268
9269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 -------------------------------------------------------------------------*/
9272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9273 ( NULL == pEventData->pCBfnc ))
9274 {
9275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 }
9280
9281 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9282 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9283 /*-------------------------------------------------------------------------
9284 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 -------------------------------------------------------------------------*/
9287 wpalMutexAcquire(&pWDICtx->wptMutex);
9288
9289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9293 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9294 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009295
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 {
9298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9300 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 }
9305
9306 /*------------------------------------------------------------------------
9307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 ------------------------------------------------------------------------*/
9310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9313 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9314 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 }
9320
9321
9322 wpalMutexRelease(&pWDICtx->wptMutex);
9323 /*-----------------------------------------------------------------------
9324 Get message buffer
9325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9328 &pSendBuffer, &usDataOffset, &usSendSize))||
9329 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9330 {
9331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009332 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
9337
9338 /*-----------------------------------------------------------------------
9339 Copy the Key parameters into the HAL message
9340 -----------------------------------------------------------------------*/
9341
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009343
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9346
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9349
9350 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9351 keyIndex++)
9352 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9355 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9356 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9357 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9358 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309359
9360 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9361 {
9362 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9363 {
9364 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9365 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9366 }
9367
9368 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9369 {
9370 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9371 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9372 }
9373
9374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9375 "%s: Negated Keys", __func__);
9376 }
9377 else
9378 {
9379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9380 "%s: No change in Keys", __func__);
9381 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309384 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9385 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9386 WDI_MAX_KEY_LENGTH);
9387 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309392 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009393
9394 wpalMemoryCopy( pSendBuffer+usDataOffset,
9395 &halSetBssKeyReqMsg.setBssKeyParams,
9396 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009397
9398 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009400
9401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9405 wdiSetBSSKeyRspCb, pEventData->pUserData,
9406 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009407
9408}/*WDI_ProcessSetBssKeyReq*/
9409
9410/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009413
9414 @param pWDICtx: pointer to the WLAN DAL context
9415 pEventData: pointer to the event information structure
9416
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 @see
9418 @return Result of the function call
9419*/
9420WDI_Status
9421WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009422(
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 WDI_ControlBlockType* pWDICtx,
9424 WDI_EventInfoType* pEventData
9425)
9426{
9427 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9428 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 wpt_uint16 usDataOffset = 0;
9433 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9437
9438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 -------------------------------------------------------------------------*/
9441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9442 ( NULL == pEventData->pCBfnc ))
9443 {
9444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 }
9449
9450 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9451 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9452 /*-------------------------------------------------------------------------
9453 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 -------------------------------------------------------------------------*/
9456 wpalMutexAcquire(&pWDICtx->wptMutex);
9457
9458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9462 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9463 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009464
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 {
9467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9469 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009470
9471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 }
9474
9475 /*------------------------------------------------------------------------
9476 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 ------------------------------------------------------------------------*/
9479 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9480 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9482 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9483 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009484
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 }
9489
9490
9491 wpalMutexRelease(&pWDICtx->wptMutex);
9492
9493 /*-----------------------------------------------------------------------
9494 Get message buffer
9495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9498 &pSendBuffer, &usDataOffset, &usSendSize))||
9499 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9500 {
9501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009502 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 }
9507 /*-----------------------------------------------------------------------
9508 Copy the Key parameters into the HAL message
9509 -----------------------------------------------------------------------*/
9510 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9511
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9514
9515 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 wpalMemoryCopy( pSendBuffer+usDataOffset,
9521 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9522 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009523
9524 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526
9527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009533}/*WDI_ProcessRemoveBssKeyReq*/
9534
9535/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009538
9539 @param pWDICtx: pointer to the WLAN DAL context
9540 pEventData: pointer to the event information structure
9541
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 @see
9543 @return Result of the function call
9544*/
9545WDI_Status
9546WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009547(
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 WDI_ControlBlockType* pWDICtx,
9549 WDI_EventInfoType* pEventData
9550)
9551{
9552 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9553 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9554 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 wpt_uint16 usDataOffset = 0;
9557 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9562 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309563 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564
9565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9566
9567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -------------------------------------------------------------------------*/
9570 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9571 ( NULL == pEventData->pCBfnc ))
9572 {
9573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 }
9578
9579 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9580 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9581 /*-------------------------------------------------------------------------
9582 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 -------------------------------------------------------------------------*/
9585 wpalMutexAcquire(&pWDICtx->wptMutex);
9586
9587 /*------------------------------------------------------------------------
9588 Find the BSS for which the request is made and identify WDI session
9589 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9591 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 &macBSSID))
9593 {
9594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009595 "This station does not exist in the WDI Station Table %d",
9596 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 }
9600
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9602 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9605 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9606 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
9608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009611
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 /*------------------------------------------------------------------------
9613 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 ------------------------------------------------------------------------*/
9616 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9617 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9619 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9620 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009621
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 }
9626
9627
9628 wpalMutexRelease(&pWDICtx->wptMutex);
9629 /*-----------------------------------------------------------------------
9630 Get message buffer
9631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9634 &pSendBuffer, &usDataOffset, &usSendSize))||
9635 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9636 {
9637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009638 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 }
9643 /*-----------------------------------------------------------------------
9644 Copy the STA Key parameters into the HAL message
9645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9648
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9651
9652 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9653
9654 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9655
9656 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9657
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9659 keyIndex++)
9660 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9663 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9664 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9665 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9666 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309667
9668 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9669 {
9670 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9671 {
9672 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9673 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9674 }
9675
9676 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9677 {
9678 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9679 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9680 }
9681
9682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9683 "%s: Negated Keys", __func__);
9684 }
9685 else
9686 {
9687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9688 "%s: No change in Keys", __func__);
9689 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309692 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9693 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9694 WDI_MAX_KEY_LENGTH);
9695 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309700 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009701
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 wpalMemoryCopy( pSendBuffer+usDataOffset,
9703 &halSetStaKeyReqMsg.setStaKeyParams,
9704 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009705
9706 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309708 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9713 wdiSetSTAKeyRspCb, pEventData->pUserData,
9714 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715
9716}/*WDI_ProcessSetSTAKeyReq*/
9717
9718/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009721
9722 @param pWDICtx: pointer to the WLAN DAL context
9723 pEventData: pointer to the event information structure
9724
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 @see
9726 @return Result of the function call
9727*/
9728WDI_Status
9729WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009730(
Jeff Johnson295189b2012-06-20 16:38:30 -07009731 WDI_ControlBlockType* pWDICtx,
9732 WDI_EventInfoType* pEventData
9733)
9734{
9735 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9736 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9737 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 wpt_uint16 usDataOffset = 0;
9740 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 wpt_macAddr macBSSID;
9743 wpt_uint8 ucCurrentBSSSesIdx;
9744 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9746
9747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 -------------------------------------------------------------------------*/
9750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9751 ( NULL == pEventData->pCBfnc ))
9752 {
9753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 }
9758
9759 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9760 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9761 /*-------------------------------------------------------------------------
9762 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 -------------------------------------------------------------------------*/
9765 wpalMutexAcquire(&pWDICtx->wptMutex);
9766
9767 /*------------------------------------------------------------------------
9768 Find the BSS for which the request is made and identify WDI session
9769 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9771 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 &macBSSID))
9773 {
9774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009775 "This station does not exist in the WDI Station Table %d",
9776 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 }
9780
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9782 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9785 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9786 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009787
9788 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009791
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 /*------------------------------------------------------------------------
9793 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 ------------------------------------------------------------------------*/
9796 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9797 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9799 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9800 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009801
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 }
9806
9807
9808
9809 wpalMutexRelease(&pWDICtx->wptMutex);
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
9812 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9815 &pSendBuffer, &usDataOffset, &usSendSize))||
9816 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009819 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 }
9824
9825 /*-----------------------------------------------------------------------
9826 Copy the Key parameters into the HAL message
9827 -----------------------------------------------------------------------*/
9828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9831
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9834
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9837
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9840
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 wpalMemoryCopy( pSendBuffer+usDataOffset,
9842 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9843 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
9845 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847
9848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009854
9855}/*WDI_ProcessRemoveSTAKeyReq*/
9856
9857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009860
9861 @param pWDICtx: pointer to the WLAN DAL context
9862 pEventData: pointer to the event information structure
9863
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 @see
9865 @return Result of the function call
9866*/
9867WDI_Status
9868WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009869(
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 WDI_ControlBlockType* pWDICtx,
9871 WDI_EventInfoType* pEventData
9872)
9873{
9874 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9875 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9876 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 wpt_uint16 usDataOffset = 0;
9879 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9884 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309885 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009886
9887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9888
9889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 -------------------------------------------------------------------------*/
9892 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9893 ( NULL == pEventData->pCBfnc ))
9894 {
9895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 }
9900
9901 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9902 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9903 /*-------------------------------------------------------------------------
9904 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 -------------------------------------------------------------------------*/
9907 wpalMutexAcquire(&pWDICtx->wptMutex);
9908
9909 /*------------------------------------------------------------------------
9910 Find the BSS for which the request is made and identify WDI session
9911 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9913 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 &macBSSID))
9915 {
9916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009917 "This station does not exist in the WDI Station Table %d",
9918 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 }
9922
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9924 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 {
9926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009927 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009929
9930 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009933
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 /*------------------------------------------------------------------------
9935 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 ------------------------------------------------------------------------*/
9938 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9939 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9941 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9942 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009943
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 }
9948
9949
9950 wpalMutexRelease(&pWDICtx->wptMutex);
9951 /*-----------------------------------------------------------------------
9952 Get message buffer
9953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9956 &pSendBuffer, &usDataOffset, &usSendSize))||
9957 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9958 {
9959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009960 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 }
9965 /*-----------------------------------------------------------------------
9966 Copy the STA Key parameters into the HAL message
9967 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9970
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9973
9974 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9975
9976 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9977
9978 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9979
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9981 keyIndex++)
9982 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9985 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9986 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9987 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9988 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309989
9990 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9991 {
9992 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9993 {
9994 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9995 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9996 }
9997
9998 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9999 {
10000 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10001 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10002 }
10003
10004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10005 "%s: Negated Keys", __func__);
10006 }
10007 else
10008 {
10009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10010 "%s: No change in Keys", __func__);
10011 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010014 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10015 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10016 WDI_MAX_KEY_LENGTH);
10017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010022 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 wpalMemoryCopy( pSendBuffer+usDataOffset,
10024 &halSetStaKeyReqMsg.setStaKeyParams,
10025 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010026
10027 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10034 wdiSetSTAKeyRspCb, pEventData->pUserData,
10035 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010036
10037}/*WDI_ProcessSetSTABcastKeyReq*/
10038
10039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010041 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010042
10043 @param pWDICtx: pointer to the WLAN DAL context
10044 pEventData: pointer to the event information structure
10045
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 @see
10047 @return Result of the function call
10048*/
10049WDI_Status
10050WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010051(
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_ControlBlockType* pWDICtx,
10053 WDI_EventInfoType* pEventData
10054)
10055{
10056 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10057 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10058 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 wpt_uint16 usDataOffset = 0;
10061 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 wpt_macAddr macBSSID;
10064 wpt_uint8 ucCurrentBSSSesIdx;
10065 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10067
10068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 -------------------------------------------------------------------------*/
10071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10072 ( NULL == pEventData->pCBfnc ))
10073 {
10074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 }
10079
10080 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10081 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10082 /*-------------------------------------------------------------------------
10083 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 -------------------------------------------------------------------------*/
10086 wpalMutexAcquire(&pWDICtx->wptMutex);
10087
10088 /*------------------------------------------------------------------------
10089 Find the BSS for which the request is made and identify WDI session
10090 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10092 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 &macBSSID))
10094 {
10095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010096 "This station does not exist in the WDI Station Table %d",
10097 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 }
10101
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10103 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10106 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10107 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010108
10109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010111 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010112
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 /*------------------------------------------------------------------------
10114 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 ------------------------------------------------------------------------*/
10117 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10118 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10120 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10121 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010122
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 }
10127
10128
10129
10130 wpalMutexRelease(&pWDICtx->wptMutex);
10131 /*-----------------------------------------------------------------------
10132 Get message buffer
10133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10136 &pSendBuffer, &usDataOffset, &usSendSize))||
10137 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10138 {
10139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010140 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 }
10145
10146 /*-----------------------------------------------------------------------
10147 Copy the Key parameters into the HAL message
10148 -----------------------------------------------------------------------*/
10149
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10152
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10155
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10158
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10161
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 wpalMemoryCopy( pSendBuffer+usDataOffset,
10163 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10164 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010165
10166 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
10169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010175
10176}/*WDI_ProcessRemoveSTABcastKeyReq*/
10177
10178/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010180==========================================================================*/
10181/**
10182 @brief Process Add TSpec Request function (called when Main FSM
10183 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010184
10185 @param pWDICtx: pointer to the WLAN DAL context
10186 pEventData: pointer to the event information structure
10187
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 @see
10189 @return Result of the function call
10190*/
10191WDI_Status
10192WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010193(
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 WDI_ControlBlockType* pWDICtx,
10195 WDI_EventInfoType* pEventData
10196)
10197{
10198 WDI_AddTSReqParamsType* pwdiAddTSParams;
10199 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 wpt_uint16 usDataOffset = 0;
10204 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 wpt_macAddr macBSSID;
10207 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010208
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10210
10211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 -------------------------------------------------------------------------*/
10214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10215 ( NULL == pEventData->pCBfnc ))
10216 {
10217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 }
10222
10223 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10224 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10225 /*-------------------------------------------------------------------------
10226 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 -------------------------------------------------------------------------*/
10229 wpalMutexAcquire(&pWDICtx->wptMutex);
10230
10231 /*------------------------------------------------------------------------
10232 Find the BSS for which the request is made and identify WDI session
10233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10235 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 &macBSSID))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010239 "This station does not exist in the WDI Station Table %d",
10240 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 }
10244
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10246 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10249 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10250 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010255
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 /*------------------------------------------------------------------------
10257 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 ------------------------------------------------------------------------*/
10260 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10261 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10263 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10264 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 }
10270
10271 wpalMutexRelease(&pWDICtx->wptMutex);
10272 /*-----------------------------------------------------------------------
10273 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10277 sizeof(halAddTsParams),
10278 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 &usSendSize))||
10280 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10281 {
10282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010283 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 }
10288
10289 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10290 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10291
10292 //TSPEC IE
10293 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10294 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10325
10326 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10341
10342 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10347
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 wpalMemoryCopy( pSendBuffer+usDataOffset,
10349 &halAddTsParams,
10350 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010351
10352 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354
10355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010361}/*WDI_ProcessAddTSpecReq*/
10362
10363
10364/**
10365 @brief Process Del TSpec Request function (called when Main FSM
10366 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010367
10368 @param pWDICtx: pointer to the WLAN DAL context
10369 pEventData: pointer to the event information structure
10370
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 @see
10372 @return Result of the function call
10373*/
10374WDI_Status
10375WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010376(
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 WDI_ControlBlockType* pWDICtx,
10378 WDI_EventInfoType* pEventData
10379)
10380{
10381 WDI_DelTSReqParamsType* pwdiDelTSParams;
10382 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 wpt_uint16 usDataOffset = 0;
10387 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10390
10391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 -------------------------------------------------------------------------*/
10394 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10395 ( NULL == pEventData->pCBfnc ))
10396 {
10397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 }
10402
10403 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10404 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10405
10406 /*-------------------------------------------------------------------------
10407 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 -------------------------------------------------------------------------*/
10410 wpalMutexAcquire(&pWDICtx->wptMutex);
10411
10412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10416 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10417 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010418
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10422 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10423 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10424
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 }
10428
10429 /*------------------------------------------------------------------------
10430 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 ------------------------------------------------------------------------*/
10433 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10436 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10437 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010438
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 }
10443
10444
10445 wpalMutexRelease(&pWDICtx->wptMutex);
10446 /*-----------------------------------------------------------------------
10447 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10452 &pSendBuffer, &usDataOffset, &usSendSize))||
10453 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10454 {
10455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010456 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 }
10461
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 wpalMemoryCopy( pSendBuffer+usDataOffset,
10463 &pwdiDelTSParams->wdiDelTSInfo,
10464 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010465
10466 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010468
10469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10473 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010474}/*WDI_ProcessDelTSpecReq*/
10475
10476/**
10477 @brief Process Update EDCA Params Request function (called when
10478 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010479
10480 @param pWDICtx: pointer to the WLAN DAL context
10481 pEventData: pointer to the event information structure
10482
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 @see
10484 @return Result of the function call
10485*/
10486WDI_Status
10487WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010488(
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 WDI_ControlBlockType* pWDICtx,
10490 WDI_EventInfoType* pEventData
10491)
10492{
10493 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10494 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 wpt_uint16 usDataOffset = 0;
10499 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10502
10503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 -------------------------------------------------------------------------*/
10506 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10507 ( NULL == pEventData->pCBfnc ))
10508 {
10509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 }
10514
10515 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10516 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10517 /*-------------------------------------------------------------------------
10518 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 -------------------------------------------------------------------------*/
10521 wpalMutexAcquire(&pWDICtx->wptMutex);
10522
10523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10527 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10528 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010529
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 {
10532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10534 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
10536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 }
10539
10540 /*------------------------------------------------------------------------
10541 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 ------------------------------------------------------------------------*/
10544 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10545 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10547 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10548 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 }
10554
10555
10556 wpalMutexRelease(&pWDICtx->wptMutex);
10557 /*-----------------------------------------------------------------------
10558 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10563 &pSendBuffer, &usDataOffset, &usSendSize))||
10564 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10565 {
10566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010567 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 }
10572
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 wpalMemoryCopy( pSendBuffer+usDataOffset,
10574 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10575 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010576
10577 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010579
10580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10584 wdiUpdateEDCARspCb, pEventData->pUserData,
10585 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010586}/*WDI_ProcessUpdateEDCAParamsReq*/
10587
10588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010591
10592 @param pWDICtx: pointer to the WLAN DAL context
10593 pEventData: pointer to the event information structure
10594
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 @see
10596 @return Result of the function call
10597*/
10598WDI_Status
10599WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010600(
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 WDI_ControlBlockType* pWDICtx,
10602 WDI_EventInfoType* pEventData
10603)
10604{
10605 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10606 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 wpt_uint16 usDataOffset = 0;
10611 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 wpt_macAddr macBSSID;
10614
10615 tAddBASessionReqMsg halAddBASessionReq;
10616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10617
10618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 -------------------------------------------------------------------------*/
10621 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10622 ( NULL == pEventData->pCBfnc ))
10623 {
10624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 }
10629
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10634 /*-------------------------------------------------------------------------
10635 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 -------------------------------------------------------------------------*/
10638 wpalMutexAcquire(&pWDICtx->wptMutex);
10639
10640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10644 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 &macBSSID))
10646 {
10647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010648 "This station does not exist in the WDI Station Table %d",
10649 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 }
10653
10654
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010656
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10660 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10661 __func__, MAC_ADDR_ARRAY(macBSSID));
10662
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 }
10666
10667 /*------------------------------------------------------------------------
10668 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 ------------------------------------------------------------------------*/
10671 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10674 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10675 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010676
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 }
10681
10682
10683 wpalMutexRelease(&pWDICtx->wptMutex);
10684 /*-----------------------------------------------------------------------
10685 Get message buffer
10686 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10688 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 sizeof(halAddBASessionReq.addBASessionParams),
10690 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10693 {
10694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010695 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 }
10700
10701 halAddBASessionReq.addBASessionParams.staIdx =
10702 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10703 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10704 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10705 WDI_MAC_ADDR_LEN);
10706 halAddBASessionReq.addBASessionParams.baTID =
10707 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10708 halAddBASessionReq.addBASessionParams.baPolicy =
10709 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10710 halAddBASessionReq.addBASessionParams.baBufferSize =
10711 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10712 halAddBASessionReq.addBASessionParams.baTimeout =
10713 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10714 halAddBASessionReq.addBASessionParams.baSSN =
10715 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10716 halAddBASessionReq.addBASessionParams.baDirection =
10717 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10718
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 wpalMemoryCopy( pSendBuffer+usDataOffset,
10720 &halAddBASessionReq.addBASessionParams,
10721 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010722
10723 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010725
10726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10730 wdiAddBASessionRspCb, pEventData->pUserData,
10731 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010732}/*WDI_ProcessAddBASessionReq*/
10733
10734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010737
10738 @param pWDICtx: pointer to the WLAN DAL context
10739 pEventData: pointer to the event information structure
10740
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 @see
10742 @return Result of the function call
10743*/
10744WDI_Status
10745WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010746(
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 WDI_ControlBlockType* pWDICtx,
10748 WDI_EventInfoType* pEventData
10749)
10750{
10751 WDI_DelBAReqParamsType* pwdiDelBAParams;
10752 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 wpt_uint16 usDataOffset = 0;
10757 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 wpt_macAddr macBSSID;
10760 tDelBAParams halDelBAparam;
10761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10762
10763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 -------------------------------------------------------------------------*/
10766 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10767 ( NULL == pEventData->pCBfnc ))
10768 {
10769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 }
10774
10775 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10776 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10777 /*-------------------------------------------------------------------------
10778 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 -------------------------------------------------------------------------*/
10781 wpalMutexAcquire(&pWDICtx->wptMutex);
10782
10783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10787 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 &macBSSID))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010791 "This station does not exist in the WDI Station Table %d",
10792 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 }
10796
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010798
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10802 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10803 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010804
10805 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 }
10808
10809 /*------------------------------------------------------------------------
10810 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 ------------------------------------------------------------------------*/
10813 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10814 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10816 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10817 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010818
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 }
10823
10824 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 sizeof(halDelBAparam),
10827 &pSendBuffer, &usDataOffset, &usSendSize))||
10828 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10829 {
10830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010831 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 }
10836
10837 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10838 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10839 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10840
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 wpalMemoryCopy( pSendBuffer+usDataOffset,
10842 &halDelBAparam,
10843 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010844
10845 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010847
10848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10852 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010853}/*WDI_ProcessDelBAReq*/
10854
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010855#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010856
10857WDI_Status
10858WDI_ProcessTSMStatsReq
10859(
10860 WDI_ControlBlockType* pWDICtx,
10861 WDI_EventInfoType* pEventData
10862)
10863{
10864 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10865 WDI_TsmRspCb wdiTSMRspCb;
10866 wpt_uint8 ucCurrentBSSSesIdx = 0;
10867 WDI_BSSSessionType* pBSSSes = NULL;
10868 wpt_uint8* pSendBuffer = NULL;
10869 wpt_uint16 usDataOffset = 0;
10870 wpt_uint16 usSendSize = 0;
10871 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10872 tTsmStatsParams halTsmStatsReqParams = {0};
10873
10874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10875
10876 /*-------------------------------------------------------------------------
10877 Sanity check
10878 -------------------------------------------------------------------------*/
10879 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10880 ( NULL == pEventData->pCBfnc ))
10881 {
10882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 WDI_ASSERT(0);
10885 return WDI_STATUS_E_FAILURE;
10886 }
10887
10888 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10889 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10890 /*-------------------------------------------------------------------------
10891 Check to see if we are in the middle of an association, if so queue, if
10892 not it means it is free to process request
10893 -------------------------------------------------------------------------*/
10894 wpalMutexAcquire(&pWDICtx->wptMutex);
10895
10896 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10897 if ( NULL == pBSSSes )
10898 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10900 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10901 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010902
10903 wpalMutexRelease(&pWDICtx->wptMutex);
10904 return WDI_STATUS_E_NOT_ALLOWED;
10905 }
10906
10907 /*------------------------------------------------------------------------
10908 Check if this BSS is being currently processed or queued,
10909 if queued - queue the new request as well
10910 ------------------------------------------------------------------------*/
10911 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10912 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010914 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010916
10917 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10918 wpalMutexRelease(&pWDICtx->wptMutex);
10919 return wdiStatus;
10920 }
10921
10922 wpalMutexRelease(&pWDICtx->wptMutex);
10923 /*-----------------------------------------------------------------------
10924 Get message buffer
10925 ! TO DO : proper conversion into the HAL Message Request Format
10926 -----------------------------------------------------------------------*/
10927 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10928 sizeof(halTsmStatsReqParams),
10929 &pSendBuffer, &usDataOffset, &usSendSize))||
10930 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10931 {
10932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010933 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 pEventData, pwdiTSMParams, wdiTSMRspCb);
10935 WDI_ASSERT(0);
10936 return WDI_STATUS_E_FAILURE;
10937 }
10938
10939 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10940 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10941 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10942 WDI_MAC_ADDR_LEN);
10943 wpalMemoryCopy( pSendBuffer+usDataOffset,
10944 &halTsmStatsReqParams,
10945 sizeof(halTsmStatsReqParams));
10946
10947 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10948 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10949
10950 /*-------------------------------------------------------------------------
10951 Send TSM Stats Request to HAL
10952 -------------------------------------------------------------------------*/
10953 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10954 wdiTSMRspCb, pEventData->pUserData,
10955 WDI_TSM_STATS_RESP);
10956}/*WDI_ProcessTSMStatsReq*/
10957
10958#endif
10959
10960
10961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010964
10965 @param pWDICtx: pointer to the WLAN DAL context
10966 pEventData: pointer to the event information structure
10967
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 @see
10969 @return Result of the function call
10970*/
10971WDI_Status
10972WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010973(
Jeff Johnson295189b2012-06-20 16:38:30 -070010974 WDI_ControlBlockType* pWDICtx,
10975 WDI_EventInfoType* pEventData
10976)
10977{
10978 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10979 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 wpt_uint16 usDataOffset = 0;
10982 wpt_uint16 usSendSize = 0;
10983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10984
10985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 -------------------------------------------------------------------------*/
10988 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10989 ( NULL == pEventData->pCBfnc ))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 }
10996
10997 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10998 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10999 /*-----------------------------------------------------------------------
11000 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11005 &pSendBuffer, &usDataOffset, &usSendSize))||
11006 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11007 {
11008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011009 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 }
11014
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 wpalMemoryCopy( pSendBuffer+usDataOffset,
11016 &pwdiFlushAcParams->wdiFlushAcInfo,
11017 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011018
11019 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011021
11022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11026 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011027}/*WDI_ProcessFlushAcReq*/
11028
11029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011032
11033 @param pWDICtx: pointer to the WLAN DAL context
11034 pEventData: pointer to the event information structure
11035
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 @see
11037 @return Result of the function call
11038*/
11039WDI_Status
11040WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011041(
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 WDI_ControlBlockType* pWDICtx,
11043 WDI_EventInfoType* pEventData
11044)
11045{
11046 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11047 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 wpt_uint16 usDataOffset = 0;
11050 wpt_uint16 usSendSize = 0;
11051
11052 tBtAmpEventMsg haltBtAmpEventMsg;
11053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11054
11055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 -------------------------------------------------------------------------*/
11058 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11059 ( NULL == pEventData->pCBfnc ))
11060 {
11061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 }
11066
11067 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11068 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11069 /*-----------------------------------------------------------------------
11070 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11075 &pSendBuffer, &usDataOffset, &usSendSize))||
11076 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11077 {
11078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011079 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 }
11084
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 wpalMemoryCopy( pSendBuffer+usDataOffset,
11088 &haltBtAmpEventMsg.btAmpEventParams,
11089 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011090
11091 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093
11094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11098 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011099}/*WDI_ProcessBtAmpEventReq*/
11100
11101/**
11102 @brief Process Add STA self Request function (called when Main FSM
11103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011113(
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11119 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 wpt_uint16 usDataOffset = 0;
11122 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011123 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11125
11126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 -------------------------------------------------------------------------*/
11129 if (( NULL == pEventData ) ||
11130 ( NULL == pEventData->pEventData) ||
11131 ( NULL == pEventData->pCBfnc))
11132 {
11133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 }
11138
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11143 /*-----------------------------------------------------------------------
11144 Get message buffer
11145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11147 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011148 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011149 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011150 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 {
11152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011153 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011157 }
11158
11159 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11162
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011164 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11165 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11166 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11167 {
11168 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11169 }
11170 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11171 VOS_P2P_CLIENT_MODE) ||
11172 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11173 VOS_P2P_DEVICE))
11174 {
11175 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011178 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011179
11180 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011182
11183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011184 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11187 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11188 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011189}/*WDI_ProcessAddSTASelfReq*/
11190
11191
11192
11193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011196
11197 @param pWDICtx: pointer to the WLAN DAL context
11198 pEventData: pointer to the event information structure
11199
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 @see
11201 @return Result of the function call
11202*/
11203WDI_Status
11204WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011205(
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 WDI_ControlBlockType* pWDICtx,
11207 WDI_EventInfoType* pEventData
11208)
11209{
11210 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11211 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 wpt_uint16 usDataOffset = 0;
11214 wpt_uint16 usSendSize = 0;
11215 tDelStaSelfParams halSetDelSelfSTAParams;
11216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11217
11218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 -------------------------------------------------------------------------*/
11221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11222 ( NULL == pEventData->pCBfnc ))
11223 {
11224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 }
11229
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11232 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11233
11234 /*-----------------------------------------------------------------------
11235 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11240 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11243 {
11244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011245 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011246 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 }
11250
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11253
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11255 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011256
11257 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011259
11260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11264 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 WDI_DEL_STA_SELF_RESP);
11266
11267}
11268
Jeff Johnsone7245742012-09-05 17:12:55 -070011269#ifdef FEATURE_OEM_DATA_SUPPORT
11270/**
11271 @brief Process Start Oem Data Request function (called when Main
11272 FSM allows it)
11273
11274 @param pWDICtx: pointer to the WLAN DAL context
11275 pEventData: pointer to the event information structure
11276
11277 @see
11278 @return Result of the function call
11279*/
11280WDI_Status
11281WDI_ProcessStartOemDataReq
11282(
11283 WDI_ControlBlockType* pWDICtx,
11284 WDI_EventInfoType* pEventData
11285)
11286{
11287 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11288 WDI_oemDataRspCb wdiOemDataRspCb;
11289 wpt_uint8* pSendBuffer = NULL;
11290 wpt_uint16 usDataOffset = 0;
11291 wpt_uint16 usSendSize = 0;
11292 wpt_uint16 reqLen;
11293 tStartOemDataReqParams* halStartOemDataReqParams;
11294
11295 /*-------------------------------------------------------------------------
11296 Sanity check
11297 -------------------------------------------------------------------------*/
11298 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11299 ( NULL == pEventData->pCBfnc ))
11300 {
11301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011302 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 WDI_ASSERT(0);
11304 return WDI_STATUS_E_FAILURE;
11305 }
11306
11307 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11308 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11309
11310 /*-----------------------------------------------------------------------
11311 Get message buffer
11312 -----------------------------------------------------------------------*/
11313
11314 reqLen = sizeof(tStartOemDataReqParams);
11315
11316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11317 WDI_START_OEM_DATA_REQ, reqLen,
11318 &pSendBuffer, &usDataOffset, &usSendSize))||
11319 (usSendSize < (usDataOffset + reqLen)))
11320 {
11321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011322 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11324 WDI_ASSERT(0);
11325 return WDI_STATUS_E_FAILURE;
11326 }
11327
11328 //copying WDI OEM DATA REQ PARAMS to shared memory
11329 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11330
11331 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11332 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11333
11334 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11335 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11336
11337 /*-------------------------------------------------------------------------
11338 Send Start Request to HAL
11339 -------------------------------------------------------------------------*/
11340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11341 wdiOemDataRspCb, pEventData->pUserData,
11342 WDI_START_OEM_DATA_RESP);
11343}/*WDI_ProcessStartOemDataReq*/
11344#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011345
11346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011349
11350 @param pWDICtx: pointer to the WLAN DAL context
11351 pEventData: pointer to the event information structure
11352
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 @see
11354 @return Result of the function call
11355*/
11356WDI_Status
11357WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011358(
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 WDI_ControlBlockType* pWDICtx,
11360 WDI_EventInfoType* pEventData
11361)
11362{
11363 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11364 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 wpt_uint16 usDataOffset = 0;
11367 wpt_uint16 usSendSize = 0;
11368 tHalWlanHostResumeReqParam halResumeReqParams;
11369
11370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11371
11372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 -------------------------------------------------------------------------*/
11375 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11376 ( NULL == pEventData->pCBfnc ))
11377 {
11378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011379 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 }
11383
11384 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11385 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11386
11387 /*-----------------------------------------------------------------------
11388 Get message buffer
11389 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11392 &pSendBuffer, &usDataOffset, &usSendSize))||
11393 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11394 {
11395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011396 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 }
11401
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011404
11405 wpalMemoryCopy( pSendBuffer+usDataOffset,
11406 &halResumeReqParams,
11407 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011408
11409 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011411
11412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11416 wdiHostResumeRspCb, pEventData->pUserData,
11417 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011418}/*WDI_ProcessHostResumeReq*/
11419
11420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011423
11424 @param pWDICtx: pointer to the WLAN DAL context
11425 pEventData: pointer to the event information structure
11426
Jeff Johnson295189b2012-06-20 16:38:30 -070011427 @see
11428 @return Result of the function call
11429*/
11430WDI_Status
11431WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011432(
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 WDI_ControlBlockType* pWDICtx,
11434 WDI_EventInfoType* pEventData
11435)
11436{
11437 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11438 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 wpt_uint16 usDataOffset = 0;
11441 wpt_uint16 usSendSize = 0;
11442 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11444
11445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 -------------------------------------------------------------------------*/
11448 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11449 ( NULL == pEventData->pCBfnc ))
11450 {
11451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011452 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 }
11456
11457 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11458 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 /*-----------------------------------------------------------------------
11461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 sizeof(halTxPerTrackingReqParam),
11466 &pSendBuffer, &usDataOffset, &usSendSize))||
11467 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11468 {
11469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011470 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011475
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11477 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11478 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11479 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011480
11481 wpalMemoryCopy( pSendBuffer+usDataOffset,
11482 &halTxPerTrackingReqParam,
11483 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011484
11485 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011487
11488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11492 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011493}/*WDI_ProcessSetTxPerTrackingReq*/
11494
11495/*=========================================================================
11496 Indications
11497=========================================================================*/
11498
11499/**
11500 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011501
11502 @param pWDICtx: pointer to the WLAN DAL context
11503 pEventData: pointer to the event information structure
11504
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 @see
11506 @return Result of the function call
11507*/
11508WDI_Status
11509WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011510(
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 WDI_ControlBlockType* pWDICtx,
11512 WDI_EventInfoType* pEventData
11513)
11514{
11515 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 wpt_uint16 usDataOffset = 0;
11518 wpt_uint16 usSendSize = 0;
11519 WDI_Status wdiStatus;
11520 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11522
11523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 -------------------------------------------------------------------------*/
11526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11527 {
11528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011529 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 }
11533
11534 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11535
11536 /*-----------------------------------------------------------------------
11537 Get message buffer
11538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11540 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halWlanSuspendIndparams),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11546 "Unable to get send buffer in Suspend Ind ");
11547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 }
11550
11551 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11552 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11553
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011555 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011556
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11558 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011559
11560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 -------------------------------------------------------------------------*/
11563 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011565
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11568}/*WDI_ProcessHostSuspendInd*/
11569
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011570
11571
11572/**
11573 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11574
11575 @param pWDICtx: pointer to the WLAN DAL context
11576 pEventData: pointer to the event information structure
11577
11578 @see
11579 @return Result of the function call
11580*/
11581WDI_Status
11582WDI_ProcessTrafficStatsInd
11583(
11584 WDI_ControlBlockType* pWDICtx,
11585 WDI_EventInfoType* pEventData
11586)
11587{
11588 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11589 wpt_uint8* pSendBuffer = NULL;
11590 wpt_uint16 usDataOffset = 0;
11591 wpt_uint16 usSendSize = 0;
11592 WDI_Status wdiStatus;
11593 tStatsClassBIndParams* pStatsClassBIndParams;
11594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11595
11596 /*-------------------------------------------------------------------------
11597 Sanity check
11598 -------------------------------------------------------------------------*/
11599 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11600 {
11601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11602 "%s: Invalid parameters in Traffic Stats ind",__func__);
11603 WDI_ASSERT(0);
11604 return WDI_STATUS_E_FAILURE;
11605 }
11606
11607 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11608
11609 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11610 {
11611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11612 "%s: Invalid parameters in Traffic Stats ind",__func__);
11613 WDI_ASSERT(0);
11614 return WDI_STATUS_E_FAILURE;
11615 }
11616
11617 /*-----------------------------------------------------------------------
11618 Get message buffer
11619 -----------------------------------------------------------------------*/
11620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11621 WDI_TRAFFIC_STATS_IND,
11622 sizeof(tStatsClassBIndParams),
11623 &pSendBuffer, &usDataOffset, &usSendSize))||
11624 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11625 {
11626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11627 "Unable to get send buffer in Traffic Stats Ind ");
11628 WDI_ASSERT(0);
11629 return WDI_STATUS_E_FAILURE;
11630 }
11631
11632 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11633
11634 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11635
11636 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11637 pTrafficStatsIndParams->pTrafficStats,
11638 pTrafficStatsIndParams->length);
11639
11640 /*-------------------------------------------------------------------------
11641 Send Suspend Request to HAL
11642 -------------------------------------------------------------------------*/
11643 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11644 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11645
11646 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11647 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11648}/*WDI_ProcessTrafficStatsInd*/
11649
Chet Lanctot186b5732013-03-18 10:26:30 -070011650#ifdef WLAN_FEATURE_11W
11651/**
11652 @brief Process Exclude Unencrypted Indications function (called
11653 when Main FSM allows it)
11654
11655 @param pWDICtx: pointer to the WLAN DAL context
11656 pEventData: pointer to the event information structure
11657
11658 @see
11659 @return Result of the function call
11660*/
11661WDI_Status
11662WDI_ProcessExcludeUnencryptInd
11663(
11664 WDI_ControlBlockType* pWDICtx,
11665 WDI_EventInfoType* pEventData
11666)
11667{
11668 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11669 wpt_uint8* pSendBuffer = NULL;
11670 wpt_uint16 usDataOffset = 0;
11671 wpt_uint16 usSendSize = 0;
11672 WDI_Status wdiStatus;
11673 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11675
11676 /*-------------------------------------------------------------------------
11677 Sanity check
11678 -------------------------------------------------------------------------*/
11679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11680 {
11681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11682 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11683 WDI_ASSERT(0);
11684 return WDI_STATUS_E_FAILURE;
11685 }
11686
11687 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11688
11689 /*-----------------------------------------------------------------------
11690 Get message buffer
11691 -----------------------------------------------------------------------*/
11692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11693 WDI_EXCLUDE_UNENCRYPTED_IND,
11694 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11695 &pSendBuffer, &usDataOffset, &usSendSize))||
11696 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11697 {
11698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11699 "Unable to get send buffer in Exclude Unencrypted Ind ");
11700 WDI_ASSERT(0);
11701 return WDI_STATUS_E_FAILURE;
11702 }
11703
11704 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11705
11706 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11707
11708 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11709 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11710
11711 /*-------------------------------------------------------------------------
11712 Send Suspend Request to HAL
11713 -------------------------------------------------------------------------*/
11714 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11715 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11716
11717 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11718 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11719}/*WDI_ProcessExcludeUnencryptInd*/
11720#endif
11721
Yue Mab9c86f42013-08-14 15:59:08 -070011722/**
11723 @brief Process Add Periodic Tx Pattern Indication function (called when
11724 Main FSM allows it)
11725
11726 @param pWDICtx: pointer to the WLAN DAL context
11727 pEventData: pointer to the event information structure
11728
11729 @see
11730 @return Result of the function call
11731*/
11732WDI_Status
11733WDI_ProcessAddPeriodicTxPtrnInd
11734(
11735 WDI_ControlBlockType* pWDICtx,
11736 WDI_EventInfoType* pEventData
11737)
11738{
11739 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11740 wpt_uint8* pSendBuffer = NULL;
11741 wpt_uint16 usDataOffset = 0;
11742 wpt_uint16 usSendSize = 0;
11743 WDI_Status wdiStatus;
11744 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11745 wpt_uint8 selfStaIdx = 0;
11746
11747 /*-------------------------------------------------------------------------
11748 Sanity check
11749 -------------------------------------------------------------------------*/
11750 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11751 {
11752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11753 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11754 WDI_ASSERT(0);
11755 return WDI_STATUS_E_FAILURE;
11756 }
11757
11758 pAddPeriodicTxPtrnParams =
11759 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11760
11761 /*------------------------------------------------------------------------
11762 Get message buffer
11763 ------------------------------------------------------------------------*/
11764 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11765 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11766 &pSendBuffer, &usDataOffset, &usSendSize))||
11767 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11768 {
11769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11770 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11771 __func__);
11772 WDI_ASSERT(0);
11773 return WDI_STATUS_E_FAILURE;
11774 }
11775
11776 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11777
11778 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11779 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11780 &selfStaIdx))
11781 {
11782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11783 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011784 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011785
11786 return WDI_STATUS_E_FAILURE;
11787 }
11788
11789 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11790 halAddPeriodicTxPtrn->ucPtrnId =
11791 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11792 halAddPeriodicTxPtrn->usPtrnSize =
11793 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11794 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11795 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11796
11797 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11798 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11799 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11800
11801 /*-------------------------------------------------------------------------
11802 Send Indication to HAL
11803 -------------------------------------------------------------------------*/
11804 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11805 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11806
11807 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11808
11809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11810 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11811
11812 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11813} /* WDI_ProcessAddPeriodicTxPtrnInd */
11814
11815/**
11816 @brief Process Delete Periodic Tx Pattern Indication function (called when
11817 Main FSM allows it)
11818
11819 @param pWDICtx: pointer to the WLAN DAL context
11820 pEventData: pointer to the event information structure
11821
11822 @see
11823 @return Result of the function call
11824*/
11825WDI_Status
11826WDI_ProcessDelPeriodicTxPtrnInd
11827(
11828 WDI_ControlBlockType* pWDICtx,
11829 WDI_EventInfoType* pEventData
11830)
11831{
11832 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11833 wpt_uint8* pSendBuffer = NULL;
11834 wpt_uint16 usDataOffset = 0;
11835 wpt_uint16 usSendSize = 0;
11836 WDI_Status wdiStatus;
11837 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11838 wpt_uint8 selfStaIdx = 0;
11839
11840 /*-------------------------------------------------------------------------
11841 Sanity check
11842 -------------------------------------------------------------------------*/
11843 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11844 {
11845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11847 WDI_ASSERT(0);
11848 return WDI_STATUS_E_FAILURE;
11849 }
11850
11851 pDelPeriodicTxPtrnParams =
11852 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11853
11854 /*------------------------------------------------------------------------
11855 Get message buffer
11856 ------------------------------------------------------------------------*/
11857 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11858 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11859 &pSendBuffer, &usDataOffset, &usSendSize))||
11860 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11861 {
11862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11863 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11864 __func__);
11865 WDI_ASSERT(0);
11866 return WDI_STATUS_E_FAILURE;
11867 }
11868
11869 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11870
11871 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11872 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11873 &selfStaIdx))
11874 {
11875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11876 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011877 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011878
11879 return WDI_STATUS_E_FAILURE;
11880 }
11881
11882 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11883 halDelPeriodicTxPtrn->uPatternIdBitmap =
11884 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11885
11886 /*-------------------------------------------------------------------------
11887 Send Indication to HAL
11888 -------------------------------------------------------------------------*/
11889 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11890 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11891
11892 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11893
11894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11895 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11896
11897 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11898} /* WDI_ProcessDelPeriodicTxPtrnInd */
11899
Jeff Johnson295189b2012-06-20 16:38:30 -070011900/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011902==========================================================================*/
11903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011906
11907 @param pWDICtx: pointer to the WLAN DAL context
11908 pEventData: pointer to the event information structure
11909
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 @see
11911 @return Result of the function call
11912*/
11913WDI_Status
11914WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011915(
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 WDI_ControlBlockType* pWDICtx,
11917 WDI_EventInfoType* pEventData
11918)
11919{
11920 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11921 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 wpt_uint16 usDataOffset = 0;
11924 wpt_uint16 usSendSize = 0;
11925 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11927
11928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 -------------------------------------------------------------------------*/
11931 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11932 ( NULL == pEventData->pCBfnc ))
11933 {
11934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 }
11939
11940 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11941 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11942 /*-----------------------------------------------------------------------
11943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 sizeof(halSwitchChannelReq.switchChannelParams),
11948 &pSendBuffer, &usDataOffset, &usSendSize))||
11949 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11950 {
11951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011952 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 }
11957
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011960#ifndef WLAN_FEATURE_VOWIFI
11961 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11963#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11966
11967#ifdef WLAN_FEATURE_VOWIFI
11968 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11971 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11972 WDI_MAC_ADDR_LEN);
11973 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11974 pwdiSwitchChParams->wdiChInfo.macBSSId,
11975 WDI_MAC_ADDR_LEN);
11976#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 wpalMemoryCopy( pSendBuffer+usDataOffset,
11978 &halSwitchChannelReq.switchChannelParams,
11979 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011980
11981 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011983
11984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11988 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011989}/*WDI_ProcessChannelSwitchReq*/
11990
11991/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011992 @brief Process Channel Switch Request function (called when
11993 Main FSM allows it)
11994
11995 @param pWDICtx: pointer to the WLAN DAL context
11996 pEventData: pointer to the event information structure
11997
11998 @see
11999 @return Result of the function call
12000*/
12001WDI_Status WDI_ProcessChannelSwitchReq_V1
12002(
12003 WDI_ControlBlockType* pWDICtx,
12004 WDI_EventInfoType* pEventData
12005)
12006{
12007 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12008 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12009 wpt_uint8* pSendBuffer = NULL;
12010 wpt_uint16 usDataOffset = 0;
12011 wpt_uint16 usSendSize = 0;
12012 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12014
12015 /*-------------------------------------------------------------------------
12016 Sanity check
12017 -------------------------------------------------------------------------*/
12018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12019 ( NULL == pEventData->pCBfnc ))
12020 {
12021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12022 "%s: Invalid parameters", __func__);
12023 WDI_ASSERT(0);
12024 return WDI_STATUS_E_FAILURE;
12025 }
12026
12027 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12028 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12029 /*-----------------------------------------------------------------------
12030 Get message buffer
12031 ! TO DO : proper conversion into the HAL Message Request Format
12032 -----------------------------------------------------------------------*/
12033 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12034 WDI_CH_SWITCH_REQ_V1,
12035 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12036 &pSendBuffer, &usDataOffset, &usSendSize))||
12037 ( usSendSize < (usDataOffset +
12038 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12039 {
12040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12041 "Unable to get send buffer in channel switch req %p %p %p",
12042 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12043 WDI_ASSERT(0);
12044 return WDI_STATUS_E_FAILURE;
12045 }
12046
12047 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12048 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12049
12050 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12051 pwdiSwitchChParams->wdiChInfo.ucChannel;
12052#ifndef WLAN_FEATURE_VOWIFI
12053 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12054 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12055#endif
12056 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12057 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12058
12059#ifdef WLAN_FEATURE_VOWIFI
12060 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12061 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12062 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12063 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12064 WDI_MAC_ADDR_LEN);
12065 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12066 pwdiSwitchChParams->wdiChInfo.macBSSId,
12067 WDI_MAC_ADDR_LEN);
12068#endif
12069 wpalMemoryCopy( pSendBuffer+usDataOffset,
12070 &halSwitchChannelReq.switchChannelParams_V1,
12071 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12072
12073 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12074 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12075
12076 /*-------------------------------------------------------------------------
12077 Send Switch Channel Request to HAL
12078 -------------------------------------------------------------------------*/
12079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12080 wdiSwitchChRspCb, pEventData->pUserData,
12081 WDI_CH_SWITCH_RESP_V1);
12082}/*WDI_ProcessChannelSwitchReq_V1*/
12083
12084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012087
12088 @param pWDICtx: pointer to the WLAN DAL context
12089 pEventData: pointer to the event information structure
12090
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 @see
12092 @return Result of the function call
12093*/
12094WDI_Status
12095WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012096(
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 WDI_ControlBlockType* pWDICtx,
12098 WDI_EventInfoType* pEventData
12099)
12100{
12101 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12102 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 wpt_uint16 usDataOffset = 0;
12107 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012109
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 tConfigStaReqMsg halConfigStaReqMsg;
12111 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12113
12114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 -------------------------------------------------------------------------*/
12117 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12118 ( NULL == pEventData->pCBfnc ))
12119 {
12120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 }
12125
Abhishek Singh6927fa02014-06-27 17:19:55 +053012126 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12128 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12129 /*-------------------------------------------------------------------------
12130 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012131 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012132 -------------------------------------------------------------------------*/
12133 wpalMutexAcquire(&pWDICtx->wptMutex);
12134
12135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12139 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12140 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012141
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12145 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12146 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012147
12148 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 }
12151
12152 /*------------------------------------------------------------------------
12153 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 ------------------------------------------------------------------------*/
12156 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12157 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12159 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12160 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012161
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012163 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 }
12166
12167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012168
12169 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12170#ifdef WLAN_FEATURE_11AC
12171 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012172 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 else
12174#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012175 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012176
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 /*-----------------------------------------------------------------------
12178 Get message buffer
12179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12181 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 {
12185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012186 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 }
12191
12192 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 &pwdiConfigSTAParams->wdiReqInfo);
12195
12196 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12197 {
12198 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 WDI_STATableFindStaidByAddr(pWDICtx,
12201 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 {
12204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012205 MAC_ADDRESS_STR
12206 ": This station does not exist in the WDI Station Table",
12207 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012209 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212 }
12213 else
12214 {
12215 /* Need to fill in the STA Index to invalid, since at this point we have not
12216 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012217 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 }
12219
12220 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012222
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 wpalMemoryCopy( pSendBuffer+usDataOffset,
12224 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012225 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012226
12227 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012229
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12231 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 sizeof(pWDICtx->wdiCachedConfigStaReq));
12233
12234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12238 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239}/*WDI_ProcessConfigStaReq*/
12240
12241
12242/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012245
12246 @param pWDICtx: pointer to the WLAN DAL context
12247 pEventData: pointer to the event information structure
12248
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 @see
12250 @return Result of the function call
12251*/
12252WDI_Status
12253WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012254(
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 WDI_ControlBlockType* pWDICtx,
12256 WDI_EventInfoType* pEventData
12257)
12258{
12259 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12260 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012261 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 wpt_uint16 usDataOffset = 0;
12265 wpt_uint16 usSendSize = 0;
12266 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12269
12270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 -------------------------------------------------------------------------*/
12273 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12274 ( NULL == pEventData->pCBfnc ))
12275 {
12276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 }
12281
12282 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12283 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12284 /*-------------------------------------------------------------------------
12285 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 -------------------------------------------------------------------------*/
12288 wpalMutexAcquire(&pWDICtx->wptMutex);
12289
12290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12294 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12295 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012296
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012300 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12301 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 }
12303 else
12304 {
12305 /*------------------------------------------------------------------------
12306 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 ------------------------------------------------------------------------*/
12309 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12312 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12313 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12314
12315 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 }
12319 }
12320 /* If the link is set to enter IDLE - the Session allocated for this BSS
12321 will be deleted on the Set Link State response coming from HAL
12322 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12325
12326 wpalMutexRelease(&pWDICtx->wptMutex);
12327 /*-----------------------------------------------------------------------
12328 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012331
12332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 sizeof(halLinkStateReqMsg),
12334 &pSendBuffer, &usDataOffset, &usSendSize))||
12335 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12336 {
12337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012338 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 }
12343
12344 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12345 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12346
12347 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12348 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12349
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12352
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 wpalMemoryCopy( pSendBuffer+usDataOffset,
12354 &halLinkStateReqMsg,
12355 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012356
12357 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012359
12360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12364 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012365}/*WDI_ProcessSetLinkStateReq*/
12366
12367
12368/**
12369 @brief Process Get Stats Request function (called when Main FSM
12370 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012371
12372 @param pWDICtx: pointer to the WLAN DAL context
12373 pEventData: pointer to the event information structure
12374
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 @see
12376 @return Result of the function call
12377*/
12378WDI_Status
12379WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012380(
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 WDI_ControlBlockType* pWDICtx,
12382 WDI_EventInfoType* pEventData
12383)
12384{
12385 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12386 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 wpt_uint16 usDataOffset = 0;
12389 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 WDI_BSSSessionType* pBSSSes = NULL;
12392 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 tHalStatsReqMsg halStatsReqMsg;
12395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12396
12397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 -------------------------------------------------------------------------*/
12400 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12401 ( NULL == pEventData->pCBfnc ) )
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 }
12408
12409 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12410 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12411
12412 /*-------------------------------------------------------------------------
12413 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -------------------------------------------------------------------------*/
12416 wpalMutexAcquire(&pWDICtx->wptMutex);
12417
12418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12422 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 &macBSSID))
12424 {
12425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012426 "This station does not exist in the WDI Station Table %d",
12427 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 }
12431
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12433 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12436 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12437 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012438
12439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 }
12442
12443 /*------------------------------------------------------------------------
12444 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012446 ------------------------------------------------------------------------*/
12447 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12448 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12450 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12451 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012452
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 }
12457
12458
12459 wpalMutexRelease(&pWDICtx->wptMutex);
12460
12461 /*-----------------------------------------------------------------------
12462 Get message buffer
12463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 sizeof(halStatsReqMsg.statsReqParams),
12466 &pSendBuffer, &usDataOffset, &usSendSize))||
12467 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12468 {
12469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012470 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 }
12475
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 wpalMemoryCopy( pSendBuffer+usDataOffset,
12481 &halStatsReqMsg.statsReqParams,
12482 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012483
12484 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012485 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012486
12487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012488 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12491 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012492}/*WDI_ProcessGetStatsReq*/
12493
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012494#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012495/**
12496 @brief Process Get Roam Rssi Request function (called when Main FSM
12497 allows it)
12498
12499 @param pWDICtx: pointer to the WLAN DAL context
12500 pEventData: pointer to the event information structure
12501
12502 @see
12503 @return Result of the function call
12504*/
12505WDI_Status
12506WDI_ProcessGetRoamRssiReq
12507(
12508 WDI_ControlBlockType* pWDICtx,
12509 WDI_EventInfoType* pEventData
12510)
12511{
12512 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12513 WDI_GetStatsRspCb wdiGetStatsRspCb;
12514 wpt_uint8* pSendBuffer = NULL;
12515 wpt_uint16 usDataOffset = 0;
12516 wpt_uint16 usSendSize = 0;
12517 wpt_uint8 ucCurrentBSSSesIdx = 0;
12518 WDI_BSSSessionType* pBSSSes = NULL;
12519 wpt_macAddr macBSSID;
12520 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12521 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12523 /*-------------------------------------------------------------------------
12524 Sanity check
12525 -------------------------------------------------------------------------*/
12526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12527 ( NULL == pEventData->pCBfnc ) )
12528 {
12529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12530 "%s: Invalid parameters", __func__);
12531 WDI_ASSERT(0);
12532 return WDI_STATUS_E_FAILURE;
12533 }
12534
12535 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12536 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12537
12538 /*-------------------------------------------------------------------------
12539 Check to see if we are in the middle of an association, if so queue, if
12540 not it means it is free to process request
12541 -------------------------------------------------------------------------*/
12542 wpalMutexAcquire(&pWDICtx->wptMutex);
12543
12544 /*------------------------------------------------------------------------
12545 Find the BSS for which the request is made
12546 ------------------------------------------------------------------------*/
12547 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12548 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12549 &macBSSID))
12550 {
12551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012552 "This station does not exist in the WDI Station Table %d",
12553 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012554 wpalMutexRelease(&pWDICtx->wptMutex);
12555 return WDI_STATUS_E_FAILURE;
12556 }
12557
12558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12559 if ( NULL == pBSSSes )
12560 {
12561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12563 __func__, MAC_ADDR_ARRAY(macBSSID));
12564
12565 wpalMutexRelease(&pWDICtx->wptMutex);
12566 return WDI_STATUS_E_NOT_ALLOWED;
12567 }
12568
12569 /*------------------------------------------------------------------------
12570 Check if this BSS is being currently processed or queued,
12571 if queued - queue the new request as well
12572 ------------------------------------------------------------------------*/
12573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12574 {
12575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12577 __func__, MAC_ADDR_ARRAY(macBSSID));
12578
12579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12580 wpalMutexRelease(&pWDICtx->wptMutex);
12581 return wdiStatus;
12582 }
12583
12584 wpalMutexRelease(&pWDICtx->wptMutex);
12585
12586 /*-----------------------------------------------------------------------
12587 Get message buffer
12588 -----------------------------------------------------------------------*/
12589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12590 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12591 &pSendBuffer, &usDataOffset, &usSendSize))||
12592 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12593 {
12594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012595 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012596 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12597 WDI_ASSERT(0);
12598 return WDI_STATUS_E_FAILURE;
12599 }
12600
12601 halRssiRoamReqMsg.roamRssiReqParams.staId =
12602 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12603 wpalMemoryCopy( pSendBuffer+usDataOffset,
12604 &halRssiRoamReqMsg.roamRssiReqParams,
12605 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12606
12607 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12608 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12609
12610 /*-------------------------------------------------------------------------
12611 Send Get STA Request to HAL
12612 -------------------------------------------------------------------------*/
12613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12614 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12615}/*WDI_ProcessGetRoamRssiReq*/
12616#endif
12617
Jeff Johnson295189b2012-06-20 16:38:30 -070012618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012621
12622 @param pWDICtx: pointer to the WLAN DAL context
12623 pEventData: pointer to the event information structure
12624
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 @see
12626 @return Result of the function call
12627*/
12628WDI_Status
12629WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012630(
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 WDI_ControlBlockType* pWDICtx,
12632 WDI_EventInfoType* pEventData
12633)
12634{
12635 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12636 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12637
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 wpt_uint16 usDataOffset = 0;
12640 wpt_uint16 usSendSize = 0;
12641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12642
12643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 -------------------------------------------------------------------------*/
12646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12647 ( NULL == pEventData->pCBfnc))
12648 {
12649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012653 }
12654
12655 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12656 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12657
12658 /*-----------------------------------------------------------------------
12659 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 -----------------------------------------------------------------------*/
12662
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12665 &pSendBuffer, &usDataOffset, &usSendSize))||
12666 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12667 {
12668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012669 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012673 }
12674
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 wpalMemoryCopy( pSendBuffer+usDataOffset,
12676 &pwdiUpdateCfgParams->uConfigBufferLen,
12677 sizeof(wpt_uint32));
12678 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12679 pwdiUpdateCfgParams->pConfigBuffer,
12680 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
12682 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684
12685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 -------------------------------------------------------------------------*/
12688
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12690 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012691
12692}/*WDI_ProcessUpdateCfgReq*/
12693
12694
12695/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012698
12699 @param pWDICtx: pointer to the WLAN DAL context
12700 pEventData: pointer to the event information structure
12701
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 @see
12703 @return Result of the function call
12704*/
12705WDI_Status
12706WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012707(
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 WDI_ControlBlockType* pWDICtx,
12709 WDI_EventInfoType* pEventData
12710)
12711{
12712 WDI_AddBAReqParamsType* pwdiAddBAParams;
12713 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 wpt_uint16 usDataOffset = 0;
12718 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 wpt_macAddr macBSSID;
12721
12722 tAddBAReqMsg halAddBAReq;
12723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12724
12725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 -------------------------------------------------------------------------*/
12728 if (( NULL == pEventData ) ||
12729 ( NULL == pEventData->pEventData) ||
12730 ( NULL == pEventData->pCBfnc ))
12731 {
12732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 }
12737
12738 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12739 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12740
12741 /*-------------------------------------------------------------------------
12742 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 -------------------------------------------------------------------------*/
12745 wpalMutexAcquire(&pWDICtx->wptMutex);
12746
12747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12751 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 &macBSSID))
12753 {
12754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012755 "This station does not exist in the WDI Station Table %d",
12756 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 }
12760
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12762 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12765 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12766 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 }
12771
12772 /*------------------------------------------------------------------------
12773 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 ------------------------------------------------------------------------*/
12776 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12777 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12779 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12780 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012781
Jeff Johnsone7245742012-09-05 17:12:55 -070012782 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 }
12786
12787
12788 wpalMutexRelease(&pWDICtx->wptMutex);
12789 /*-----------------------------------------------------------------------
12790 Get message buffer
12791 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 sizeof(halAddBAReq.addBAParams),
12794 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12797 {
12798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012799 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12807 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12808#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12811#endif
12812
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 wpalMemoryCopy( pSendBuffer+usDataOffset,
12814 &halAddBAReq.addBAParams,
12815 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012816
12817 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012819
12820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12824 wdiAddBARspCb, pEventData->pUserData,
12825 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012826}/*WDI_ProcessAddBAReq*/
12827
12828
12829
12830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012833
12834 @param pWDICtx: pointer to the WLAN DAL context
12835 pEventData: pointer to the event information structure
12836
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 @see
12838 @return Result of the function call
12839*/
12840WDI_Status
12841WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012842(
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 WDI_ControlBlockType* pWDICtx,
12844 WDI_EventInfoType* pEventData
12845)
12846{
12847 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12848 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 wpt_uint16 usDataOffset = 0;
12853 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 wpt_uint16 index;
12856 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012857
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 tTriggerBAReqMsg halTriggerBAReq;
12859 tTriggerBaReqCandidate* halTriggerBACandidate;
12860 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12862
12863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 -------------------------------------------------------------------------*/
12866 if (( NULL == pEventData ) ||
12867 ( NULL == pEventData->pEventData ) ||
12868 ( NULL == pEventData->pCBfnc ))
12869 {
12870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 }
12875
12876 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12877 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12878 /*-------------------------------------------------------------------------
12879 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 -------------------------------------------------------------------------*/
12882 wpalMutexAcquire(&pWDICtx->wptMutex);
12883
12884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12888 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 &macBSSID))
12890 {
12891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012892 "This station does not exist in the WDI Station Table %d",
12893 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 }
12897
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12899 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12902 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12903 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012904
12905 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 }
12908
12909 /*------------------------------------------------------------------------
12910 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 ------------------------------------------------------------------------*/
12913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12914 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12916 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12917 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012918
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 }
12923
12924
12925 wpalMutexRelease(&pWDICtx->wptMutex);
12926 /*-----------------------------------------------------------------------
12927 Get message buffer
12928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12930 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12934 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012937 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12939 {
12940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012941 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 }
12946
Jeff Johnsone7245742012-09-05 17:12:55 -070012947 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12951
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 wpalMemoryCopy( pSendBuffer+usDataOffset,
12953 &halTriggerBAReq.triggerBAParams,
12954 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012955
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12958 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12959 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012960
12961 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 index++)
12963 {
12964 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12965 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12966 halTriggerBACandidate++;
12967 wdiTriggerBACandidate++;
12968 }
12969
12970 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012972
12973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12977 wdiTriggerBARspCb, pEventData->pUserData,
12978 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012979}/*WDI_ProcessTriggerBAReq*/
12980
12981
12982
12983/**
12984 @brief Process Update Beacon Params Request function (called when Main FSM
12985 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012986
12987 @param pWDICtx: pointer to the WLAN DAL context
12988 pEventData: pointer to the event information structure
12989
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 @see
12991 @return Result of the function call
12992*/
12993WDI_Status
12994WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012995(
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 WDI_ControlBlockType* pWDICtx,
12997 WDI_EventInfoType* pEventData
12998)
12999{
13000 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13001 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 wpt_uint16 usDataOffset = 0;
13004 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13007
13008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 -------------------------------------------------------------------------*/
13011 if (( NULL == pEventData ) ||
13012 ( NULL == pEventData->pEventData) ||
13013 ( NULL == pEventData->pCBfnc))
13014 {
13015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 }
13020
13021 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13022 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13023 /*-----------------------------------------------------------------------
13024 Get message buffer
13025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 sizeof(halUpdateBeaconParams),
13028 &pSendBuffer, &usDataOffset, &usSendSize))||
13029 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13030 {
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013032 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 }
13037
13038 /*BSS Index of the BSS*/
13039 halUpdateBeaconParams.bssIdx =
13040 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13041 /*shortPreamble mode. HAL should update all the STA rates when it
13042 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13045 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13048 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13051
13052 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13065 halUpdateBeaconParams.fRIFSMode =
13066 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13069
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13071 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013072
13073 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013075
13076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13080 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013081}/*WDI_ProcessUpdateBeaconParamsReq*/
13082
13083
13084
13085/**
13086 @brief Process Send Beacon template Request function (called when Main FSM
13087 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013088
13089 @param pWDICtx: pointer to the WLAN DAL context
13090 pEventData: pointer to the event information structure
13091
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 @see
13093 @return Result of the function call
13094*/
13095WDI_Status
13096WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013097(
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 WDI_ControlBlockType* pWDICtx,
13099 WDI_EventInfoType* pEventData
13100)
13101{
13102 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13103 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 wpt_uint16 usDataOffset = 0;
13106 wpt_uint16 usSendSize = 0;
13107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13108
13109 tSendBeaconReqMsg halSendBeaconReq;
13110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 -------------------------------------------------------------------------*/
13113 if (( NULL == pEventData ) ||
13114 ( NULL == pEventData->pEventData ) ||
13115 ( NULL == pEventData->pCBfnc ))
13116 {
13117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 }
13122
13123 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13124 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13125 /*-----------------------------------------------------------------------
13126 Get message buffer
13127 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 sizeof(halSendBeaconReq.sendBeaconParam),
13130 &pSendBuffer, &usDataOffset, &usSendSize))||
13131 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13132 {
13133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013134 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 }
13139
13140 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13141 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13142 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13145 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13146 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13147 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013150 /* usP2PIeOffset should be atleast greater than timIeOffset */
13151 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13152 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13153 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13154 {
13155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13156 "Invalid usP2PIeOffset %hu",
13157 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13158 WDI_ASSERT(0);
13159 return WDI_STATUS_E_FAILURE;
13160 }
13161
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013164
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 wpalMemoryCopy( pSendBuffer+usDataOffset,
13166 &halSendBeaconReq.sendBeaconParam,
13167 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013168
13169 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013171
13172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13176 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013177}/*WDI_ProcessSendBeaconParamsReq*/
13178
13179/**
13180 @brief Process Update Beacon Params Request function (called when Main FSM
13181 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013182
13183 @param pWDICtx: pointer to the WLAN DAL context
13184 pEventData: pointer to the event information structure
13185
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 @see
13187 @return Result of the function call
13188*/
13189WDI_Status
13190WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013191(
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 WDI_ControlBlockType* pWDICtx,
13193 WDI_EventInfoType* pEventData
13194)
13195{
13196 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13197 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 wpt_uint16 usDataOffset = 0;
13200 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13203
13204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 -------------------------------------------------------------------------*/
13207 if (( NULL == pEventData ) ||
13208 ( NULL == pEventData->pEventData) ||
13209 ( NULL == pEventData->pCBfnc))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 }
13216
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13221 /*-----------------------------------------------------------------------
13222 Get message buffer
13223 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 sizeof(halUpdateProbeRspTmplParams),
13226 &pSendBuffer, &usDataOffset, &usSendSize))||
13227 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13228 {
13229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013230 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 }
13235
13236 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_MAC_ADDR_LEN);
13239
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13242
13243 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13244 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013246
13247
13248 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13249 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13250 WDI_PROBE_REQ_BITMAP_IE_LEN);
13251
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 wpalMemoryCopy( pSendBuffer+usDataOffset,
13253 &halUpdateProbeRspTmplParams,
13254 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013255
13256 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013258
13259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13263 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13264 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013265}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13266
13267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013270
13271 @param pWDICtx: pointer to the WLAN DAL context
13272 pEventData: pointer to the event information structure
13273
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 @see
13275 @return Result of the function call
13276*/
13277WDI_Status
13278WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013279(
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 WDI_ControlBlockType* pWDICtx,
13281 WDI_EventInfoType* pEventData
13282)
13283{
13284
13285 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13286 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13287
13288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 -------------------------------------------------------------------------*/
13291 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13296 {
13297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 }
13302
13303 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13306
13307 /*cache the wdi nv request message here if the the first fragment
13308 * To issue the request to HAL for the next fragment */
13309 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13312 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13314
13315 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13316 pWDICtx->pRspCBUserData = pEventData->pUserData;
13317 }
13318
13319 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13320}
13321
13322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013325
13326 @param pWDICtx: pointer to the WLAN DAL context
13327 pEventData: pointer to the event information structure
13328
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 @see
13330 @return Result of the function call
13331*/
13332WDI_Status WDI_ProcessSetMaxTxPowerReq
13333(
13334 WDI_ControlBlockType* pWDICtx,
13335 WDI_EventInfoType* pEventData
13336)
13337{
13338 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13339 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 wpt_uint16 usDataOffset = 0;
13342 wpt_uint16 usSendSize = 0;
13343 tSetMaxTxPwrReq halSetMaxTxPower;
13344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13345
13346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 -------------------------------------------------------------------------*/
13349 if (( NULL == pEventData ) ||
13350 ( NULL == pEventData->pEventData ) ||
13351 ( NULL == pEventData->pCBfnc ))
13352 {
13353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13362
13363 /*-----------------------------------------------------------------------
13364 Get message buffer
13365 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013366if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13368 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013370)))
13371 {
13372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013373 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13380 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13381 WDI_MAC_ADDR_LEN);
13382
13383 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13384 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13385 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013388
13389 wpalMemoryCopy( pSendBuffer+usDataOffset,
13390 &halSetMaxTxPower.setMaxTxPwrParams,
13391 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013392
13393 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13400 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13401 WDI_SET_MAX_TX_POWER_RESP);
13402
Jeff Johnson295189b2012-06-20 16:38:30 -070013403}
13404
Arif Hussaina5ebce02013-08-09 15:09:58 -070013405/*
13406 @brief Process Set Max Tx Power Per Band Request function (called when Main
13407 FSM allows it)
13408
13409 @param pWDICtx: pointer to the WLAN DAL context
13410 pEventData: pointer to the event information structure
13411
13412 @see
13413 @return Result of the function call
13414*/
13415WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13416(
13417 WDI_ControlBlockType* pWDICtx,
13418 WDI_EventInfoType* pEventData
13419)
13420{
13421 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13422 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13423 wpt_uint8* pSendBuffer = NULL;
13424 wpt_uint16 usDataOffset = 0;
13425 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013426 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013427 WDI_Status rValue = WDI_STATUS_SUCCESS;
13428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13429
13430 /*-------------------------------------------------------------------------
13431 Sanity check
13432 -------------------------------------------------------------------------*/
13433 if (( NULL == pEventData ) ||
13434 ( NULL == pEventData->pEventData ) ||
13435 ( NULL == pEventData->pCBfnc ))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13438 "%s: Invalid parameters", __func__);
13439 WDI_ASSERT(0);
13440 return WDI_STATUS_E_FAILURE;
13441 }
13442 pwdiSetMaxTxPowerPerBandParams = \
13443 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13444
13445 wdiSetMaxTxPowerPerBandRspCb = \
13446 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13447
13448 /*-----------------------------------------------------------------------
13449 Get message buffer
13450 -----------------------------------------------------------------------*/
13451
13452 rValue = WDI_GetMessageBuffer(pWDICtx,
13453 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13454 sizeof(tSetMaxTxPwrPerBandParams),
13455 &pSendBuffer, &usDataOffset, &usSendSize);
13456
13457 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13458 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13459 {
13460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13461 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13462 pEventData, pwdiSetMaxTxPowerPerBandParams,
13463 wdiSetMaxTxPowerPerBandRspCb);
13464 WDI_ASSERT(0);
13465 return WDI_STATUS_E_FAILURE;
13466 }
13467
13468
Arif Hussainf8f080c2014-04-03 09:48:36 -070013469 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13470 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013471 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13472
Arif Hussainf8f080c2014-04-03 09:48:36 -070013473 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013474 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13475
13476 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13477 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13478
13479 /*-------------------------------------------------------------------------
13480 Send Set Max Tx Power Per Band Request to HAL
13481 -------------------------------------------------------------------------*/
13482 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13483 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13484 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13485}
13486
schang86c22c42013-03-13 18:41:24 -070013487/**
13488 @brief Process Set Tx Power Request function (called when Main
13489 FSM allows it)
13490
13491 @param pWDICtx: pointer to the WLAN DAL context
13492 pEventData: pointer to the event information structure
13493
13494 @see
13495 @return Result of the function call
13496*/
13497WDI_Status WDI_ProcessSetTxPowerReq
13498(
13499 WDI_ControlBlockType* pWDICtx,
13500 WDI_EventInfoType* pEventData
13501)
13502{
13503 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13504 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13505 wpt_uint8* pSendBuffer = NULL;
13506 wpt_uint16 usDataOffset = 0;
13507 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013508 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13510
13511 /*-------------------------------------------------------------------------
13512 Sanity check
13513 -------------------------------------------------------------------------*/
13514 if (( NULL == pEventData ) ||
13515 ( NULL == pEventData->pEventData ) ||
13516 ( NULL == pEventData->pCBfnc ))
13517 {
13518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13519 "%s: Invalid parameters", __func__);
13520 WDI_ASSERT(0);
13521 return WDI_STATUS_E_FAILURE;
13522 }
13523
13524 pwdiSetTxPowerParams =
13525 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13526 wdiSetTxPowerRspCb =
13527 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13528
13529 /*-----------------------------------------------------------------------
13530 Get message buffer
13531 -----------------------------------------------------------------------*/
13532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13533 sizeof(tSetTxPwrReqParams),
13534 &pSendBuffer, &usDataOffset, &usSendSize))||
13535 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13536 )))
13537 {
13538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013539 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013540 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13541 WDI_ASSERT(0);
13542 return WDI_STATUS_E_FAILURE;
13543 }
13544
Leo Chang9a43db92013-03-25 17:39:58 -070013545 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13546 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13547 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013548
13549 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13550 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13551
13552 /*-------------------------------------------------------------------------
13553 Send Set Tx Power Request to HAL
13554 -------------------------------------------------------------------------*/
13555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13556 wdiSetTxPowerRspCb, pEventData->pUserData,
13557 WDI_SET_TX_POWER_RESP);
13558}
Jeff Johnson295189b2012-06-20 16:38:30 -070013559
13560/**
13561 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13562 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013563
13564 @param pWDICtx: pointer to the WLAN DAL context
13565 pEventData: pointer to the event information structure
13566
Jeff Johnson295189b2012-06-20 16:38:30 -070013567 @see
13568 @return Result of the function call
13569*/
13570WDI_Status
13571WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013572(
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 WDI_ControlBlockType* pWDICtx,
13574 WDI_EventInfoType* pEventData
13575)
13576{
13577 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13578 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 wpt_uint16 usDataOffset = 0;
13581 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013582 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13584
13585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 -------------------------------------------------------------------------*/
13588 if (( NULL == pEventData ) ||
13589 ( NULL == pEventData->pEventData) ||
13590 ( NULL == pEventData->pCBfnc))
13591 {
13592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 }
13597
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13602 /*-----------------------------------------------------------------------
13603 Get message buffer
13604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13606 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 sizeof(halSetP2PGONOAParams),
13608 &pSendBuffer, &usDataOffset, &usSendSize))||
13609 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13610 {
13611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013612 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 }
13617
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13622 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13631
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wpalMemoryCopy( pSendBuffer+usDataOffset,
13633 &halSetP2PGONOAParams,
13634 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013635
13636 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638
13639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13643 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13644 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013645}/*WDI_ProcessP2PGONOAReq*/
13646
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013647#ifdef FEATURE_WLAN_TDLS
13648
13649/**
13650 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13651 allows it)
13652
13653 @param pWDICtx: pointer to the WLAN DAL context
13654 pEventData: pointer to the event information structure
13655
13656 @see
13657 @return Result of the function call
13658*/
13659WDI_Status
13660WDI_ProcessTdlsLinkEstablishReq
13661(
13662 WDI_ControlBlockType* pWDICtx,
13663 WDI_EventInfoType* pEventData
13664)
13665{
13666 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13667 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13668 wpt_uint8* pSendBuffer = NULL;
13669 wpt_uint16 usDataOffset = 0;
13670 wpt_uint16 usSendSize = 0;
13671
13672 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13674
13675 /*-------------------------------------------------------------------------
13676 Sanity check
13677 -------------------------------------------------------------------------*/
13678 if (( NULL == pEventData ) ||
13679 ( NULL == pEventData->pEventData) ||
13680 ( NULL == pEventData->pCBfnc))
13681 {
13682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13683 "%s: Invalid parameters", __func__);
13684 WDI_ASSERT(0);
13685 return WDI_STATUS_E_FAILURE;
13686 }
13687 pwdiTDLSLinkEstablishReqParams =
13688 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13689 wdiTDLSLinkEstablishReqRspCb =
13690 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13691
13692
13693 /*-----------------------------------------------------------------------
13694 Get message buffer
13695 -----------------------------------------------------------------------*/
13696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13697 WDI_TDLS_LINK_ESTABLISH_REQ,
13698 sizeof(halSetTDLSLinkEstablishParams),
13699 &pSendBuffer, &usDataOffset, &usSendSize))||
13700 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13701 {
13702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013703 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013704 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13705 WDI_ASSERT(0);
13706 return WDI_STATUS_E_FAILURE;
13707 }
13708
13709 halSetTDLSLinkEstablishParams.staIdx =
13710 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13711 halSetTDLSLinkEstablishParams.bIsResponder =
13712 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13713 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13714 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13715 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13716 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13717 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13718 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13719 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13720 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13721 halSetTDLSLinkEstablishParams.aAck = 0;
13722 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13723 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13724 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013725 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13726 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13727
13728 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13729 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13730 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13731 halSetTDLSLinkEstablishParams.validChannelsLen =
13732 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13733
13734 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13735 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13736 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13737 halSetTDLSLinkEstablishParams.validOperClassesLen =
13738 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013739
13740 wpalMemoryCopy( pSendBuffer+usDataOffset,
13741 &halSetTDLSLinkEstablishParams,
13742 sizeof(halSetTDLSLinkEstablishParams));
13743
13744 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13745 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13746
13747 /*-------------------------------------------------------------------------
13748 Send Update Probe Resp Template Request to HAL
13749 -------------------------------------------------------------------------*/
13750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13751 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13752 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13753 return 0;
13754}/*WDI_ProcessTdlsLinkEstablishReq*/
13755
13756
Atul Mittalc0f739f2014-07-31 13:47:47 +053013757/**
13758 @brief sends the channel switch command to f/w (called when Main FSM
13759 allows it)
13760
13761 @param pWDICtx: pointer to the WLAN DAL context
13762 pEventData: pointer to the event information structure
13763
13764 @see
13765 @return Result of the function call
13766*/
13767WDI_Status
13768WDI_ProcessTdlsChanSwitchReq
13769(
13770 WDI_ControlBlockType* pWDICtx,
13771 WDI_EventInfoType* pEventData
13772)
13773{
13774 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13775 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13776 wpt_uint8* pSendBuffer = NULL;
13777 wpt_uint16 usDataOffset = 0;
13778 wpt_uint16 usSendSize = 0;
13779 //WDI_Status wdiStatus;
13780 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13782
13783 /*-------------------------------------------------------------------------
13784 Sanity check
13785 -------------------------------------------------------------------------*/
13786 if (( NULL == pEventData ) ||
13787 ( NULL == pEventData->pEventData))
13788 {
13789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13790 "%s: Invalid parameters", __func__);
13791 WDI_ASSERT(0);
13792 return WDI_STATUS_E_FAILURE;
13793 }
13794 pwdiTDLSChanSwitchReqParams =
13795 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13796 wdiTDLSChanSwitchReqRspCb =
13797 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13798
13799 /*-----------------------------------------------------------------------
13800 Get message buffer
13801 -----------------------------------------------------------------------*/
13802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13803 WDI_TDLS_CHAN_SWITCH_REQ,
13804 sizeof(halSetTDLSChanSwitchParams),
13805 &pSendBuffer, &usDataOffset, &usSendSize))||
13806 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13807 {
13808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13809 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13810 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13811 WDI_ASSERT(0);
13812 return WDI_STATUS_E_FAILURE;
13813 }
13814
13815 halSetTDLSChanSwitchParams.staIdx =
13816 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13817 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13818 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13819 halSetTDLSChanSwitchParams.targetOperClass =
13820 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13821 halSetTDLSChanSwitchParams.targetChannel =
13822 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13823 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13824 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13825 wpalMemoryCopy( pSendBuffer+usDataOffset,
13826 &halSetTDLSChanSwitchParams,
13827 sizeof(halSetTDLSChanSwitchParams));
13828
13829 pWDICtx->wdiReqStatusCB = NULL;
13830 pWDICtx->pReqStatusUserData = NULL;
13831
13832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13833 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13834 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13835}/*WDI_ProcessTdlsChanSwitchReq*/
13836
13837#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013838
Jeff Johnson295189b2012-06-20 16:38:30 -070013839
13840
13841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 @param None
13845
13846 @see
13847 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013848*/
13849void
13850WDI_SetPowerStateCb
13851(
13852 wpt_status status,
13853 unsigned int dxePhyAddr,
13854 void *pContext
13855)
13856{
13857 wpt_status wptStatus;
13858 WDI_ControlBlockType *pCB = NULL;
13859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 /*
13861 * Trigger the event to bring the Enter BMPS req function to come
13862 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013863*/
13864 if( NULL != pContext )
13865 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 }
13868 else
13869 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 pCB = &gWDICb;
13872 }
Mihir Shetea4306052014-03-25 00:02:54 +053013873
13874 if(eWLAN_PAL_STATUS_SUCCESS == status )
13875 {
13876 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13877 }
13878 else
13879 {
13880 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013882 pCB->dxePhyAddr = dxePhyAddr;
13883 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13884 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13885 {
13886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13887 "Failed to set an event");
13888
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891 return;
13892}
13893
13894
13895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013898
13899 @param pWDICtx: pointer to the WLAN DAL context
13900 pEventData: pointer to the event information structure
13901
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 @see
13903 @return Result of the function call
13904*/
13905WDI_Status
13906WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013907(
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 WDI_ControlBlockType* pWDICtx,
13909 WDI_EventInfoType* pEventData
13910)
13911{
Jeff Johnson43971f52012-07-17 12:26:56 -070013912 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 wpt_uint16 usDataOffset = 0;
13916 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013917 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13919
13920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013922 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013923 if ((NULL == pEventData ) ||
13924 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13925 (NULL == (pwdiEnterImpsReqParams =
13926 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 {
13928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013931 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 }
13933
13934 /*-----------------------------------------------------------------------
13935 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013937 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 0,
13940 &pSendBuffer, &usDataOffset, &usSendSize))||
13941 ( usSendSize < (usDataOffset )))
13942 {
13943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013944 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 pEventData, wdiEnterImpsRspCb);
13946 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013947 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 }
13949
13950 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013951 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13952 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 {
13954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13955 "WDI Init failed to reset an event");
13956
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013958 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 }
13960
13961 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013962 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13963 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013965 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013966 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013967 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013968 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013969
13970 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013973 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13974 WDI_SET_POWER_STATE_TIMEOUT);
13975 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 {
13977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13978 "WDI Init failed to wait on an event");
13979
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013981 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 }
13983
Mihir Shetea4306052014-03-25 00:02:54 +053013984 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13985 {
13986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13987 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13988
13989 goto fail;
13990 }
13991
13992 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13993 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13998 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013999
14000fail:
14001 // Release the message buffer so we don't leak
14002 wpalMemoryFree(pSendBuffer);
14003
14004failRequest:
14005 //WDA should have failure check to avoid the memory leak
14006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007}/*WDI_ProcessEnterImpsReq*/
14008
14009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014012
14013 @param pWDICtx: pointer to the WLAN DAL context
14014 pEventData: pointer to the event information structure
14015
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 @see
14017 @return Result of the function call
14018*/
14019WDI_Status
14020WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014021(
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 WDI_ControlBlockType* pWDICtx,
14023 WDI_EventInfoType* pEventData
14024)
14025{
14026 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 wpt_uint16 usDataOffset = 0;
14029 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014030 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14032
14033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 -------------------------------------------------------------------------*/
14036 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014037 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14038 (NULL == (pwdiExitImpsReqParams =
14039 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 {
14041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 }
14046
14047 /*-----------------------------------------------------------------------
14048 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 0,
14053 &pSendBuffer, &usDataOffset, &usSendSize))||
14054 ( usSendSize < (usDataOffset )))
14055 {
14056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014057 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 pEventData, wdiExitImpsRspCb);
14059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014062 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14063 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14068 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014069}/*WDI_ProcessExitImpsReq*/
14070
14071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014074
14075 @param pWDICtx: pointer to the WLAN DAL context
14076 pEventData: pointer to the event information structure
14077
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 @see
14079 @return Result of the function call
14080*/
14081WDI_Status
14082WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014083(
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 WDI_ControlBlockType* pWDICtx,
14085 WDI_EventInfoType* pEventData
14086)
14087{
14088 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14089 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 wpt_uint16 usDataOffset = 0;
14092 wpt_uint16 usSendSize = 0;
14093 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014094 wpt_status wptStatus;
14095
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14097
14098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 -------------------------------------------------------------------------*/
14101 if (( NULL == pEventData ) ||
14102 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14103 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14104 {
14105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 }
14110
14111 /*-----------------------------------------------------------------------
14112 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 sizeof(enterBmpsReq),
14117 &pSendBuffer, &usDataOffset, &usSendSize))||
14118 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14119 {
14120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014121 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14123 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014124 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 }
14126
14127 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014128 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14129 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 {
14131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14132 "WDI Init failed to reset an event");
14133
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014135 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 }
14137
14138 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014139 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14140 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14141 {
14142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014143 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014144 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014145 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014146 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014147
14148/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014149 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014151 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14152 WDI_SET_POWER_STATE_TIMEOUT);
14153 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 {
14155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14156 "WDI Init failed to wait on an event");
14157
Jeff Johnsone7245742012-09-05 17:12:55 -070014158 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014159 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 }
14161
14162 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14163
14164 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14165 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14166 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14167 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14168
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014169 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14171 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14172 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14173
14174 wpalMemoryCopy( pSendBuffer+usDataOffset,
14175 &enterBmpsReq,
14176 sizeof(enterBmpsReq));
14177
14178 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180
14181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14185 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014186
14187fail:
14188 // Release the message buffer so we don't leak
14189 wpalMemoryFree(pSendBuffer);
14190
14191failRequest:
14192 //WDA should have failure check to avoid the memory leak
14193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014194}/*WDI_ProcessEnterBmpsReq*/
14195
14196/**
14197 @brief Process Exit BMPS Request function (called when Main FSM
14198 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014199
14200 @param pWDICtx: pointer to the WLAN DAL context
14201 pEventData: pointer to the event information structure
14202
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 @see
14204 @return Result of the function call
14205*/
14206WDI_Status
14207WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014208(
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 WDI_ControlBlockType* pWDICtx,
14210 WDI_EventInfoType* pEventData
14211)
14212{
14213 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14214 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 wpt_uint16 usDataOffset = 0;
14217 wpt_uint16 usSendSize = 0;
14218 tHalExitBmpsReqParams exitBmpsReq;
14219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14220
14221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 -------------------------------------------------------------------------*/
14224 if (( NULL == pEventData ) ||
14225 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14226 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14227 {
14228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 }
14233
14234 /*-----------------------------------------------------------------------
14235 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 sizeof(exitBmpsReq),
14240 &pSendBuffer, &usDataOffset, &usSendSize))||
14241 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14242 {
14243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014244 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 }
14249 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14250
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 wpalMemoryCopy( pSendBuffer+usDataOffset,
14254 &exitBmpsReq,
14255 sizeof(exitBmpsReq));
14256
14257 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014259
14260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14264 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014265}/*WDI_ProcessExitBmpsReq*/
14266
14267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014268 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014270
14271 @param pWDICtx: pointer to the WLAN DAL context
14272 pEventData: pointer to the event information structure
14273
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 @see
14275 @return Result of the function call
14276*/
14277WDI_Status
14278WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014279(
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 WDI_ControlBlockType* pWDICtx,
14281 WDI_EventInfoType* pEventData
14282)
14283{
14284 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14285 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 wpt_uint16 usDataOffset = 0;
14288 wpt_uint16 usSendSize = 0;
14289 tUapsdReqParams enterUapsdReq;
14290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14291
14292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 -------------------------------------------------------------------------*/
14295 if (( NULL == pEventData ) ||
14296 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14297 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14298 {
14299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 }
14304
14305 /*-----------------------------------------------------------------------
14306 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 sizeof(enterUapsdReq),
14311 &pSendBuffer, &usDataOffset, &usSendSize))||
14312 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14313 {
14314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014315 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 }
14320
14321 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14322 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14323 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14324 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14325 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14326 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14327 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14328 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014330
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 wpalMemoryCopy( pSendBuffer+usDataOffset,
14332 &enterUapsdReq,
14333 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014334
14335 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014337
14338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14342 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014343}/*WDI_ProcessEnterUapsdReq*/
14344
14345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014348
14349 @param pWDICtx: pointer to the WLAN DAL context
14350 pEventData: pointer to the event information structure
14351
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 @see
14353 @return Result of the function call
14354*/
14355WDI_Status
14356WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014357(
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 WDI_ControlBlockType* pWDICtx,
14359 WDI_EventInfoType* pEventData
14360)
14361{
14362 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 wpt_uint16 usDataOffset = 0;
14365 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014366 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14367 wpt_uint8 bssIdx = 0;
14368
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14370
14371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 -------------------------------------------------------------------------*/
14374 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014375 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14377 {
14378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 }
14383
14384 /*-----------------------------------------------------------------------
14385 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014389 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014391 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 {
14393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014394 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 pEventData, wdiExitUapsdRspCb);
14396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 }
14399
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014400 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14401
14402 wpalMemoryCopy( pSendBuffer+usDataOffset,
14403 &bssIdx,
14404 sizeof(wpt_uint8));
14405
14406 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14407 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14408
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14413 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014414}/*WDI_ProcessExitUapsdReq*/
14415
14416/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014419
14420 @param pWDICtx: pointer to the WLAN DAL context
14421 pEventData: pointer to the event information structure
14422
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 @see
14424 @return Result of the function call
14425*/
14426WDI_Status
14427WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014428(
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 WDI_ControlBlockType* pWDICtx,
14430 WDI_EventInfoType* pEventData
14431)
14432{
14433 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14434 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 wpt_uint16 usDataOffset = 0;
14437 wpt_uint16 usSendSize = 0;
14438 tUapsdInfo uapsdAcParamsReq;
14439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14440
14441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 -------------------------------------------------------------------------*/
14444 if (( NULL == pEventData ) ||
14445 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14446 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14447 {
14448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 }
14453
14454 /*-----------------------------------------------------------------------
14455 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 sizeof(uapsdAcParamsReq),
14460 &pSendBuffer, &usDataOffset, &usSendSize))||
14461 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014464 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 }
14469
14470 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14471 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14472 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14473 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14474 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14475 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14476
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 wpalMemoryCopy( pSendBuffer+usDataOffset,
14478 &uapsdAcParamsReq,
14479 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014480
14481 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014483
14484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14488 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489}/*WDI_ProcessSetUapsdAcParamsReq*/
14490
14491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014494
14495 @param pWDICtx: pointer to the WLAN DAL context
14496 pEventData: pointer to the event information structure
14497
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 @see
14499 @return Result of the function call
14500*/
14501WDI_Status
14502WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014503(
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 WDI_ControlBlockType* pWDICtx,
14505 WDI_EventInfoType* pEventData
14506)
14507{
14508 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14509 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 wpt_uint16 usDataOffset = 0;
14512 wpt_uint16 usSendSize = 0;
14513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14514
14515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 -------------------------------------------------------------------------*/
14518 if (( NULL == pEventData ) ||
14519 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14520 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14521 {
14522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 }
14527
14528 /*-----------------------------------------------------------------------
14529 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014530 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14534 &pSendBuffer, &usDataOffset, &usSendSize))||
14535 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14536 {
14537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014538 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 }
14543
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 wpalMemoryCopy( pSendBuffer+usDataOffset,
14545 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14546 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014547
14548 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014550
14551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14555 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014556}/*WDI_ProcessUpdateUapsdParamsReq*/
14557
14558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014561
14562 @param pWDICtx: pointer to the WLAN DAL context
14563 pEventData: pointer to the event information structure
14564
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 @see
14566 @return Result of the function call
14567*/
14568WDI_Status
14569WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014570(
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 WDI_ControlBlockType* pWDICtx,
14572 WDI_EventInfoType* pEventData
14573)
14574{
14575 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14576 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 wpt_uint16 usDataOffset = 0;
14579 wpt_uint16 usSendSize = 0;
14580 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14581
14582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14583
14584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 -------------------------------------------------------------------------*/
14587 if (( NULL == pEventData ) ||
14588 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14589 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14590 {
14591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 }
14596
14597 /*-----------------------------------------------------------------------
14598 Get message buffer
14599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 sizeof(halRxpFilterParams),
14602 &pSendBuffer, &usDataOffset, &usSendSize))||
14603 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14604 {
14605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014606 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 }
14611
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014614 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14616
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wpalMemoryCopy( pSendBuffer+usDataOffset,
14618 &halRxpFilterParams,
14619 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014620
14621 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14628 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014629}/*WDI_ProcessConfigureRxpFilterReq*/
14630
14631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014634
14635 @param pWDICtx: pointer to the WLAN DAL context
14636 pEventData: pointer to the event information structure
14637
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 @see
14639 @return Result of the function call
14640*/
14641WDI_Status
14642WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014643(
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 WDI_ControlBlockType* pWDICtx,
14645 WDI_EventInfoType* pEventData
14646)
14647{
14648 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14649 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 wpt_uint16 usDataOffset = 0;
14652 wpt_uint16 usSendSize = 0;
14653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14654
14655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 -------------------------------------------------------------------------*/
14658 if (( NULL == pEventData ) ||
14659 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14660 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14661 {
14662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 }
14667
14668 /*-----------------------------------------------------------------------
14669 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14674 &pSendBuffer, &usDataOffset, &usSendSize))||
14675 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014678 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 }
14683
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 wpalMemoryCopy( pSendBuffer+usDataOffset,
14685 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14686 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14687 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14688 &pwdiBeaconFilterParams->aFilters[0],
14689 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014690
14691 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014693
14694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14698 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014699}/*WDI_ProcessSetBeaconFilterReq*/
14700
14701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014704
14705 @param pWDICtx: pointer to the WLAN DAL context
14706 pEventData: pointer to the event information structure
14707
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 @see
14709 @return Result of the function call
14710*/
14711WDI_Status
14712WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014713(
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 WDI_ControlBlockType* pWDICtx,
14715 WDI_EventInfoType* pEventData
14716)
14717{
14718 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14719 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 wpt_uint16 usDataOffset = 0;
14722 wpt_uint16 usSendSize = 0;
14723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14724
14725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 -------------------------------------------------------------------------*/
14728 if (( NULL == pEventData ) ||
14729 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14730 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14731 {
14732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 }
14737
14738 /*-----------------------------------------------------------------------
14739 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14744 &pSendBuffer, &usDataOffset, &usSendSize))||
14745 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14746 {
14747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014748 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 }
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 wpalMemoryCopy( pSendBuffer+usDataOffset,
14755 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14756 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
14758 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14765 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014766}
14767
14768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014771
14772 @param pWDICtx: pointer to the WLAN DAL context
14773 pEventData: pointer to the event information structure
14774
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 @see
14776 @return Result of the function call
14777*/
14778WDI_Status
14779WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014780(
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 WDI_ControlBlockType* pWDICtx,
14782 WDI_EventInfoType* pEventData
14783)
14784{
14785 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14786 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014788 wpt_uint16 usDataOffset = 0;
14789 wpt_uint16 usSendSize = 0;
14790 tHalRSSIThresholds rssiThresholdsReq;
14791 WDI_Status ret_status = 0;
14792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14793
14794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 -------------------------------------------------------------------------*/
14797 if (( NULL == pEventData ) ||
14798 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14799 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14800 {
14801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 }
14806
14807 /*-----------------------------------------------------------------------
14808 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 sizeof(rssiThresholdsReq),
14813 &pSendBuffer, &usDataOffset, &usSendSize))||
14814 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14815 {
14816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014817 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 }
14822
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014833 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14843
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 wpalMemoryCopy( pSendBuffer+usDataOffset,
14845 &rssiThresholdsReq,
14846 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014847
14848 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014849 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014850
14851 /*-------------------------------------------------------------------------
14852 Send Set threshold req to HAL
14853 -------------------------------------------------------------------------*/
14854 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14855 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14856 {
14857 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14858 // req. Then as a result of processing the threshold cross ind, we trigger
14859 // a Set threshold req, then we need to indicate to WDI that it needs to
14860 // go to busy state as a result of the indication as we sent a req in the
14861 // same WDI context.
14862 // Hence expected state transition is to busy.
14863 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14864 }
14865
14866 return ret_status;
14867}
14868
14869/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014872
14873 @param pWDICtx: pointer to the WLAN DAL context
14874 pEventData: pointer to the event information structure
14875
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 @see
14877 @return Result of the function call
14878*/
14879WDI_Status
14880WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014881(
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 WDI_ControlBlockType* pWDICtx,
14883 WDI_EventInfoType* pEventData
14884)
14885{
14886 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14887 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 wpt_uint16 usDataOffset = 0;
14890 wpt_uint16 usSendSize = 0;
14891 tHalHostOffloadReq hostOffloadParams;
14892 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014893 wpt_uint8 ucCurrentBSSSesIdx = 0;
14894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895
14896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14897
14898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 -------------------------------------------------------------------------*/
14901 if (( NULL == pEventData ) ||
14902 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14903 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14904 {
14905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014908 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 }
14910
14911 /*-----------------------------------------------------------------------
14912 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14917 &pSendBuffer, &usDataOffset, &usSendSize))||
14918 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14919 {
14920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014921 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14923 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014924 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 }
14926
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014927 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14928 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14929 &pBSSSes);
14930 if ( NULL == pBSSSes )
14931 {
c_hpothu86feba52014-10-28 15:51:18 +053014932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014933 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14934 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014935 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014936 }
14937
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14939 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14942 {
14943 // ARP Offload
14944 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14945 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14946 4);
14947 }
14948 else
14949 {
14950 // NS Offload
14951 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14952 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14953 16);
14954
14955#ifdef WLAN_NS_OFFLOAD
14956 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14957 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14958 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14959 16);
14960 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14961 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14962 16);
14963 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14964 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14965 16);
14966 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14967 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14968 16);
14969 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14970 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14971 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014972 nsOffloadParams.srcIPv6AddrValid =
14973 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14974
14975 nsOffloadParams.targetIPv6Addr1Valid =
14976 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14977
14978 nsOffloadParams.targetIPv6Addr2Valid =
14979 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14980
14981 nsOffloadParams.slotIndex =
14982 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014983
Jeff Johnson295189b2012-06-20 16:38:30 -070014984#endif // WLAN_NS_OFFLOAD
14985 }
14986
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014987 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14988
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 // copy hostOffloadParams into pSendBuffer
14990 wpalMemoryCopy( pSendBuffer+usDataOffset,
14991 &hostOffloadParams,
14992 sizeof(hostOffloadParams));
14993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014994 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014996 // copy nsOffloadParams into pSendBuffer
14997 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 &nsOffloadParams,
14999 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015000 }
15001 else
15002 {
15003#ifdef WLAN_NS_OFFLOAD
15004 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15005 {
15006 // copy nsOffloadParams into pSendBuffer
15007 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15008 &nsOffloadParams,
15009 sizeof(nsOffloadParams));
15010 }
15011#endif
15012 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015013
15014 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016
15017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15021 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015022
15023fail:
15024 // Release the message buffer so we don't leak
15025 wpalMemoryFree(pSendBuffer);
15026
15027failRequest:
15028 //WDA should have failure check to avoid the memory leak
15029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015030}/*WDI_ProcessHostOffloadReq*/
15031
15032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015035
15036 @param pWDICtx: pointer to the WLAN DAL context
15037 pEventData: pointer to the event information structure
15038
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 @see
15040 @return Result of the function call
15041*/
15042WDI_Status
15043WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015044(
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 WDI_ControlBlockType* pWDICtx,
15046 WDI_EventInfoType* pEventData
15047)
15048{
15049 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15050 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 wpt_uint16 usDataOffset = 0;
15053 wpt_uint16 usSendSize = 0;
15054 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015055 wpt_uint8 ucCurrentBSSSesIdx = 0;
15056 WDI_BSSSessionType* pBSSSes = NULL;
15057
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15059
15060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 -------------------------------------------------------------------------*/
15063 if (( NULL == pEventData ) ||
15064 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15065 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15066 {
15067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15068 "Invalid parameters in Keep Alive req");
15069 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015070 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 }
15072
15073 /*-----------------------------------------------------------------------
15074 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 sizeof(keepAliveReq),
15079 &pSendBuffer, &usDataOffset, &usSendSize))||
15080 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15081 {
15082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015083 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15085 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015086 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 }
15088
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015089 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15090 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15091 &pBSSSes);
15092 if ( NULL == pBSSSes )
15093 {
15094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015095 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015096 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015097 }
15098
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15100 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15101
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015102 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015103
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15105 {
15106 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15107 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15108 HAL_IPV4_ADDR_LEN);
15109 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15110 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 wpalMemoryCopy(keepAliveReq.destMacAddr,
15113 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15114 HAL_MAC_ADDR_LEN);
15115 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015116
15117 wpalMemoryCopy( pSendBuffer+usDataOffset,
15118 &keepAliveReq,
15119 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015120
15121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015122 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015123
15124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015125 "Process keep alive req time period %d",
15126 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015127
15128 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015130
15131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15132 "Sending keep alive req to HAL");
15133
15134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15138 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015139
15140fail:
15141 // Release the message buffer so we don't leak
15142 wpalMemoryFree(pSendBuffer);
15143
15144failRequest:
15145 //WDA should have failure check to avoid the memory leak
15146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015147}/*WDI_ProcessKeepAliveReq*/
15148
15149
15150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015153
15154 @param pWDICtx: pointer to the WLAN DAL context
15155 pEventData: pointer to the event information structure
15156
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 @see
15158 @return Result of the function call
15159*/
15160WDI_Status
15161WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015162(
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 WDI_ControlBlockType* pWDICtx,
15164 WDI_EventInfoType* pEventData
15165)
15166{
15167 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15168 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 wpt_uint16 usDataOffset = 0;
15171 wpt_uint16 usSendSize = 0;
15172 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015173 wpt_uint8 ucCurrentBSSSesIdx = 0;
15174 WDI_BSSSessionType* pBSSSes = NULL;
15175
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15177
15178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 -------------------------------------------------------------------------*/
15181 if (( NULL == pEventData ) ||
15182 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15183 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15184 {
15185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015188 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 }
15190
15191 /*-----------------------------------------------------------------------
15192 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 sizeof(wowlAddBcPtrnReq),
15197 &pSendBuffer, &usDataOffset, &usSendSize))||
15198 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15199 {
15200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015201 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15203 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015204 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 }
15206
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015207 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15208 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15209 &pBSSSes);
15210 if ( NULL == pBSSSes )
15211 {
15212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015213 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015214 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015215 }
15216
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15225
15226 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15227 {
15228 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15229 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15230 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15231 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15232 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15233 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15234 }
15235 else
15236 {
15237 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15238 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15239 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15240 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15241 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15242 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15243
15244 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15245 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15246 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15247 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15248 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15249 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15250 }
15251
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015252 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15253
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 wpalMemoryCopy( pSendBuffer+usDataOffset,
15255 &wowlAddBcPtrnReq,
15256 sizeof(wowlAddBcPtrnReq));
15257
15258 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260
15261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15265 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015266fail:
15267 // Release the message buffer so we don't leak
15268 wpalMemoryFree(pSendBuffer);
15269
15270failRequest:
15271 //WDA should have failure check to avoid the memory leak
15272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015273}/*WDI_ProcessWowlAddBcPtrnReq*/
15274
15275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015278
15279 @param pWDICtx: pointer to the WLAN DAL context
15280 pEventData: pointer to the event information structure
15281
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 @see
15283 @return Result of the function call
15284*/
15285WDI_Status
15286WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015287(
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 WDI_ControlBlockType* pWDICtx,
15289 WDI_EventInfoType* pEventData
15290)
15291{
15292 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15293 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 wpt_uint16 usDataOffset = 0;
15296 wpt_uint16 usSendSize = 0;
15297 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015298 wpt_uint8 ucCurrentBSSSesIdx = 0;
15299 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15301
15302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 -------------------------------------------------------------------------*/
15305 if (( NULL == pEventData ) ||
15306 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15307 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15308 {
15309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015312 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 }
15314
15315 /*-----------------------------------------------------------------------
15316 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 sizeof(wowlDelBcPtrnReq),
15321 &pSendBuffer, &usDataOffset, &usSendSize))||
15322 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15323 {
15324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015325 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15327 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015328 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 }
15330
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015331 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15332 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15333 &pBSSSes);
15334 if ( NULL == pBSSSes )
15335 {
15336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015337 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015338 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015339 }
15340
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015343
15344 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15345
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 wpalMemoryCopy( pSendBuffer+usDataOffset,
15347 &wowlDelBcPtrnReq,
15348 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015349
15350 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015352
15353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15357 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015358
15359fail:
15360 // Release the message buffer so we don't leak
15361 wpalMemoryFree(pSendBuffer);
15362
15363failRequest:
15364 //WDA should have failure check to avoid the memory leak
15365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366}/*WDI_ProcessWowlDelBcPtrnReq*/
15367
15368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015371
15372 @param pWDICtx: pointer to the WLAN DAL context
15373 pEventData: pointer to the event information structure
15374
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 @see
15376 @return Result of the function call
15377*/
15378WDI_Status
15379WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015380(
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 WDI_ControlBlockType* pWDICtx,
15382 WDI_EventInfoType* pEventData
15383)
15384{
15385 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15386 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 wpt_uint16 usDataOffset = 0;
15389 wpt_uint16 usSendSize = 0;
15390 tHalWowlEnterParams wowlEnterReq;
15391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15392
15393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 -------------------------------------------------------------------------*/
15396 if (( NULL == pEventData ) ||
15397 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15398 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15399 {
15400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 }
15405
15406 /*-----------------------------------------------------------------------
15407 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015408 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015409 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015410 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 sizeof(wowlEnterReq),
15412 &pSendBuffer, &usDataOffset, &usSendSize))||
15413 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15414 {
15415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015416 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 }
15421
Kumar Anandaca924e2013-07-22 14:35:34 -070015422 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15423
Jeff Johnsone7245742012-09-05 17:12:55 -070015424 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015426 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15440
15441#ifdef WLAN_WAKEUP_EVENTS
15442 wowlEnterReq.ucWoWEAPIDRequestEnable =
15443 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15444
15445 wowlEnterReq.ucWoWEAPOL4WayEnable =
15446 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15447
15448 wowlEnterReq.ucWowNetScanOffloadMatch =
15449 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15450
15451 wowlEnterReq.ucWowGTKRekeyError =
15452 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15453
15454 wowlEnterReq.ucWoWBSSConnLoss =
15455 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15456#endif // WLAN_WAKEUP_EVENTS
15457
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015458 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15459
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15461 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15462 sizeof(tSirMacAddr));
15463
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 wpalMemoryCopy( pSendBuffer+usDataOffset,
15465 &wowlEnterReq,
15466 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015467
15468 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015470
15471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15475 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015476}/*WDI_ProcessWowlEnterReq*/
15477
15478/**
15479 @brief Process Wowl exit Request function (called when Main FSM
15480 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015481
15482 @param pWDICtx: pointer to the WLAN DAL context
15483 pEventData: pointer to the event information structure
15484
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 @see
15486 @return Result of the function call
15487*/
15488WDI_Status
15489WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015490(
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 WDI_ControlBlockType* pWDICtx,
15492 WDI_EventInfoType* pEventData
15493)
15494{
15495 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015496 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 wpt_uint16 usDataOffset = 0;
15499 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015500 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15502
15503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 -------------------------------------------------------------------------*/
15506 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015507 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15509 {
15510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 }
15515
15516 /*-----------------------------------------------------------------------
15517 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015521 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015523 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 {
15525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015526 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 pEventData, wdiWowlExitCb);
15528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 }
15531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015532 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15533
15534 wpalMemoryCopy( pSendBuffer+usDataOffset,
15535 &wowlExitparams,
15536 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15541 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542}/*WDI_ProcessWowlExitReq*/
15543
15544/**
15545 @brief Process Configure Apps Cpu Wakeup State Request function
15546 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015547
15548 @param pWDICtx: pointer to the WLAN DAL context
15549 pEventData: pointer to the event information structure
15550
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 @see
15552 @return Result of the function call
15553*/
15554WDI_Status
15555WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015556(
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 WDI_ControlBlockType* pWDICtx,
15558 WDI_EventInfoType* pEventData
15559)
15560{
15561 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15562 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 wpt_uint16 usDataOffset = 0;
15565 wpt_uint16 usSendSize = 0;
15566 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15568
15569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 -------------------------------------------------------------------------*/
15572 if (( NULL == pEventData ) ||
15573 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15574 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15575 {
15576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 }
15581
15582 /*-----------------------------------------------------------------------
15583 Get message buffer
15584 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 sizeof(halCfgAppsCpuWakeupStateReqParams),
15587 &pSendBuffer, &usDataOffset, &usSendSize))||
15588 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15589 {
15590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015591 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 }
15596
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 wpalMemoryCopy( pSendBuffer+usDataOffset,
15601 &halCfgAppsCpuWakeupStateReqParams,
15602 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015603
15604 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606
15607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15611 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15612 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015613}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15614
15615#ifdef WLAN_FEATURE_VOWIFI_11R
15616/**
15617 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15618 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015619
15620 @param pWDICtx: pointer to the WLAN DAL context
15621 pEventData: pointer to the event information structure
15622
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 @see
15624 @return Result of the function call
15625*/
15626WDI_Status
15627WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015628(
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 WDI_ControlBlockType* pWDICtx,
15630 WDI_EventInfoType* pEventData
15631)
15632{
15633 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15634 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 wpt_uint16 usDataOffset = 0;
15639 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 wpt_macAddr macBSSID;
15642 tAggrAddTsReq halAggrAddTsReq;
15643 int i;
15644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15645
15646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 -------------------------------------------------------------------------*/
15649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15650 ( NULL == pEventData->pCBfnc ))
15651 {
15652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 }
15657 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15658 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15659 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15660 /*-------------------------------------------------------------------------
15661 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 -------------------------------------------------------------------------*/
15664 wpalMutexAcquire(&pWDICtx->wptMutex);
15665
15666 /*------------------------------------------------------------------------
15667 Find the BSS for which the request is made and identify WDI session
15668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15670 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 &macBSSID))
15672 {
15673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015674 "This station does not exist in the WDI Station Table %d",
15675 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 }
15679
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15681 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15684 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15685 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015686
15687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015690
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 /*------------------------------------------------------------------------
15692 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 ------------------------------------------------------------------------*/
15695 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15696 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15698 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15699 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015700
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 }
15705
15706 wpalMutexRelease(&pWDICtx->wptMutex);
15707 /*-----------------------------------------------------------------------
15708 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 sizeof(tAggrAddTsParams),
15713 &pSendBuffer, &usDataOffset, &usSendSize))||
15714 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15715 {
15716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015717 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 }
15722
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15727
15728 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15729 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15736 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15739 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15742 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15745 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15748 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15751 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15754 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15757 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015762
15763
15764 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015774 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15794 }
15795
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 wpalMemoryCopy( pSendBuffer+usDataOffset,
15797 &halAggrAddTsReq,
15798 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015799
15800 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015802
15803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015809}/*WDI_ProcessAggrAddTSpecReq*/
15810#endif /* WLAN_FEATURE_VOWIFI_11R */
15811
15812/**
15813 @brief Process Shutdown Request function (called when Main FSM
15814 allows it)
15815
15816 @param pWDICtx: pointer to the WLAN DAL context
15817 pEventData: pointer to the event information structure
15818
15819 @see
15820 @return Result of the function call
15821*/
15822WDI_Status
15823WDI_ProcessShutdownReq
15824(
15825 WDI_ControlBlockType* pWDICtx,
15826 WDI_EventInfoType* pEventData
15827 )
15828{
15829 wpt_status wptStatus;
15830
15831
15832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15833
15834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 -------------------------------------------------------------------------*/
15837 if ( NULL == pEventData )
15838 {
15839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 WDI_ASSERT(0);
15842 return WDI_STATUS_E_FAILURE;
15843 }
15844
15845 wpalMutexAcquire(&pWDICtx->wptMutex);
15846
15847
15848 gWDIInitialized = eWLAN_PAL_FALSE;
15849 /*! TO DO: stop the data services */
15850 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15851 {
15852 /*Stop the STA Table !UT- check this logic again
15853 It is safer to do it here than on the response - because a stop is imminent*/
15854 WDI_STATableStop(pWDICtx);
15855
15856 /* Stop Transport Driver, DXE */
15857 WDTS_Stop(pWDICtx);
15858 }
15859
15860 /*Clear all pending request*/
15861 WDI_ClearPendingRequests(pWDICtx);
15862 /* Close Data transport*/
15863 /* FTM mode does not open Data Path */
15864 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15865 {
15866 WDTS_Close(pWDICtx);
15867 }
15868 /*Close the STA Table !UT- check this logic again*/
15869 WDI_STATableClose(pWDICtx);
15870 /*close the PAL */
15871 wptStatus = wpalClose(pWDICtx->pPALContext);
15872 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15873 {
15874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15875 "Failed to wpal Close %d", wptStatus);
15876 WDI_ASSERT(0);
15877 }
15878
15879 /*Transition back to init state*/
15880 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15881
15882 wpalMutexRelease(&pWDICtx->wptMutex);
15883
15884 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015886
15887
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015889}/*WDI_ProcessShutdownReq*/
15890
15891/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015893========================================================================*/
15894
15895/**
15896 @brief Process Start Response function (called when a response
15897 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015898
15899 @param pWDICtx: pointer to the WLAN DAL context
15900 pEventData: pointer to the event information structure
15901
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 @see
15903 @return Result of the function call
15904*/
15905WDI_Status
15906WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015907(
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 WDI_ControlBlockType* pWDICtx,
15909 WDI_EventInfoType* pEventData
15910)
15911{
15912 WDI_StartRspParamsType wdiRspParams;
15913 WDI_StartRspCb wdiStartRspCb = NULL;
15914
15915 tHalMacStartRspParams* startRspParams;
15916
15917#ifndef HAL_SELF_STA_PER_BSS
15918 WDI_AddStaParams wdiAddSTAParam = {0};
15919#endif
15920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15921
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 -------------------------------------------------------------------------*/
15926 if (( NULL == pEventData ) ||
15927 ( NULL == pEventData->pEventData) ||
15928 ( NULL == wdiStartRspCb ))
15929 {
15930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 }
15935
15936 /*-------------------------------------------------------------------------
15937 Extract response and send it to UMAC
15938 -------------------------------------------------------------------------*/
15939 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15940 {
15941 // not enough data was received
15942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015943 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 }
15948
15949 /*-------------------------------------------------------------------------
15950 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 -------------------------------------------------------------------------*/
15953 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15954
15955 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15956 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15957 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15958 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15959 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15960 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15961 wdiRspParams.wlanReportedVersion.major =
15962 startRspParams->wcnssWlanVersion.major;
15963 wdiRspParams.wlanReportedVersion.minor =
15964 startRspParams->wcnssWlanVersion.minor;
15965 wdiRspParams.wlanReportedVersion.version =
15966 startRspParams->wcnssWlanVersion.version;
15967 wdiRspParams.wlanReportedVersion.revision =
15968 startRspParams->wcnssWlanVersion.revision;
15969 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15970 startRspParams->wcnssCrmVersionString,
15971 sizeof(wdiRspParams.wcnssSoftwareVersion));
15972 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15973 startRspParams->wcnssWlanVersionString,
15974 sizeof(wdiRspParams.wcnssHardwareVersion));
15975 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15976
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015977 /*Save the HAL Version*/
15978 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15979
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 wpalMutexAcquire(&pWDICtx->wptMutex);
15981 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15982 {
15983 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15984
15985 /*Cache the start response for further use*/
15986 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 sizeof(pWDICtx->wdiCachedStartRspParams));
15989
15990 }
15991 else
15992 {
15993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15994 "Failed to start device with status %s(%d)",
15995 WDI_getHALStatusMsgString(startRspParams->status),
15996 startRspParams->status);
15997
15998 /*Set the expected state transition to stopped - because the start has
15999 failed*/
16000 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16001
16002 wpalMutexRelease(&pWDICtx->wptMutex);
16003
16004 /*Notify UMAC*/
16005 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016008 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016009
16010 /*Although the response is an error - it was processed by our function
16011 so as far as the caller is concerned this is a succesful reponse processing*/
16012 return WDI_STATUS_SUCCESS;
16013 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016014
Jeff Johnson295189b2012-06-20 16:38:30 -070016015 wpalMutexRelease(&pWDICtx->wptMutex);
16016
16017 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16018 {
16019 /* FTM mode does not need to execute below */
16020 /* Notify UMAC */
16021 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16022 return WDI_STATUS_SUCCESS;
16023 }
16024
16025 /* START the Data transport */
16026 WDTS_startTransport(pWDICtx);
16027
16028 /*Start the STA Table !- check this logic again*/
16029 WDI_STATableStart(pWDICtx);
16030
16031#ifndef HAL_SELF_STA_PER_BSS
16032 /* Store the Self STA Index */
16033 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16034
16035 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16036 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16037 WDI_MAC_ADDR_LEN);
16038
16039 /* At this point add the self-STA */
16040
16041 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16042 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16043 /*! TO DO: wdiAddSTAParam.dpuSig */
16044 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16045 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16046 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16047
16048 //all DPU indices are the same for self STA
16049 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16050 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016051 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16053 WDI_MAC_ADDR_LEN);
16054 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16055 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16056
16057 /* Note: Since we don't get an explicit config STA request for self STA, we
16058 add the self STA upon receiving the Start response message. But the
16059 self STA entry in the table is deleted when WDI gets an explicit delete STA
16060 request */
16061 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16062#endif
16063
16064 /*Notify UMAC*/
16065 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16066
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068}/*WDI_ProcessStartRsp*/
16069
16070
16071/**
16072 @brief Process Stop Response function (called when a response
16073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016074
16075 @param pWDICtx: pointer to the WLAN DAL context
16076 pEventData: pointer to the event information structure
16077
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 @see
16079 @return Result of the function call
16080*/
16081WDI_Status
16082WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016083(
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 WDI_ControlBlockType* pWDICtx,
16085 WDI_EventInfoType* pEventData
16086)
16087{
16088 WDI_Status wdiStatus;
16089 WDI_StopRspCb wdiStopRspCb = NULL;
16090
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16093
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 -------------------------------------------------------------------------*/
16098 if (( NULL == pEventData ) ||
16099 ( NULL == pEventData->pEventData) ||
16100 ( NULL == wdiStopRspCb ))
16101 {
16102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 }
16107
16108 /*-------------------------------------------------------------------------
16109 Extract response and send it to UMAC
16110 -------------------------------------------------------------------------*/
16111 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16112 {
16113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016114 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 pEventData->uEventDataSize);
16116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 }
16119
16120 /*-------------------------------------------------------------------------
16121 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16125 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 sizeof(halMacStopRspMsg.stopRspParams));
16127
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016129
16130 wpalMutexAcquire(&pWDICtx->wptMutex);
16131
16132 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 --------------------------------------------------------------------------*/
16135 if ( WDI_STATUS_SUCCESS != wdiStatus )
16136 {
16137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16138 "Failed to stop the device with status %s (%d)",
16139 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16140 halMacStopRspMsg.stopRspParams.status);
16141
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016143 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016144
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016148
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16150
16151 /*Transition now as WDI may get preempted imediately after it sends
16152 up the Stop Response and it will not get to process the state transition
16153 from Main Rsp function*/
16154 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16155 wpalMutexRelease(&pWDICtx->wptMutex);
16156
16157 /*! TO DO: - STOP the Data transport */
16158
16159 /*Notify UMAC*/
16160 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16161
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016163}/*WDI_ProcessStopRsp*/
16164
16165/**
16166 @brief Process Close Rsp function (called when a response
16167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016168
16169 @param pWDICtx: pointer to the WLAN DAL context
16170 pEventData: pointer to the event information structure
16171
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 @see
16173 @return Result of the function call
16174*/
16175WDI_Status
16176WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016177(
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 WDI_ControlBlockType* pWDICtx,
16179 WDI_EventInfoType* pEventData
16180)
16181{
16182 /*There is no close response comming from HAL - function just kept for
16183 simmetry */
16184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016186}/*WDI_ProcessCloseRsp*/
16187
16188
16189/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016191============================================================================*/
16192
16193/**
16194 @brief Process Init Scan Rsp function (called when a response
16195 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016196
16197 @param pWDICtx: pointer to the WLAN DAL context
16198 pEventData: pointer to the event information structure
16199
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 @see
16201 @return Result of the function call
16202*/
16203WDI_Status
16204WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016205(
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 WDI_ControlBlockType* pWDICtx,
16207 WDI_EventInfoType* pEventData
16208)
16209{
16210 WDI_Status wdiStatus;
16211 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016213 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16215
16216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 -------------------------------------------------------------------------*/
16219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16220 ( NULL == pEventData->pEventData))
16221 {
16222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 }
16227
16228 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16229 if( NULL == wdiInitScanRspCb)
16230 {
16231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016232 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 }
16236
16237 /*-------------------------------------------------------------------------
16238 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16242 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 sizeof(halInitScanRspMsg.initScanRspParams));
16244
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016246
16247 if ( pWDICtx->bInBmps )
16248 {
16249 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016250 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16251 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016253 "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 -080016254 WDI_ASSERT(0);
16255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 }
16257
16258 /*Notify UMAC*/
16259 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16260
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262}/*WDI_ProcessInitScanRsp*/
16263
16264
16265/**
16266 @brief Process Start Scan Rsp function (called when a response
16267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016268
16269 @param pWDICtx: pointer to the WLAN DAL context
16270 pEventData: pointer to the event information structure
16271
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 @see
16273 @return Result of the function call
16274*/
16275WDI_Status
16276WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016277(
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 WDI_ControlBlockType* pWDICtx,
16279 WDI_EventInfoType* pEventData
16280)
16281{
16282 WDI_StartScanRspParamsType wdiStartScanParams;
16283 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016284
16285 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16287
16288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 -------------------------------------------------------------------------*/
16291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16292 ( NULL == pEventData->pEventData))
16293 {
16294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 }
16299
16300 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16301 if( NULL == wdiStartScanRspCb)
16302 {
16303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016304 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 }
16308
16309 /*-------------------------------------------------------------------------
16310 Extract response and send it to UMAC
16311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16313 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 sizeof(halStartScanRspMsg.startScanRspParams));
16315
16316 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16317 halStartScanRspMsg.startScanRspParams.status);
16318#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016319 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 halStartScanRspMsg.startScanRspParams.startTSF,
16323 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016324#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016325
16326 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16327 {
16328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16329 "Start scan failed with status %s (%d)",
16330 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16331 halStartScanRspMsg.startScanRspParams.status);
16332 /* send the status to UMAC, don't return from here*/
16333 }
16334
16335 /*Notify UMAC*/
16336 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16337
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016339
16340}/*WDI_ProcessStartScanRsp*/
16341
16342
16343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016344 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016346
16347 @param pWDICtx: pointer to the WLAN DAL context
16348 pEventData: pointer to the event information structure
16349
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 @see
16351 @return Result of the function call
16352*/
16353WDI_Status
16354WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016355(
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 WDI_ControlBlockType* pWDICtx,
16357 WDI_EventInfoType* pEventData
16358)
16359{
16360 WDI_Status wdiStatus;
16361 tHalEndScanRspMsg halEndScanRspMsg;
16362 WDI_EndScanRspCb wdiEndScanRspCb;
16363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16364
16365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 -------------------------------------------------------------------------*/
16368 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16369 ( NULL == pEventData->pEventData))
16370 {
16371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 }
16376
16377 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16378
16379 /*-------------------------------------------------------------------------
16380 Extract response and send it to UMAC
16381 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16383 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 sizeof(halEndScanRspMsg.endScanRspParams));
16385
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016387
16388 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16389 {
16390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16391 "End Scan failed with status %s (%d )",
16392 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16393 halEndScanRspMsg.endScanRspParams.status);
16394 /* send the status to UMAC, don't return from here*/
16395 }
16396
16397 /*Notify UMAC*/
16398 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16399
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016401}/*WDI_ProcessEndScanRsp*/
16402
16403
16404/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016407
16408 @param pWDICtx: pointer to the WLAN DAL context
16409 pEventData: pointer to the event information structure
16410
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 @see
16412 @return Result of the function call
16413*/
16414WDI_Status
16415WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016416(
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 WDI_ControlBlockType* pWDICtx,
16418 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016419)
Jeff Johnson295189b2012-06-20 16:38:30 -070016420{
16421 WDI_Status wdiStatus;
16422 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016423
16424 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16426
16427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 -------------------------------------------------------------------------*/
16430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16431 ( NULL == pEventData->pEventData))
16432 {
16433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 }
16438
16439 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16440
16441 /*-------------------------------------------------------------------------
16442 Extract response and send it to UMAC
16443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16445 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16447
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016449
16450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016452 halFinishScanRspMsg.finishScanRspParams.status);
16453
16454 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16455 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16456 {
16457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16458 "Finish Scan failed with status %s (%d)",
16459 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16460 halFinishScanRspMsg.finishScanRspParams.status);
16461 /* send the status to UMAC, don't return from here*/
16462 }
16463
16464 /*Notify UMAC*/
16465 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16466
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016468}/*WDI_ProcessFinishScanRsp*/
16469
16470/**
16471 @brief Process Join Response function (called when a response
16472 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016473
16474 @param pWDICtx: pointer to the WLAN DAL context
16475 pEventData: pointer to the event information structure
16476
Jeff Johnson295189b2012-06-20 16:38:30 -070016477 @see
16478 @return Result of the function call
16479*/
16480WDI_Status
16481WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016482(
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 WDI_ControlBlockType* pWDICtx,
16484 WDI_EventInfoType* pEventData
16485)
16486{
16487 WDI_Status wdiStatus;
16488 WDI_JoinRspCb wdiJoinRspCb;
16489 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016490
16491 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16493
16494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 -------------------------------------------------------------------------*/
16497 if (( NULL == pWDICtx ) ||
16498 ( NULL == pWDICtx->pfncRspCB ) ||
16499 ( NULL == pEventData ) ||
16500 ( NULL == pEventData->pEventData))
16501 {
16502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 }
16507
16508 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16509
16510 /*-------------------------------------------------------------------------
16511 Extract response and send it to UMAC
16512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16514 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 sizeof(halJoinRspMsg.joinRspParams));
16516
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016518
16519 wpalMutexAcquire(&pWDICtx->wptMutex);
16520
16521 /*-----------------------------------------------------------------------
16522 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16527 {
16528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16530 "association no longer in progress %d - mysterious HAL response",
16531 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016532
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 }
16537
16538 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16539
16540 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 -----------------------------------------------------------------------*/
16543 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16544 {
16545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16546 "Join only allowed in Joining state - failure state is %d "
16547 "strange HAL response", pBSSSes->wdiAssocState);
16548
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 }
16554
16555
16556 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 -----------------------------------------------------------------------*/
16559 if ( WDI_STATUS_SUCCESS != wdiStatus )
16560 {
16561 /*Association was failed by HAL - remove session*/
16562 WDI_DeleteSession(pWDICtx, pBSSSes);
16563
16564 /*Association no longer in progress */
16565 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16566
16567 /*Association no longer in progress - prepare pending assoc for processing*/
16568 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016569
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 }
16571 else
16572 {
16573 /*Transition to state Joining - this may be redundant as we are supposed
16574 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 }
16577
16578 wpalMutexRelease(&pWDICtx->wptMutex);
16579
16580 /*Notify UMAC*/
16581 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016584}/*WDI_ProcessJoinRsp*/
16585
16586
16587/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016590
16591 @param pWDICtx: pointer to the WLAN DAL context
16592 pEventData: pointer to the event information structure
16593
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 @see
16595 @return Result of the function call
16596*/
16597WDI_Status
16598WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016599(
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ControlBlockType* pWDICtx,
16601 WDI_EventInfoType* pEventData
16602)
16603{
16604 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16605 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 WDI_BSSSessionType* pBSSSes = NULL;
16608
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16611 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016612
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16614
16615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 -------------------------------------------------------------------------*/
16618 if (( NULL == pEventData ) ||
16619 ( NULL == pEventData->pEventData))
16620 {
16621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 }
16626
16627 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16628
16629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16633 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 sizeof(halConfigBssRspMsg.configBssRspParams));
16635
16636 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16637 halConfigBssRspMsg.configBssRspParams.status);
16638 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16639 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16642 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016643
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016645
16646 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016648
16649 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016651
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016653
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16657 #endif
16658 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16659 halConfigBssRspMsg.configBssRspParams.staMac,
16660 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016661
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 wpalMutexAcquire(&pWDICtx->wptMutex);
16663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16667 wdiConfigBSSParams.macBSSID,
16668 &pBSSSes);
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 /*-----------------------------------------------------------------------
16671 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 -----------------------------------------------------------------------*/
16674 if ( NULL == pBSSSes )
16675 {
16676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16677 "Association sequence for this BSS does not yet exist "
16678 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016679
16680 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16681
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016685
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 /*Save data for this BSS*/
16687 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16688 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16699 pBSSSes->bcastStaIdx =
16700 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016701
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016703
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 /*-------------------------------------------------------------------------
16705 Add Peer STA
16706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16709 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016710
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wdiAddSTAParam.ucHTCapable =
16715 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16716 wdiAddSTAParam.ucStaType =
16717 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16721 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016723
16724 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16725 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16726 WDI_MAC_ADDR_LEN);
16727
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016741
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16743 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016744
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16746 /*-------------------------------------------------------------------------
16747 Add Broadcast STA only in AP mode
16748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016750 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 {
16752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16753 "Add BCAST STA to table for index: %d",
16754 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
16756 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016758
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16760 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16761 }
16762 wpalMutexRelease(&pWDICtx->wptMutex);
16763 }
16764 else
16765 {
16766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16767 "Config BSS RSP failed with status : %s(%d)",
16768 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 halConfigBssRspMsg.configBssRspParams.status);
16771
Jeff Johnsone7245742012-09-05 17:12:55 -070016772
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 /*Association was failed by HAL - remove session*/
16774 WDI_DeleteSession(pWDICtx, pBSSSes);
16775
16776 /*Association no longer in progress */
16777 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16778
16779 /*Association no longer in progress - prepare pending assoc for processing*/
16780 WDI_DequeueAssocRequest(pWDICtx);
16781
16782 }
16783
16784 /*Notify UMAC*/
16785 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16786
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016788}/*WDI_ProcessConfigBSSRsp*/
16789
16790
16791/**
16792 @brief Process Del BSS Response function (called when a response
16793 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016794
16795 @param pWDICtx: pointer to the WLAN DAL context
16796 pEventData: pointer to the event information structure
16797
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 @see
16799 @return Result of the function call
16800*/
16801WDI_Status
16802WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016803(
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 WDI_ControlBlockType* pWDICtx,
16805 WDI_EventInfoType* pEventData
16806)
16807{
16808 WDI_DelBSSRspParamsType wdiDelBSSParams;
16809 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016810 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 WDI_BSSSessionType* pBSSSes = NULL;
16812
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16815
16816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 -------------------------------------------------------------------------*/
16819 if (( NULL == pEventData ) ||
16820 ( NULL == pEventData->pEventData))
16821 {
16822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 }
16827
16828 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16829
16830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016831 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16834 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 sizeof(halDelBssRspMsg.deleteBssRspParams));
16836
16837
16838 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016840
16841 wpalMutexAcquire(&pWDICtx->wptMutex);
16842
16843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16847 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16848 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016849
16850 /*-----------------------------------------------------------------------
16851 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 -----------------------------------------------------------------------*/
16854 if ( NULL == pBSSSes )
16855 {
16856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16857 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016858 "association no longer in progress - mysterious HAL response");
16859
16860 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16861
16862 wpalMutexRelease(&pWDICtx->wptMutex);
16863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016865
16866 /*Extract BSSID for the response to UMAC*/
16867 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16868 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16869
16870 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16871
16872 /*-----------------------------------------------------------------------
16873 The current session will be deleted
16874 -----------------------------------------------------------------------*/
16875 WDI_DeleteSession(pWDICtx, pBSSSes);
16876
16877
16878 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016879 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16880 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016882 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016883 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016884
16885 /* Delete the STA's in this BSS */
16886 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16887
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 wpalMutexRelease(&pWDICtx->wptMutex);
16889
16890 /*Notify UMAC*/
16891 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16892
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016894}/*WDI_ProcessDelBSSRsp*/
16895
16896/**
16897 @brief Process Post Assoc Rsp function (called when a response
16898 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016899
16900 @param pWDICtx: pointer to the WLAN DAL context
16901 pEventData: pointer to the event information structure
16902
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 @see
16904 @return Result of the function call
16905*/
16906WDI_Status
16907WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016908(
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 WDI_ControlBlockType* pWDICtx,
16910 WDI_EventInfoType* pEventData
16911)
16912{
16913 WDI_PostAssocRspParamsType wdiPostAssocParams;
16914 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16919
16920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 -------------------------------------------------------------------------*/
16923 if (( NULL == pEventData ) ||
16924 ( NULL == pEventData->pEventData))
16925 {
16926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 }
16931
16932 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16933
16934 /*-------------------------------------------------------------------------
16935 Extract response and send it to UMAC
16936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16938 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 sizeof(halPostAssocRspMsg.postAssocRspParams));
16940
16941 /*Extract the Post Assoc STA Params */
16942
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16949
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 wdiPostAssocParams.wdiStatus =
16951 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016952
16953 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16954 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16956 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 WDI_MAC_ADDR_LEN);
16958
16959 /* Extract Post Assoc BSS Params */
16960
Jeff Johnsone7245742012-09-05 17:12:55 -070016961 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16962 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16963 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016964
16965 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16966 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16969 .macSTA, WDI_MAC_ADDR_LEN);
16970
Jeff Johnsone7245742012-09-05 17:12:55 -070016971 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16973
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16976
16977 wdiPostAssocParams.bssParams.ucBSSIdx =
16978 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16979
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16982
16983 wpalMutexAcquire(&pWDICtx->wptMutex);
16984
16985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016989 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016991
16992 /*-----------------------------------------------------------------------
16993 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 -----------------------------------------------------------------------*/
16996 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16999 {
17000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17001 "Association sequence for this BSS does not yet exist or "
17002 "association no longer in progress - mysterious HAL response");
17003
Jeff Johnsone7245742012-09-05 17:12:55 -070017004 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17005
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 }
17009
17010 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 -----------------------------------------------------------------------*/
17013 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17014 {
17015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17016 "Post Assoc not allowed before JOIN - failing request "
17017 "strange HAL response");
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17020
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 }
17024
17025 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 -----------------------------------------------------------------------*/
17028 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17029 {
17030 /*Association was failed by HAL - remove session*/
17031 WDI_DeleteSession(pWDICtx, pBSSSes);
17032 }
17033 else
17034 {
17035 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017037
17038 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17047
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17050 }
17051
17052 /*Association no longer in progress */
17053 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17054
17055 /*Association no longer in progress - prepare pending assoc for processing*/
17056 WDI_DequeueAssocRequest(pWDICtx);
17057
17058 wpalMutexRelease(&pWDICtx->wptMutex);
17059
17060 /*Notify UMAC*/
17061 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17062
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017064}/*WDI_ProcessPostAssocRsp*/
17065
17066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
17070 @param pWDICtx: pointer to the WLAN DAL context
17071 pEventData: pointer to the event information structure
17072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 @see
17074 @return Result of the function call
17075*/
17076WDI_Status
17077WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017078(
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 WDI_ControlBlockType* pWDICtx,
17080 WDI_EventInfoType* pEventData
17081)
17082{
17083 WDI_DelSTARspParamsType wdiDelSTARsp;
17084 WDI_DelSTARspCb wdiDelSTARspCb;
17085 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17088
17089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 -------------------------------------------------------------------------*/
17092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17093 ( NULL == pEventData->pEventData))
17094 {
17095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 }
17100
17101 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17102
17103 /*-------------------------------------------------------------------------
17104 Extract response and send it to UMAC
17105 -------------------------------------------------------------------------*/
17106 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 sizeof(halDelStaRspMsg.delStaRspParams));
17109
17110 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 wdiDelSTARsp.wdiStatus =
17112 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017113
17114 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17115
17116 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17117 if(staType == WDI_STA_ENTRY_SELF)
17118 {
17119 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17120
17121 /* At this point add the self-STA */
17122
17123 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17124 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17125 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17126
17127#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17128#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17129
17130 //all DPU indices are the same for self STA
17131 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17132 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17133 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17134 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17135 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17136 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017137
17138 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 }
17140 else
17141 {
17142 //Delete the station in the table
17143 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17144 }
17145
17146 /*Notify UMAC*/
17147 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17148
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017150}/*WDI_ProcessDelSTARsp*/
17151
17152
17153/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017155==========================================================================*/
17156
17157/**
17158 @brief Process Set BSS Key Rsp function (called when a response
17159 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017160
17161 @param pWDICtx: pointer to the WLAN DAL context
17162 pEventData: pointer to the event information structure
17163
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 @see
17165 @return Result of the function call
17166*/
17167WDI_Status
17168WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017169(
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 WDI_ControlBlockType* pWDICtx,
17171 WDI_EventInfoType* pEventData
17172)
17173{
17174 WDI_Status wdiStatus;
17175 eHalStatus halStatus;
17176 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17178
17179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 -------------------------------------------------------------------------*/
17182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17183 ( NULL == pEventData->pEventData))
17184 {
17185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 }
17190
17191 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17192
17193 /*-------------------------------------------------------------------------
17194 Extract response and send it to UMAC
17195 -------------------------------------------------------------------------*/
17196 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017198
17199 if ( eHAL_STATUS_SUCCESS != halStatus )
17200 {
17201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17202 "Set BSS Key failed with status %s (%d)",
17203 WDI_getHALStatusMsgString(halStatus),
17204 halStatus);
17205 /* send the status to UMAC, don't return from here*/
17206 }
17207
17208 /*Notify UMAC*/
17209 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17210
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017212}/*WDI_ProcessSetBssKeyRsp*/
17213
17214/**
17215 @brief Process Remove BSS Key Rsp function (called when a response
17216 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017217
17218 @param pWDICtx: pointer to the WLAN DAL context
17219 pEventData: pointer to the event information structure
17220
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 @see
17222 @return Result of the function call
17223*/
17224WDI_Status
17225WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017226(
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 WDI_ControlBlockType* pWDICtx,
17228 WDI_EventInfoType* pEventData
17229)
17230{
17231 WDI_Status wdiStatus;
17232 eHalStatus halStatus;
17233 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17235
17236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 -------------------------------------------------------------------------*/
17239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17240 ( NULL == pEventData->pEventData))
17241 {
17242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 }
17247
17248 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17249
17250 /*-------------------------------------------------------------------------
17251 Extract response and send it to UMAC
17252 -------------------------------------------------------------------------*/
17253 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017255
17256 if ( eHAL_STATUS_SUCCESS != halStatus )
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17259 "Remove BSS Key failed with status %s (%d )",
17260 WDI_getHALStatusMsgString(halStatus),
17261 halStatus);
17262 /* send the status to UMAC, don't return from here*/
17263 }
17264
17265 /*Notify UMAC*/
17266 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17267
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017269}/*WDI_ProcessSetBssKeyRsp*/
17270
17271
17272/**
17273 @brief Process Set STA Key Rsp function (called when a response
17274 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017275
17276 @param pWDICtx: pointer to the WLAN DAL context
17277 pEventData: pointer to the event information structure
17278
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 @see
17280 @return Result of the function call
17281*/
17282WDI_Status
17283WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017284(
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 WDI_ControlBlockType* pWDICtx,
17286 WDI_EventInfoType* pEventData
17287)
17288{
17289 WDI_Status wdiStatus;
17290 eHalStatus halStatus;
17291 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17293
17294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017296 -------------------------------------------------------------------------*/
17297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17298 ( NULL == pEventData->pEventData))
17299 {
17300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 }
17305
17306 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17307
17308 /*-------------------------------------------------------------------------
17309 Extract response and send it to UMAC
17310 -------------------------------------------------------------------------*/
17311 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017313
17314 if ( eHAL_STATUS_SUCCESS != halStatus )
17315 {
17316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17317 "Set STA Key failed with status %s (%d)",
17318 WDI_getHALStatusMsgString(halStatus),
17319 halStatus);
17320 /* send the status to UMAC, don't return from here*/
17321 }
17322
17323 /*Notify UMAC*/
17324 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17325
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017327}/*WDI_ProcessSetSTAKeyRsp*/
17328
17329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017332
17333 @param pWDICtx: pointer to the WLAN DAL context
17334 pEventData: pointer to the event information structure
17335
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 @see
17337 @return Result of the function call
17338*/
17339WDI_Status
17340WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017341(
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 WDI_ControlBlockType* pWDICtx,
17343 WDI_EventInfoType* pEventData
17344)
17345{
17346 WDI_Status wdiStatus;
17347 eHalStatus halStatus;
17348 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17350
17351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 -------------------------------------------------------------------------*/
17354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17355 ( NULL == pEventData->pEventData))
17356 {
17357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 }
17362
17363 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17364
17365 /*-------------------------------------------------------------------------
17366 Extract response and send it to UMAC
17367 -------------------------------------------------------------------------*/
17368 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017370
17371 if ( eHAL_STATUS_SUCCESS != halStatus )
17372 {
17373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17374 "Remove STA Key failed with status %s (%d)",
17375 WDI_getHALStatusMsgString(halStatus),
17376 halStatus);
17377 /* send the status to UMAC, don't return from here*/
17378 }
17379
17380 /*Notify UMAC*/
17381 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17382
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017384}/*WDI_ProcessRemoveStaKeyRsp*/
17385
17386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017389
17390 @param pWDICtx: pointer to the WLAN DAL context
17391 pEventData: pointer to the event information structure
17392
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 @see
17394 @return Result of the function call
17395*/
17396WDI_Status
17397WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017398(
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 WDI_ControlBlockType* pWDICtx,
17400 WDI_EventInfoType* pEventData
17401)
17402{
17403 WDI_Status wdiStatus;
17404 eHalStatus halStatus;
17405 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17407
17408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 -------------------------------------------------------------------------*/
17411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17412 ( NULL == pEventData->pEventData))
17413 {
17414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 }
17419
17420 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17421
17422 /*-------------------------------------------------------------------------
17423 Extract response and send it to UMAC
17424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 wpalMemoryCopy( &halStatus,
17426 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 sizeof(halStatus));
17428
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017430
17431 if ( eHAL_STATUS_SUCCESS != halStatus )
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17434 "Set STA Key failed with status %s (%d)",
17435 WDI_getHALStatusMsgString(halStatus),
17436 halStatus);
17437 /* send the status to UMAC, don't return from here*/
17438 }
17439
17440 /*Notify UMAC*/
17441 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17442
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444}/*WDI_ProcessSetSTABcastKeyRsp*/
17445
17446/**
17447 @brief Process Remove STA Bcast Key Rsp function (called when a
17448 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017449
17450 @param pWDICtx: pointer to the WLAN DAL context
17451 pEventData: pointer to the event information structure
17452
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 @see
17454 @return Result of the function call
17455*/
17456WDI_Status
17457WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017458(
Jeff Johnson295189b2012-06-20 16:38:30 -070017459 WDI_ControlBlockType* pWDICtx,
17460 WDI_EventInfoType* pEventData
17461)
17462{
17463 WDI_Status wdiStatus;
17464 eHalStatus halStatus;
17465 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17467
17468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 -------------------------------------------------------------------------*/
17471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17472 ( NULL == pEventData->pEventData))
17473 {
17474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 }
17479
17480 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17481
17482 /*-------------------------------------------------------------------------
17483 Extract response and send it to UMAC
17484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 wpalMemoryCopy( &halStatus,
17486 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 sizeof(halStatus));
17488
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017490
17491 if ( eHAL_STATUS_SUCCESS != halStatus )
17492 {
17493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17494 "Remove STA Key failed with status %s (%d)",
17495 WDI_getHALStatusMsgString(halStatus),
17496 halStatus);
17497 /* send the status to UMAC, don't return from here*/
17498 }
17499
17500 /*Notify UMAC*/
17501 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17502
Jeff Johnsone7245742012-09-05 17:12:55 -070017503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017504}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17505
17506
17507/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017509==========================================================================*/
17510
17511/**
17512 @brief Process Add TSpec Rsp function (called when a response
17513 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017514
17515 @param pWDICtx: pointer to the WLAN DAL context
17516 pEventData: pointer to the event information structure
17517
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 @see
17519 @return Result of the function call
17520*/
17521WDI_Status
17522WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017523(
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 WDI_ControlBlockType* pWDICtx,
17525 WDI_EventInfoType* pEventData
17526)
17527{
17528 WDI_Status wdiStatus;
17529 eHalStatus halStatus;
17530 WDI_AddTsRspCb wdiAddTsRspCb;
17531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17532
17533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 -------------------------------------------------------------------------*/
17536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17537 ( NULL == pEventData->pEventData))
17538 {
17539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 }
17544
17545 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17546
17547 /*-------------------------------------------------------------------------
17548 Extract response and send it to UMAC
17549 -------------------------------------------------------------------------*/
17550 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017552
17553 /*Notify UMAC*/
17554 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17555
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017557}/*WDI_ProcessAddTSpecRsp*/
17558
17559
Sunil Duttbd736ed2014-05-26 21:19:41 +053017560
17561#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17562
17563WDI_Status
17564WDI_ProcessLLStatsSetRsp
17565(
17566 WDI_ControlBlockType* pWDICtx,
17567 WDI_EventInfoType* pEventData
17568)
17569{
17570 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17571
17572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17573 "%s: Enter ", __func__);
17574 /*-------------------------------------------------------------------------
17575 Sanity check
17576 -------------------------------------------------------------------------*/
17577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17578 ( NULL == pEventData->pEventData))
17579 {
17580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17581 "%s: Invalid parameters", __func__);
17582 WDI_ASSERT(0);
17583 return WDI_STATUS_E_FAILURE;
17584 }
17585
17586 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17587
17588 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17589
17590 return WDI_STATUS_SUCCESS;
17591}
17592
17593WDI_Status
17594WDI_ProcessLLStatsGetRsp
17595(
17596 WDI_ControlBlockType* pWDICtx,
17597 WDI_EventInfoType* pEventData
17598)
17599{
17600 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17601
17602 /*-------------------------------------------------------------------------
17603 Sanity check
17604 -------------------------------------------------------------------------*/
17605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17606 ( NULL == pEventData->pEventData))
17607 {
17608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17609 "%s: Invalid parameters", __func__);
17610 WDI_ASSERT(0);
17611 return WDI_STATUS_E_FAILURE;
17612 }
17613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17614 "%s: Enter ", __func__);
17615
17616 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17617
17618 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17619
17620 return WDI_STATUS_SUCCESS;
17621}
17622
17623WDI_Status
17624WDI_ProcessLLStatsClearRsp
17625(
17626 WDI_ControlBlockType* pWDICtx,
17627 WDI_EventInfoType* pEventData
17628)
17629{
17630 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17631
17632 /*-------------------------------------------------------------------------
17633 Sanity check
17634 -------------------------------------------------------------------------*/
17635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17636 ( NULL == pEventData->pEventData))
17637 {
17638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17639 "%s: Invalid parameters", __func__);
17640 WDI_ASSERT(0);
17641 return WDI_STATUS_E_FAILURE;
17642 }
17643
17644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17645 "%s: CLEAR RESPONSE CALL BACK", __func__);
17646 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17647
17648 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17649
17650 return WDI_STATUS_SUCCESS;
17651}
17652#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17653
Jeff Johnson295189b2012-06-20 16:38:30 -070017654/**
17655 @brief Process Del TSpec Rsp function (called when a response
17656 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017657
17658 @param pWDICtx: pointer to the WLAN DAL context
17659 pEventData: pointer to the event information structure
17660
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 @see
17662 @return Result of the function call
17663*/
17664WDI_Status
17665WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017666(
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 WDI_ControlBlockType* pWDICtx,
17668 WDI_EventInfoType* pEventData
17669)
17670{
17671 WDI_Status wdiStatus;
17672 eHalStatus halStatus;
17673 WDI_DelTsRspCb wdiDelTsRspCb;
17674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17675
17676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 -------------------------------------------------------------------------*/
17679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17680 ( NULL == pEventData->pEventData))
17681 {
17682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 }
17687
17688 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17689
17690 /*-------------------------------------------------------------------------
17691 Extract response and send it to UMAC
17692 -------------------------------------------------------------------------*/
17693 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017695
17696 /*Notify UMAC*/
17697 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17698
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017700}/*WDI_ProcessDelTSpecRsp*/
17701
17702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017703 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017704 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017705
17706 @param pWDICtx: pointer to the WLAN DAL context
17707 pEventData: pointer to the event information structure
17708
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 @see
17710 @return Result of the function call
17711*/
17712WDI_Status
17713WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017714(
Jeff Johnson295189b2012-06-20 16:38:30 -070017715 WDI_ControlBlockType* pWDICtx,
17716 WDI_EventInfoType* pEventData
17717)
17718{
17719 WDI_Status wdiStatus;
17720 eHalStatus halStatus;
17721 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17723
17724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 -------------------------------------------------------------------------*/
17727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17728 ( NULL == pEventData->pEventData))
17729 {
17730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017734 }
17735
17736 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17737
17738 /*-------------------------------------------------------------------------
17739 Extract response and send it to UMAC
17740 -------------------------------------------------------------------------*/
17741 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017743
17744 /*Notify UMAC*/
17745 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17746
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017748}/*WDI_ProcessUpdateEDCAParamsRsp*/
17749
17750
17751/**
17752 @brief Process Add BA Rsp function (called when a response
17753 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017754
17755 @param pWDICtx: pointer to the WLAN DAL context
17756 pEventData: pointer to the event information structure
17757
Jeff Johnson295189b2012-06-20 16:38:30 -070017758 @see
17759 @return Result of the function call
17760*/
17761WDI_Status
17762WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017763(
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 WDI_ControlBlockType* pWDICtx,
17765 WDI_EventInfoType* pEventData
17766)
17767{
17768 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17769
17770 tAddBASessionRspParams halBASessionRsp;
17771 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17772
Jeff Johnsone7245742012-09-05 17:12:55 -070017773
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17775
17776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 -------------------------------------------------------------------------*/
17779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17780 ( NULL == pEventData->pEventData))
17781 {
17782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 }
17787
17788 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17789
17790 /*-------------------------------------------------------------------------
17791 Extract response and send it to UMAC
17792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 wpalMemoryCopy( &halBASessionRsp,
17794 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 sizeof(halBASessionRsp));
17796
17797 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17798
Jeff Johnson43971f52012-07-17 12:26:56 -070017799 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017800 {
17801 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17802 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17803 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17804 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17805 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17806 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17807 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17808 }
17809
17810 /*Notify UMAC*/
17811 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17812
Jeff Johnsone7245742012-09-05 17:12:55 -070017813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017814}/*WDI_ProcessAddSessionBARsp*/
17815
17816
17817/**
17818 @brief Process Del BA Rsp function (called when a response
17819 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017820
17821 @param pWDICtx: pointer to the WLAN DAL context
17822 pEventData: pointer to the event information structure
17823
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 @see
17825 @return Result of the function call
17826*/
17827WDI_Status
17828WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017829(
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ControlBlockType* pWDICtx,
17831 WDI_EventInfoType* pEventData
17832)
17833{
17834 WDI_Status wdiStatus;
17835 eHalStatus halStatus;
17836 WDI_DelBARspCb wdiDelBARspCb;
17837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17838
17839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 -------------------------------------------------------------------------*/
17842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17843 ( NULL == pEventData->pEventData))
17844 {
17845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 }
17850
17851 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17852
17853 /*-------------------------------------------------------------------------
17854 Extract response and send it to UMAC
17855 -------------------------------------------------------------------------*/
17856 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017857 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017858
17859 if ( eHAL_STATUS_SUCCESS == halStatus )
17860 {
17861 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17862 }
17863
17864 /*Notify UMAC*/
17865 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17866
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017868}/*WDI_ProcessDelBARsp*/
17869
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017870#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017871/**
17872 @brief Process TSM Stats Rsp function (called when a response
17873 is being received over the bus from HAL)
17874
17875 @param pWDICtx: pointer to the WLAN DAL context
17876 pEventData: pointer to the event information structure
17877
17878 @see
17879 @return Result of the function call
17880*/
17881WDI_Status
17882WDI_ProcessTsmStatsRsp
17883(
17884 WDI_ControlBlockType* pWDICtx,
17885 WDI_EventInfoType* pEventData
17886)
17887{
17888 WDI_TsmRspCb wdiTsmStatsRspCb;
17889 tTsmStatsRspMsg halTsmStatsRspMsg;
17890 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17892
17893 /*-------------------------------------------------------------------------
17894 Sanity check
17895 -------------------------------------------------------------------------*/
17896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17897 ( NULL == pEventData->pEventData))
17898 {
17899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 WDI_ASSERT(0);
17902 return WDI_STATUS_E_FAILURE;
17903 }
17904
17905 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17906
17907 /*-------------------------------------------------------------------------
17908 Unpack HAL Response Message - the header was already extracted by the
17909 main Response Handling procedure
17910 -------------------------------------------------------------------------*/
17911 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17912 pEventData->pEventData,
17913 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17914
17915 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17916 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17917 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17918 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17919 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17920 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17921 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17922 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17923 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17924 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17925 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17926 halTsmStatsRspMsg.tsmStatsRspParams.status);
17927
17928 /*Notify UMAC*/
17929 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17930
17931 return WDI_STATUS_SUCCESS;
17932}/*WDI_ProcessTsmStatsRsp*/
17933
17934#endif
17935
17936
17937
17938/**
17939 @brief Process Flush AC Rsp function (called when a response
17940 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017941
17942 @param pWDICtx: pointer to the WLAN DAL context
17943 pEventData: pointer to the event information structure
17944
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 @see
17946 @return Result of the function call
17947*/
17948WDI_Status
17949WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017950(
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 WDI_ControlBlockType* pWDICtx,
17952 WDI_EventInfoType* pEventData
17953)
17954{
17955 WDI_Status wdiStatus;
17956 eHalStatus halStatus;
17957 WDI_FlushAcRspCb wdiFlushAcRspCb;
17958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17959
17960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 -------------------------------------------------------------------------*/
17963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17964 ( NULL == pEventData->pEventData))
17965 {
17966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 }
17971
17972 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17973
17974 /*-------------------------------------------------------------------------
17975 Extract response and send it to UMAC
17976 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 wpalMemoryCopy( &halStatus,
17978 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017979 sizeof(halStatus));
17980
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
17983 /*Notify UMAC*/
17984 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17985
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017987}/*WDI_ProcessFlushAcRsp*/
17988
17989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017990 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017992
17993 @param pWDICtx: pointer to the WLAN DAL context
17994 pEventData: pointer to the event information structure
17995
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 @see
17997 @return Result of the function call
17998*/
17999WDI_Status
18000WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018001(
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 WDI_ControlBlockType* pWDICtx,
18003 WDI_EventInfoType* pEventData
18004)
18005{
18006 WDI_Status wdiStatus;
18007 eHalStatus halStatus;
18008 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18010
18011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 -------------------------------------------------------------------------*/
18014 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18015 ( NULL == pEventData->pEventData))
18016 {
18017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 }
18022
18023 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18024
18025 /*-------------------------------------------------------------------------
18026 Extract response and send it to UMAC
18027 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 wpalMemoryCopy( &halStatus,
18029 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 sizeof(halStatus));
18031
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018033
18034 /*Notify UMAC*/
18035 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038}/*WDI_ProcessBtAmpEventRsp*/
18039
18040
18041/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018044
18045 @param pWDICtx: pointer to the WLAN DAL context
18046 pEventData: pointer to the event information structure
18047
Jeff Johnson295189b2012-06-20 16:38:30 -070018048 @see
18049 @return Result of the function call
18050*/
18051WDI_Status
18052WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018053(
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 WDI_ControlBlockType* pWDICtx,
18055 WDI_EventInfoType* pEventData
18056)
18057{
18058 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18059 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18060 tAddStaSelfRspMsg halAddStaSelfRsp;
18061 WDI_AddStaParams wdiAddSTAParam = {0};
18062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18063
18064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 -------------------------------------------------------------------------*/
18067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18068 ( NULL == pEventData->pEventData))
18069 {
18070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 }
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18078
18079 /*-------------------------------------------------------------------------
18080 Extract response and send it to UMAC
18081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18083 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18085
18086
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 wdiAddSTASelfParams.wdiStatus =
18088 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018089
Jeff Johnsone7245742012-09-05 17:12:55 -070018090 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18096
18097 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18098 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18099 WDI_MAC_ADDR_LEN);
18100
18101
18102#ifdef HAL_SELF_STA_PER_BSS
18103
18104 /* At this point add the self-STA */
18105
18106 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18107 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18108 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18109
18110 //all DPU indices are the same for self STA
18111
18112 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18115 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18116 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18117 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18118 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18119
18120 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18121 WDI_MAC_ADDR_LEN);
18122
18123 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18124 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18128 {
18129 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18130 }
18131#endif
18132
18133 /*Notify UMAC*/
18134 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18135
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018137}/*WDI_ProcessAddSTASelfRsp*/
18138
18139
18140
18141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018142 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018144
18145 @param pWDICtx: pointer to the WLAN DAL context
18146 pEventData: pointer to the event information structure
18147
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 @see
18149 @return Result of the function call
18150*/
18151WDI_Status
18152WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018153(
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 WDI_ControlBlockType* pWDICtx,
18155 WDI_EventInfoType* pEventData
18156)
18157{
18158 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18159 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18160 tDelStaSelfRspParams delStaSelfRspParams;
18161 wpt_uint8 ucStaIdx;
18162
18163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18164
18165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 -------------------------------------------------------------------------*/
18168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18169 ( NULL == pEventData->pEventData))
18170 {
18171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 }
18176
18177 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18178
18179 /*-------------------------------------------------------------------------
18180 Extract response and send it to UMAC
18181 -------------------------------------------------------------------------*/
18182
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 (wpt_uint8*)pEventData->pEventData,
18185 sizeof(tDelStaSelfRspParams));
18186
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 wdiDelStaSelfRspParams.wdiStatus =
18188 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018189
Jeff Johnsone7245742012-09-05 17:12:55 -070018190 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18192 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18193 {
18194 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 delStaSelfRspParams.selfMacAddr,
18197 &ucStaIdx);
18198 if(WDI_STATUS_E_FAILURE == wdiStatus)
18199 {
18200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018201 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 }
18205 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18206 }
18207
18208 /*Notify UMAC*/
18209 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18210
18211 return WDI_STATUS_SUCCESS;
18212}
18213
Jeff Johnsone7245742012-09-05 17:12:55 -070018214#ifdef FEATURE_OEM_DATA_SUPPORT
18215/**
18216 @brief Start Oem Data Rsp function (called when a
18217 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018218
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 @param pWDICtx: pointer to the WLAN DAL context
18220 pEventData: pointer to the event information structure
18221
18222 @see
18223 @return Result of the function call
18224*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018225
18226WDI_Status
18227WDI_ProcessStartOemDataRsp
18228(
18229 WDI_ControlBlockType* pWDICtx,
18230 WDI_EventInfoType* pEventData
18231)
18232{
18233 WDI_oemDataRspCb wdiOemDataRspCb;
18234 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18235 tStartOemDataRspParams* halStartOemDataRspParams;
18236
18237 /*-------------------------------------------------------------------------
18238 Sanity check
18239 -------------------------------------------------------------------------*/
18240 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18241 ( NULL == pEventData->pEventData))
18242 {
18243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018244 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 WDI_ASSERT(0);
18246 return WDI_STATUS_E_FAILURE;
18247 }
18248
18249 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18250
18251 /*-------------------------------------------------------------------------
18252 Extract response and send it to UMAC
18253 -------------------------------------------------------------------------*/
18254 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18255
18256
18257 //It is the responsibility of the application code to check for failure
18258 //conditions!
18259
18260 //Allocate memory for WDI OEM DATA RSP structure
18261 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18262
18263 if(NULL == wdiOemDataRspParams)
18264 {
18265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018266 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018267 pWDICtx, pEventData, pEventData->pEventData);
18268 WDI_ASSERT(0);
18269 return WDI_STATUS_E_FAILURE;
18270 }
18271
18272 /* Populate WDI structure members */
18273 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18274
18275 /*Notify UMAC*/
18276 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18277
18278 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18279 wpalMemoryFree(wdiOemDataRspParams);
18280
18281 return WDI_STATUS_SUCCESS;
18282}/*WDI_PrcoessStartOemDataRsp*/
18283#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018284
18285/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018286 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018287===========================================================================*/
18288
18289/**
18290 @brief Process Channel Switch Rsp function (called when a response
18291 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018292
18293 @param pWDICtx: pointer to the WLAN DAL context
18294 pEventData: pointer to the event information structure
18295
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 @see
18297 @return Result of the function call
18298*/
18299WDI_Status
18300WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018301(
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 WDI_ControlBlockType* pWDICtx,
18303 WDI_EventInfoType* pEventData
18304)
18305{
18306 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18307 WDI_SwitchChRspCb wdiChSwitchRspCb;
18308 tSwitchChannelRspParams halSwitchChannelRsp;
18309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18310
18311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 -------------------------------------------------------------------------*/
18314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18315 ( NULL == pEventData->pEventData))
18316 {
18317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 }
18322
18323 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18324
18325 /*-------------------------------------------------------------------------
18326 Extract response and send it to UMAC
18327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 (wpt_uint8*)pEventData->pEventData,
18330 sizeof(halSwitchChannelRsp));
18331
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 wdiSwitchChRsp.wdiStatus =
18333 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18335
18336#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018337 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018338#endif
18339
18340 /*Notify UMAC*/
18341 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18342
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018344}/*WDI_ProcessChannelSwitchRsp*/
18345
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018346/**
18347 @brief Process Channel Switch Rsp function (called when a response
18348 is being received over the bus from HAL against
18349 WDI_ProcessChannelSwitchReq_V1)
18350
18351 @param pWDICtx: pointer to the WLAN DAL context
18352 pEventData: pointer to the event information structure
18353
18354 @see
18355 @return Result of the function call
18356*/
18357
18358WDI_Status
18359WDI_ProcessChannelSwitchRsp_V1
18360(
18361 WDI_ControlBlockType* pWDICtx,
18362 WDI_EventInfoType* pEventData
18363)
18364{
18365 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18366 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18367 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18369
18370 /*-------------------------------------------------------------------------
18371 Sanity check
18372 -------------------------------------------------------------------------*/
18373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18374 ( NULL == pEventData->pEventData))
18375 {
18376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18377 "%s: Invalid parameters", __func__);
18378 WDI_ASSERT(0);
18379 return WDI_STATUS_E_FAILURE;
18380 }
18381
18382 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18383
18384 /*-------------------------------------------------------------------------
18385 Extract response and send it to UMAC
18386 -------------------------------------------------------------------------*/
18387 wpalMemoryCopy( &halSwitchChannelRsp,
18388 (wpt_uint8*)pEventData->pEventData,
18389 sizeof(halSwitchChannelRsp));
18390
18391 wdiSwitchChRsp.wdiStatus =
18392 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18393 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18394
18395#ifdef WLAN_FEATURE_VOWIFI
18396 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18397#endif
18398
18399 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18400 if (( NULL == wdiChSwitchRspCb ) )
18401 {
18402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18403 "%s: ### Call back function is null", __func__);
18404 WDI_ASSERT(0);
18405 return WDI_STATUS_E_FAILURE;
18406 }
18407 /*Notify UMAC*/
18408 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18409
18410 return WDI_STATUS_SUCCESS;
18411}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018412
18413/**
18414 @brief Process Config STA Rsp function (called when a response
18415 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018416
18417 @param pWDICtx: pointer to the WLAN DAL context
18418 pEventData: pointer to the event information structure
18419
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 @see
18421 @return Result of the function call
18422*/
18423WDI_Status
18424WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018425(
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 WDI_ControlBlockType* pWDICtx,
18427 WDI_EventInfoType* pEventData
18428)
18429{
18430 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18431 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18432 WDI_AddStaParams wdiAddSTAParam;
18433
18434 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018435 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018436
Jeff Johnsone7245742012-09-05 17:12:55 -070018437 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18439
18440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 -------------------------------------------------------------------------*/
18443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18444 ( NULL == pEventData->pEventData))
18445 {
18446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 }
18451
18452 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18453
18454 /*-------------------------------------------------------------------------
18455 Extract response and send it to UMAC
18456 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18458 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 sizeof(halConfigStaRsp.configStaRspParams));
18460
18461
18462 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18463 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18464 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18465 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18466 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18467
18468 /* MAC Address of STA - take from cache as it does not come back in the
18469 response*/
18470 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018473
18474 wdiCfgSTAParams.wdiStatus =
18475 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018476
18477 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18478 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18479 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18480
18481 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18482 {
18483 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18484 {
18485 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018486 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18488 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018489
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018493 wdiAddSTAParam.ucHTCapable =
18494 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18495 wdiAddSTAParam.ucStaType =
18496 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018497 wdiAddSTAParam.ucRmfEnabled =
18498 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018499
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018501 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18502 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018504
18505 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18506 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18507 WDI_MAC_ADDR_LEN);
18508
18509 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18510 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18511 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018512
18513 if ( NULL == pBSSSes )
18514 {
18515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18516 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018517
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 }
18521
18522 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018527 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018532
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18534 }
18535 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18536 {
18537 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18538
Jeff Johnsone7245742012-09-05 17:12:55 -070018539 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018549 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018551 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 halConfigStaRsp.configStaRspParams.ucUcastSig;
18553 }
18554 }
18555
18556 /*Notify UMAC*/
18557 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018560}/*WDI_ProcessConfigStaRsp*/
18561
18562
18563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018566
18567 @param pWDICtx: pointer to the WLAN DAL context
18568 pEventData: pointer to the event information structure
18569
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 @see
18571 @return Result of the function call
18572*/
18573WDI_Status
18574WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018575(
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 WDI_ControlBlockType* pWDICtx,
18577 WDI_EventInfoType* pEventData
18578)
18579{
18580 WDI_Status wdiStatus;
18581 eHalStatus halStatus;
18582 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18583
18584 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018585 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18587
18588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 -------------------------------------------------------------------------*/
18591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18592 ( NULL == pEventData->pEventData))
18593 {
18594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 }
18599
18600 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18601
18602 wpalMutexAcquire(&pWDICtx->wptMutex);
18603
18604 /*If the link is being transitioned to idle - the BSS is to be deleted
18605 - this type of ending a session is possible when UMAC has failed an
18606 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018607 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18609 {
18610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18614 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18615 &pBSSSes);
18616
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 /*-----------------------------------------------------------------------
18618 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 -----------------------------------------------------------------------*/
18621 if ( NULL == pBSSSes )
18622 {
18623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18624 "Set link response received outside association session");
18625 }
18626 else
18627 {
18628 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18629 will be del BSS coming after this to stop the beaconing & cleaning up the
18630 sessions*/
18631 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18632 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18633 {
18634 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 -----------------------------------------------------------------------*/
18637 WDI_DeleteSession(pWDICtx, pBSSSes);
18638
18639 /*-----------------------------------------------------------------------
18640 Check to see if this association is in progress - if so disable the
18641 flag as this has ended
18642 -----------------------------------------------------------------------*/
18643 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 /*Association no longer in progress */
18646 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18647 /*Association no longer in progress - prepare pending assoc for processing*/
18648 WDI_DequeueAssocRequest(pWDICtx);
18649 }
18650 }
18651 }
18652 }
18653 /* If the link state has been set to POST ASSOC, reset the "association in
18654 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018655 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018656 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18657 {
18658 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18659 WDI_DequeueAssocRequest(pWDICtx);
18660 }
18661
18662 wpalMutexRelease(&pWDICtx->wptMutex);
18663
18664 /*-------------------------------------------------------------------------
18665 Extract response and send it to UMAC
18666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 wpalMemoryCopy( &halStatus,
18668 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 sizeof(halStatus));
18670
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018672
18673 /*Notify UMAC*/
18674 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18675
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018677}/*WDI_ProcessSetLinkStateRsp*/
18678
18679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018680 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018681 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018682
18683 @param pWDICtx: pointer to the WLAN DAL context
18684 pEventData: pointer to the event information structure
18685
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 @see
18687 @return Result of the function call
18688*/
18689WDI_Status
18690WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018691(
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 WDI_ControlBlockType* pWDICtx,
18693 WDI_EventInfoType* pEventData
18694)
18695{
18696 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18697 WDI_GetStatsRspCb wdiGetStatsRspCb;
18698 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018699
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18701
18702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 -------------------------------------------------------------------------*/
18705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18706 ( NULL == pEventData->pEventData))
18707 {
18708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 }
18713
18714 /*-------------------------------------------------------------------------
18715 Extract response and send it to UMAC
18716 -------------------------------------------------------------------------*/
18717 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18718
18719 /*allocate the stats response buffer */
18720 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18721 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18722 + sizeof(WDI_GetStatsRspParamsType));
18723
18724 if(NULL == wdiGetStatsRsp)
18725 {
18726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018727 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 pWDICtx, pEventData, pEventData->pEventData);
18729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 }
18732
18733 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18734
18735 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18736 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18737 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18738 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18739 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18740 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18741
18742 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18743 wpalMemoryCopy(wdiGetStatsRsp + 1,
18744 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18745 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18746
18747 /*Notify UMAC*/
18748 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18749
18750 wpalMemoryFree(wdiGetStatsRsp);
18751
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018753}/*WDI_ProcessGetStatsRsp*/
18754
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018755#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018756/**
18757 @brief Process Get Roam Rssi Rsp function (called when a response is
18758 being received over the bus from HAL)
18759
18760 @param pWDICtx: pointer to the WLAN DAL context
18761 pEventData: pointer to the event information structure
18762
18763 @see
18764 @return Result of the function call
18765*/
18766WDI_Status
18767WDI_ProcessGetRoamRssiRsp
18768(
18769 WDI_ControlBlockType* pWDICtx,
18770 WDI_EventInfoType* pEventData
18771)
18772{
18773 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18774 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18775 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18777
18778 /*-------------------------------------------------------------------------
18779 Sanity check
18780 -------------------------------------------------------------------------*/
18781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18782 ( NULL == pEventData->pEventData))
18783 {
18784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18785 "%s: Invalid parameters", __func__);
18786 WDI_ASSERT(0);
18787 return WDI_STATUS_E_FAILURE;
18788 }
18789
18790 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18791 if(NULL == wdiGetRoamRssiRspCb)
18792 {
18793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18794 "%s: call back function is NULL", __func__);
18795 WDI_ASSERT(0);
18796 return WDI_STATUS_E_FAILURE;
18797 }
18798
18799 /*-------------------------------------------------------------------------
18800 Extract response and send it to UMAC
18801 -------------------------------------------------------------------------*/
18802 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18803 pEventData->pEventData,
18804 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18805
18806 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18807 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18808 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18809
18810 /*Notify UMAC*/
18811 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18812
18813 return WDI_STATUS_SUCCESS;
18814}/*WDI_ProcessGetRoamRssiRsp*/
18815#endif
18816
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
18818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018821
18822 @param pWDICtx: pointer to the WLAN DAL context
18823 pEventData: pointer to the event information structure
18824
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 @see
18826 @return Result of the function call
18827*/
18828WDI_Status
18829WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018830(
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 WDI_ControlBlockType* pWDICtx,
18832 WDI_EventInfoType* pEventData
18833)
18834{
18835 WDI_Status wdiStatus;
18836 eHalStatus halStatus;
18837 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18839
18840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 -------------------------------------------------------------------------*/
18843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18844 ( NULL == pEventData->pEventData))
18845 {
18846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 }
18851
18852 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18853
18854 /*-------------------------------------------------------------------------
18855 Extract response and send it to UMAC
18856 -------------------------------------------------------------------------*/
18857 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018859
18860 /*Notify UMAC*/
18861 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18862
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018864}/*WDI_ProcessUpdateCfgRsp*/
18865
18866
18867
18868/**
18869 @brief Process Add BA Rsp function (called when a response
18870 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018871
18872 @param pWDICtx: pointer to the WLAN DAL context
18873 pEventData: pointer to the event information structure
18874
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 @see
18876 @return Result of the function call
18877*/
18878WDI_Status
18879WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018880(
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 WDI_ControlBlockType* pWDICtx,
18882 WDI_EventInfoType* pEventData
18883)
18884{
18885 WDI_AddBARspCb wdiAddBARspCb;
18886
18887 tAddBARspParams halAddBARsp;
18888 WDI_AddBARspinfoType wdiAddBARsp;
18889
18890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18891
18892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 -------------------------------------------------------------------------*/
18895 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18896 ( NULL == pEventData->pEventData))
18897 {
18898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 }
18903
18904 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18905
18906 /*-------------------------------------------------------------------------
18907 Extract response and send it to UMAC
18908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018909 wpalMemoryCopy( &halAddBARsp,
18910 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 sizeof(halAddBARsp));
18912
18913 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18914
Jeff Johnson43971f52012-07-17 12:26:56 -070018915 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 {
18917 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18918 }
18919
18920 /*Notify UMAC*/
18921 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18922
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924}/*WDI_ProcessAddSessionBARsp*/
18925
18926/**
18927 @brief Process Add BA Rsp function (called when a response
18928 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018929
18930 @param pWDICtx: pointer to the WLAN DAL context
18931 pEventData: pointer to the event information structure
18932
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 @see
18934 @return Result of the function call
18935*/
18936WDI_Status
18937WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018938(
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 WDI_ControlBlockType* pWDICtx,
18940 WDI_EventInfoType* pEventData
18941)
18942{
18943 WDI_TriggerBARspCb wdiTriggerBARspCb;
18944
18945 tTriggerBARspParams* halTriggerBARsp;
18946 tTriggerBaRspCandidate* halBaCandidate;
18947 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18948 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18949 wpt_uint16 index;
18950 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018951 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18953
18954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 -------------------------------------------------------------------------*/
18957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18958 ( NULL == pEventData->pEventData))
18959 {
18960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 }
18965
18966 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18967
18968 /*-------------------------------------------------------------------------
18969 Extract response and send it to UMAC
18970 -------------------------------------------------------------------------*/
18971 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18972
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018973 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18974
18975 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18976 {
18977 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018980
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018981 if(NULL == wdiTriggerBARsp)
18982 {
18983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018984 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018985 pWDICtx, pEventData, pEventData->pEventData);
18986 WDI_ASSERT(0);
18987 return WDI_STATUS_E_FAILURE;
18988 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018989
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018990 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18991
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018993 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18995
18996 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18997 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18998
18999 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19000 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019001 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19003 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19004 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019005 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19009 }
19010 wdiTriggerBARspCandidate++;
19011 halBaCandidate++;
19012 }
19013 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019014 else
19015 {
19016 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19017
19018 if(NULL == wdiTriggerBARsp)
19019 {
19020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019021 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019022 pWDICtx, pEventData, pEventData->pEventData);
19023 WDI_ASSERT(0);
19024 return WDI_STATUS_E_FAILURE;
19025 }
19026
19027 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19028
19029 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019030
19031 /*Notify UMAC*/
19032 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19033
19034 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019036}/*WDI_ProcessAddSessionBARsp*/
19037
19038/**
19039 @brief Process Update Beacon Params Rsp function (called when a response
19040 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019041
19042 @param pWDICtx: pointer to the WLAN DAL context
19043 pEventData: pointer to the event information structure
19044
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 @see
19046 @return Result of the function call
19047*/
19048WDI_Status
19049WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019050(
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 WDI_ControlBlockType* pWDICtx,
19052 WDI_EventInfoType* pEventData
19053)
19054{
19055 WDI_Status wdiStatus;
19056 eHalStatus halStatus;
19057 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19059
19060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 -------------------------------------------------------------------------*/
19063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19064 ( NULL == pEventData->pEventData))
19065 {
19066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 }
19071
19072 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19073
19074 /*-------------------------------------------------------------------------
19075 Extract response and send it to UMAC
19076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 wpalMemoryCopy( &halStatus,
19078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 sizeof(halStatus));
19080
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019082
19083 /*Notify UMAC*/
19084 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19085
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019087}/*WDI_ProcessUpdateBeaconParamsRsp*/
19088
19089/**
19090 @brief Process Send Beacon template Rsp function (called when a response
19091 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019092
19093 @param pWDICtx: pointer to the WLAN DAL context
19094 pEventData: pointer to the event information structure
19095
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 @see
19097 @return Result of the function call
19098*/
19099WDI_Status
19100WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019101(
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 WDI_ControlBlockType* pWDICtx,
19103 WDI_EventInfoType* pEventData
19104)
19105{
19106 WDI_Status wdiStatus;
19107 eHalStatus halStatus;
19108 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19110
19111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019113 -------------------------------------------------------------------------*/
19114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19115 ( NULL == pEventData->pEventData))
19116 {
19117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 }
19122
19123 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19124
19125 /*-------------------------------------------------------------------------
19126 Extract response and send it to UMAC
19127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 wpalMemoryCopy( &halStatus,
19129 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 sizeof(halStatus));
19131
Jeff Johnsone7245742012-09-05 17:12:55 -070019132 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019133
19134 /*Notify UMAC*/
19135 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19136
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019138}/*WDI_ProcessSendBeaconParamsRsp*/
19139
Jeff Johnsone7245742012-09-05 17:12:55 -070019140
Jeff Johnson295189b2012-06-20 16:38:30 -070019141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019144
19145 @param pWDICtx: pointer to the WLAN DAL context
19146 pEventData: pointer to the event information structure
19147
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 @see
19149 @return Result of the function call
19150*/
19151WDI_Status
19152WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019153(
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx,
19155 WDI_EventInfoType* pEventData
19156)
19157{
19158 WDI_Status wdiStatus;
19159 eHalStatus halStatus;
19160 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19162
19163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 -------------------------------------------------------------------------*/
19166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19167 ( NULL == pEventData->pEventData))
19168 {
19169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 }
19174
19175 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19176
19177 /*-------------------------------------------------------------------------
19178 Extract response and send it to UMAC
19179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 wpalMemoryCopy( &halStatus,
19181 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 sizeof(halStatus));
19183
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019185
19186 /*Notify UMAC*/
19187 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19188
Jeff Johnsone7245742012-09-05 17:12:55 -070019189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019190}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19191
19192 /**
19193 @brief Process Set Max Tx Power Rsp function (called when a response
19194 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019195
19196 @param pWDICtx: pointer to the WLAN DAL context
19197 pEventData: pointer to the event information structure
19198
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 @see
19200 @return Result of the function call
19201*/
19202WDI_Status
19203WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019204(
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 WDI_ControlBlockType* pWDICtx,
19206 WDI_EventInfoType* pEventData
19207)
19208{
19209 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019210
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019212
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19215
19216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 -------------------------------------------------------------------------*/
19219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19220 ( NULL == pEventData->pEventData))
19221 {
19222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 }
19227
19228 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19229
19230 /*-------------------------------------------------------------------------
19231 Extract response and send it to UMAC
19232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019233 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19234 pEventData->pEventData,
19235 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019236
19237 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19238 {
19239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19240 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 }
19243
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019246 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247
19248 /*Notify UMAC*/
19249 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19250
Jeff Johnsone7245742012-09-05 17:12:55 -070019251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019252}
19253
schang86c22c42013-03-13 18:41:24 -070019254 /**
19255 @brief Process Set Tx Power Rsp function (called when a response
19256 is being received over the bus from HAL)
19257
19258 @param pWDICtx: pointer to the WLAN DAL context
19259 pEventData: pointer to the event information structure
19260
19261 @see
19262 @return Result of the function call
19263*/
19264WDI_Status
19265WDI_ProcessSetTxPowerRsp
19266(
19267 WDI_ControlBlockType* pWDICtx,
19268 WDI_EventInfoType* pEventData
19269)
19270{
19271 tSetTxPwrRspMsg halTxpowerrsp;
19272 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19273 WDA_SetTxPowerRspCb wdiReqStatusCb;
19274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19275
19276 /*-------------------------------------------------------------------------
19277 Sanity check
19278 -------------------------------------------------------------------------*/
19279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19280 ( NULL == pEventData->pEventData))
19281 {
19282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19283 "%s: Invalid parameters", __func__);
19284 WDI_ASSERT(0);
19285 return WDI_STATUS_E_FAILURE;
19286 }
19287
19288 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19289
19290 /*-------------------------------------------------------------------------
19291 Extract response and send it to UMAC
19292 -------------------------------------------------------------------------*/
19293 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19294 pEventData->pEventData,
19295 sizeof(halTxpowerrsp.setTxPwrRspParams));
19296
19297 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19298 {
19299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19300 "Error status returned in Set Tx Power Response ");
19301 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19302 return WDI_STATUS_E_FAILURE;
19303 }
19304
19305 wdiSetTxPowerRspMsg.wdiStatus =
19306 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19307
19308 /*Notify UMAC*/
19309 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19310
19311 return WDI_STATUS_SUCCESS;
19312}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019313
19314/**
19315 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19316 is being received over the bus from HAL)
19317
19318 @param pWDICtx: pointer to the WLAN DAL context
19319 pEventData: pointer to the event information structure
19320
19321 @see
19322 @return Result of the function call
19323*/
19324WDI_Status
19325WDI_ProcessSetMaxTxPowerPerBandRsp
19326(
19327 WDI_ControlBlockType* pWDICtx,
19328 WDI_EventInfoType* pEventData
19329)
19330{
19331 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19332 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19333 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19335
19336 /*-------------------------------------------------------------------------
19337 Sanity check
19338 -------------------------------------------------------------------------*/
19339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19340 ( NULL == pEventData->pEventData))
19341 {
19342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19343 "%s: Invalid parameters", __func__);
19344 WDI_ASSERT(0);
19345 return WDI_STATUS_E_FAILURE;
19346 }
19347
19348 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19349
19350 /*-------------------------------------------------------------------------
19351 Extract response and send it to UMAC
19352 -------------------------------------------------------------------------*/
19353 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19354 pEventData->pEventData,
19355 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19356
19357 if (eHAL_STATUS_SUCCESS !=
19358 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19359 {
19360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19361 "Error status returned in Set Max Tx Power Per Band Response");
19362 return WDI_STATUS_E_FAILURE;
19363 }
19364
19365 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19366 WDI_HAL_2_WDI_STATUS(
19367 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19368
19369 /* Notify UMAC */
19370 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19371
19372 return WDI_STATUS_SUCCESS;
19373}
19374
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019375#ifdef FEATURE_WLAN_TDLS
19376/**
19377 @brief Process TDLS Link Establish Rsp function (called
19378 when a response is being received over the bus from HAL)
19379
19380 @param pWDICtx: pointer to the WLAN DAL context
19381 pEventData: pointer to the event information structure
19382
19383 @see
19384 @return Result of the function call
19385*/
19386WDI_Status
19387WDI_ProcessLinkEstablishReqRsp
19388(
19389 WDI_ControlBlockType* pWDICtx,
19390 WDI_EventInfoType* pEventData
19391)
19392{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019393 eHalStatus halStatus;
19394 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019395 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19396 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19397
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19399
19400 /*-------------------------------------------------------------------------
19401 Sanity check
19402 -------------------------------------------------------------------------*/
19403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19404 ( NULL == pEventData->pEventData))
19405 {
19406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19407 "%s: Invalid parameters", __func__);
19408 WDI_ASSERT(0);
19409 return WDI_STATUS_E_FAILURE;
19410 }
19411
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019412 /*-------------------------------------------------------------------------
19413 Extract indication and send it to UMAC
19414 -------------------------------------------------------------------------*/
19415 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19416 pEventData->pEventData,
19417 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19418
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019419 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19420
19421 /*-------------------------------------------------------------------------
19422 Extract response and send it to UMAC
19423 -------------------------------------------------------------------------*/
19424 wpalMemoryCopy( &halStatus,
19425 pEventData->pEventData,
19426 sizeof(halStatus));
19427
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019428 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19429 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019430
19431 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019432 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019433
19434 return WDI_STATUS_SUCCESS;
19435}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019436
19437
19438
19439/**
19440 @brief Process TDLS Chan switch Rsp function (called
19441 when a response is being received over the bus from HAL)
19442
19443 @param pWDICtx: pointer to the WLAN DAL context
19444 pEventData: pointer to the event information structure
19445
19446 @see
19447 @return Result of the function call
19448*/
19449WDI_Status
19450WDI_ProcessChanSwitchReqRsp
19451(
19452 WDI_ControlBlockType* pWDICtx,
19453 WDI_EventInfoType* pEventData
19454)
19455{
19456 eHalStatus halStatus;
19457 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19458 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19459 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19460
19461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19462
19463 /*-------------------------------------------------------------------------
19464 Sanity check
19465 -------------------------------------------------------------------------*/
19466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19467 ( NULL == pEventData->pEventData))
19468 {
19469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19470 "%s: Invalid parameters", __func__);
19471 WDI_ASSERT(0);
19472 return WDI_STATUS_E_FAILURE;
19473 }
19474
19475 /*-------------------------------------------------------------------------
19476 Extract indication and send it to UMAC
19477 -------------------------------------------------------------------------*/
19478 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19479 pEventData->pEventData,
19480 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19481
19482 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19483
19484 /*-------------------------------------------------------------------------
19485 Extract response and send it to UMAC
19486 -------------------------------------------------------------------------*/
19487 wpalMemoryCopy( &halStatus,
19488 pEventData->pEventData,
19489 sizeof(halStatus));
19490
19491 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19492 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19493
19494 /*Notify UMAC*/
19495 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19496
19497 return WDI_STATUS_SUCCESS;
19498}/*WDI_ProcessChanSwitchReqRsp*/
19499
19500
19501
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019502#endif
schang86c22c42013-03-13 18:41:24 -070019503
Jeff Johnson295189b2012-06-20 16:38:30 -070019504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019505 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019507
19508 @param pWDICtx: pointer to the WLAN DAL context
19509 pEventData: pointer to the event information structure
19510
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 @see
19512 @return Result of the function call
19513*/
19514WDI_Status
19515WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019516(
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 WDI_ControlBlockType* pWDICtx,
19518 WDI_EventInfoType* pEventData
19519)
19520{
19521 WDI_Status wdiStatus;
19522 eHalStatus halStatus;
19523 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19525
19526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 -------------------------------------------------------------------------*/
19529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19530 ( NULL == pEventData->pEventData))
19531 {
19532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 }
19537
19538 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19539
19540 /*-------------------------------------------------------------------------
19541 Extract response and send it to UMAC
19542 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 wpalMemoryCopy( &halStatus,
19544 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 sizeof(halStatus));
19546
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019548
19549 /*Notify UMAC*/
19550 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19551
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019553}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019557
19558 @param pWDICtx: pointer to the WLAN DAL context
19559 pEventData: pointer to the event information structure
19560
Jeff Johnson295189b2012-06-20 16:38:30 -070019561 @see
19562 @return Result of the function call
19563*/
19564WDI_Status
19565WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019566(
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 WDI_ControlBlockType* pWDICtx,
19568 WDI_EventInfoType* pEventData
19569)
19570{
19571 WDI_Status wdiStatus;
19572 eHalStatus halStatus;
19573 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019574 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19576
19577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 -------------------------------------------------------------------------*/
19580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19581 ( NULL == pEventData->pEventData))
19582 {
19583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588
19589 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19590
19591 /*-------------------------------------------------------------------------
19592 Extract response and send it to UMAC
19593 -------------------------------------------------------------------------*/
19594 halStatus = *((eHalStatus*)pEventData->pEventData);
19595
Jeff Johnsone7245742012-09-05 17:12:55 -070019596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019597
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019598 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19599 * Other module states are taken care by PMC.
19600 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19601 */
19602 if (wdiStatus != WDI_STATUS_SUCCESS) {
19603
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19605 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19606 halStatus);
19607 /* Call Back is not required as we are putting the DXE in FULL
19608 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019609 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19610
19611 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019613 "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 -080019614 WDI_ASSERT(0);
19615 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019616 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 /*Notify UMAC*/
19618 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19619
Jeff Johnsone7245742012-09-05 17:12:55 -070019620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019621}/*WDI_ProcessEnterImpsRsp*/
19622
19623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019626
19627 @param pWDICtx: pointer to the WLAN DAL context
19628 pEventData: pointer to the event information structure
19629
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 @see
19631 @return Result of the function call
19632*/
19633WDI_Status
19634WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019635(
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 WDI_ControlBlockType* pWDICtx,
19637 WDI_EventInfoType* pEventData
19638)
19639{
19640 WDI_Status wdiStatus;
19641 eHalStatus halStatus;
19642 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019643 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19645
19646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 -------------------------------------------------------------------------*/
19649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19650 ( NULL == pEventData->pEventData))
19651 {
19652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 }
19657
19658 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19659
19660 /*-------------------------------------------------------------------------
19661 Extract response and send it to UMAC
19662 -------------------------------------------------------------------------*/
19663 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019665
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019666 if (halStatus != eHAL_STATUS_SUCCESS)
19667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19668 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19669
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019671 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19672 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19673 {
19674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019675 "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 -080019676 WDI_ASSERT(0);
19677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 /*Notify UMAC*/
19679 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19680
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682}/*WDI_ProcessExitImpsRsp*/
19683
19684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019687
19688 @param pWDICtx: pointer to the WLAN DAL context
19689 pEventData: pointer to the event information structure
19690
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 @see
19692 @return Result of the function call
19693*/
19694WDI_Status
19695WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019696(
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ControlBlockType* pWDICtx,
19698 WDI_EventInfoType* pEventData
19699)
19700{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019701 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19702 tHalEnterBmpsRspParams halEnterBmpsRsp;
19703 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19704 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019705 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19707
19708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 -------------------------------------------------------------------------*/
19711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19712 ( NULL == pEventData->pEventData))
19713 {
19714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 }
19719
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019721 Extract response and send it to UMAC
19722 -------------------------------------------------------------------------*/
19723 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19724 {
19725 wpalMemoryCopy( &halEnterBmpsRsp,
19726 pEventData->pEventData,
19727 sizeof(halEnterBmpsRsp));
19728
19729 //Used to print debug message
19730 halStatus = halEnterBmpsRsp.status;
19731 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19732 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19733 }
19734 else
19735 {
19736 halStatus = *((eHalStatus*)pEventData->pEventData);
19737 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19738 }
19739
19740 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019742 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19743 * Other module states are taken care by PMC.
19744 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19745 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019746 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19747 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019750 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19751 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019752 /* Call Back is not required as we are putting the DXE in FULL
19753 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019754 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19755 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19756 {
19757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019758 "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 -080019759 WDI_ASSERT(0);
19760 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019761 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019762 }
19763
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019765 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019766
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019768}/*WDI_ProcessEnterBmpsRsp*/
19769
19770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019773
19774 @param pWDICtx: pointer to the WLAN DAL context
19775 pEventData: pointer to the event information structure
19776
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 @see
19778 @return Result of the function call
19779*/
19780WDI_Status
19781WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019782(
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 WDI_ControlBlockType* pWDICtx,
19784 WDI_EventInfoType* pEventData
19785)
19786{
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 eHalStatus halStatus;
19788 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019789 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019790 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19791 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19793
19794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 -------------------------------------------------------------------------*/
19797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19798 ( NULL == pEventData->pEventData))
19799 {
19800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 }
19805
19806 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19807
19808 /*-------------------------------------------------------------------------
19809 Extract response and send it to UMAC
19810 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019811
19812 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19813 {
19814 wpalMemoryCopy( &halExitBmpsRsp,
19815 pEventData->pEventData,
19816 sizeof(halExitBmpsRsp));
19817
19818 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19819 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19820 }
19821 else
19822 {
19823 halStatus = *((eHalStatus*)pEventData->pEventData);
19824 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19825 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019826
19827 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019828 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19829 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19830 {
19831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019832 "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 -080019833 WDI_ASSERT(0);
19834 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19836
19837 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019838 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019839
Jeff Johnsone7245742012-09-05 17:12:55 -070019840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019841}/*WDI_ProcessExitBmpsRsp*/
19842
19843/**
19844 @brief Process Enter UAPSD Rsp function (called when a response
19845 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019846
19847 @param pWDICtx: pointer to the WLAN DAL context
19848 pEventData: pointer to the event information structure
19849
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 @see
19851 @return Result of the function call
19852*/
19853WDI_Status
19854WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019855(
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 WDI_ControlBlockType* pWDICtx,
19857 WDI_EventInfoType* pEventData
19858)
19859{
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019861 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019863 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19864
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19866
19867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 -------------------------------------------------------------------------*/
19870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19871 ( NULL == pEventData->pEventData))
19872 {
19873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 }
19878
19879 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19880
19881 /*-------------------------------------------------------------------------
19882 Extract response and send it to UMAC
19883 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019884 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19885 {
19886 wpalMemoryCopy( &halEnterUapsdRsp,
19887 pEventData->pEventData,
19888 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019889
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019890 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19891 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19892 }
19893 else
19894 {
19895 halStatus = *((eHalStatus*)pEventData->pEventData);
19896 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19897 }
19898
19899 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 {
19901 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19902 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19903 // the traffic to decide when to suspend the trigger frames when there is no traffic
19904 // activity on the trigger enabled ACs
19905 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19906
19907#ifdef WLAN_PERF
19908 // Increment the BD signature to refresh the fast path BD utilization
19909 pWDICtx->uBdSigSerialNum++;
19910#endif
19911 }
19912
19913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019914 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917}/*WDI_ProcessEnterUapsdRsp*/
19918
19919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019920 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019922
19923 @param pWDICtx: pointer to the WLAN DAL context
19924 pEventData: pointer to the event information structure
19925
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 @see
19927 @return Result of the function call
19928*/
19929WDI_Status
19930WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019931(
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 WDI_ControlBlockType* pWDICtx,
19933 WDI_EventInfoType* pEventData
19934)
19935{
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 eHalStatus halStatus;
19937 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019938 tHalExitUapsdRspParams halExitUapsdRsp;
19939 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19941
19942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 -------------------------------------------------------------------------*/
19945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19946 ( NULL == pEventData->pEventData))
19947 {
19948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 }
19953
19954 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19955
19956 /*-------------------------------------------------------------------------
19957 Extract response and send it to UMAC
19958 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019959 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19960 {
19961 wpalMemoryCopy( &halExitUapsdRsp,
19962 pEventData->pEventData,
19963 sizeof(halExitUapsdRsp));
19964
19965 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19966 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19967 }
19968 else
19969 {
19970 halStatus = *((eHalStatus*)pEventData->pEventData);
19971 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19972 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19974 // directly instead of the FW WQ.
19975 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19976
19977#ifdef WLAN_PERF
19978 // Increment the BD signature to refresh the fast path BD utilization
19979 pWDICtx->uBdSigSerialNum++;
19980#endif
19981
19982 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019983 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986}/*WDI_ProcessExitUapsdRsp*/
19987
19988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019991
19992 @param pWDICtx: pointer to the WLAN DAL context
19993 pEventData: pointer to the event information structure
19994
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 @see
19996 @return Result of the function call
19997*/
19998WDI_Status
19999WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020000(
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 WDI_ControlBlockType* pWDICtx,
20002 WDI_EventInfoType* pEventData
20003)
20004{
20005 WDI_Status wdiStatus;
20006 eHalStatus halStatus;
20007 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20009
20010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 -------------------------------------------------------------------------*/
20013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20014 ( NULL == pEventData->pEventData))
20015 {
20016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 }
20021
20022 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20023
20024 /*-------------------------------------------------------------------------
20025 Extract response and send it to UMAC
20026 -------------------------------------------------------------------------*/
20027 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020028 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020029
20030 /*Notify UMAC*/
20031 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20032
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020034}/*WDI_ProcessSetUapsdAcParamsRsp*/
20035
20036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020039
20040 @param pWDICtx: pointer to the WLAN DAL context
20041 pEventData: pointer to the event information structure
20042
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 @see
20044 @return Result of the function call
20045*/
20046WDI_Status
20047WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020048(
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 WDI_ControlBlockType* pWDICtx,
20050 WDI_EventInfoType* pEventData
20051)
20052{
20053 WDI_Status wdiStatus;
20054 eHalStatus halStatus;
20055 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20057
20058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 -------------------------------------------------------------------------*/
20061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20062 ( NULL == pEventData->pEventData))
20063 {
20064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 }
20069
20070 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20071
20072 /*-------------------------------------------------------------------------
20073 Extract response and send it to UMAC
20074 -------------------------------------------------------------------------*/
20075 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020077
20078 /*Notify UMAC*/
20079 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20080
Jeff Johnsone7245742012-09-05 17:12:55 -070020081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020082}/*WDI_ProcessUpdateUapsdParamsRsp*/
20083
20084/**
20085 @brief Process Configure RXP filter Rsp function (called when a
20086 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020087
20088 @param pWDICtx: pointer to the WLAN DAL context
20089 pEventData: pointer to the event information structure
20090
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 @see
20092 @return Result of the function call
20093*/
20094WDI_Status
20095WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020096(
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 WDI_ControlBlockType* pWDICtx,
20098 WDI_EventInfoType* pEventData
20099)
20100{
20101 WDI_Status wdiStatus;
20102 eHalStatus halStatus;
20103 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20105
20106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 -------------------------------------------------------------------------*/
20109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20110 ( NULL == pEventData->pEventData))
20111 {
20112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 }
20117
20118 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20119
20120 /*-------------------------------------------------------------------------
20121 Extract response and send it to UMAC
20122 -------------------------------------------------------------------------*/
20123 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020125
20126 /*Notify UMAC*/
20127 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20128
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020130}/*WDI_ProcessConfigureRxpFilterRsp*/
20131
20132/**
20133 @brief Process Set beacon filter Rsp function (called when a
20134 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020135
20136 @param pWDICtx: pointer to the WLAN DAL context
20137 pEventData: pointer to the event information structure
20138
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 @see
20140 @return Result of the function call
20141*/
20142WDI_Status
20143WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020144(
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 WDI_ControlBlockType* pWDICtx,
20146 WDI_EventInfoType* pEventData
20147)
20148{
20149 WDI_Status wdiStatus;
20150 eHalStatus halStatus;
20151 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20153
20154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 -------------------------------------------------------------------------*/
20157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20158 ( NULL == pEventData->pEventData))
20159 {
20160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 }
20165
20166 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20167
20168 /*-------------------------------------------------------------------------
20169 Extract response and send it to UMAC
20170 -------------------------------------------------------------------------*/
20171 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020173
20174 /*Notify UMAC*/
20175 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20176
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020178}/*WDI_ProcessSetBeaconFilterRsp*/
20179
20180/**
20181 @brief Process remove beacon filter Rsp function (called when a
20182 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020183
20184 @param pWDICtx: pointer to the WLAN DAL context
20185 pEventData: pointer to the event information structure
20186
Jeff Johnson295189b2012-06-20 16:38:30 -070020187 @see
20188 @return Result of the function call
20189*/
20190WDI_Status
20191WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020192(
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 WDI_ControlBlockType* pWDICtx,
20194 WDI_EventInfoType* pEventData
20195)
20196{
20197 WDI_Status wdiStatus;
20198 eHalStatus halStatus;
20199 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20201
20202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 -------------------------------------------------------------------------*/
20205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20206 ( NULL == pEventData->pEventData))
20207 {
20208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 }
20213
20214 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20215
20216 /*-------------------------------------------------------------------------
20217 Extract response and send it to UMAC
20218 -------------------------------------------------------------------------*/
20219 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020221
20222 /*Notify UMAC*/
20223 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20224
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020226}/*WDI_ProcessRemBeaconFilterRsp*/
20227
20228/**
20229 @brief Process set RSSI thresholds Rsp function (called when a
20230 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020231
20232 @param pWDICtx: pointer to the WLAN DAL context
20233 pEventData: pointer to the event information structure
20234
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 @see
20236 @return Result of the function call
20237*/
20238WDI_Status
20239WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020240(
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 WDI_ControlBlockType* pWDICtx,
20242 WDI_EventInfoType* pEventData
20243)
20244{
20245 WDI_Status wdiStatus;
20246 eHalStatus halStatus;
20247 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20249
20250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 -------------------------------------------------------------------------*/
20253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20254 ( NULL == pEventData->pEventData))
20255 {
20256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 }
20261
20262 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20263
20264 /*-------------------------------------------------------------------------
20265 Extract response and send it to UMAC
20266 -------------------------------------------------------------------------*/
20267 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020269
20270 /*Notify UMAC*/
20271 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20272
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020274}/*WDI_ProcessSetRSSIThresoldsRsp*/
20275
20276/**
20277 @brief Process host offload Rsp function (called when a
20278 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020279
20280 @param pWDICtx: pointer to the WLAN DAL context
20281 pEventData: pointer to the event information structure
20282
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 @see
20284 @return Result of the function call
20285*/
20286WDI_Status
20287WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020288(
Jeff Johnson295189b2012-06-20 16:38:30 -070020289 WDI_ControlBlockType* pWDICtx,
20290 WDI_EventInfoType* pEventData
20291)
20292{
20293 WDI_Status wdiStatus;
20294 eHalStatus halStatus;
20295 WDI_HostOffloadCb wdiHostOffloadCb;
20296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20297
20298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 -------------------------------------------------------------------------*/
20301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20302 ( NULL == pEventData->pEventData))
20303 {
20304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 }
20309
20310 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20311
20312 /*-------------------------------------------------------------------------
20313 Extract response and send it to UMAC
20314 -------------------------------------------------------------------------*/
20315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020317
20318 /*Notify UMAC*/
20319 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20320
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020322}/*WDI_ProcessHostOffloadRsp*/
20323
20324/**
20325 @brief Process keep alive Rsp function (called when a
20326 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020327
20328 @param pWDICtx: pointer to the WLAN DAL context
20329 pEventData: pointer to the event information structure
20330
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 @see
20332 @return Result of the function call
20333*/
20334WDI_Status
20335WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020336(
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 WDI_ControlBlockType* pWDICtx,
20338 WDI_EventInfoType* pEventData
20339)
20340{
20341 WDI_Status wdiStatus;
20342 eHalStatus halStatus;
20343 WDI_KeepAliveCb wdiKeepAliveCb;
20344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20346 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20347
20348
20349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 -------------------------------------------------------------------------*/
20352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20353 ( NULL == pEventData->pEventData))
20354 {
20355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 }
20360
Jeff Johnsone7245742012-09-05 17:12:55 -070020361 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20362
Jeff Johnson295189b2012-06-20 16:38:30 -070020363 /*-------------------------------------------------------------------------
20364 Extract response and send it to UMAC
20365 -------------------------------------------------------------------------*/
20366 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020368
20369 /*Notify UMAC*/
20370 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20371
Jeff Johnsone7245742012-09-05 17:12:55 -070020372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020373}/*WDI_ProcessKeepAliveRsp*/
20374
20375/**
20376 @brief Process wowl add ptrn Rsp function (called when a
20377 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020378
20379 @param pWDICtx: pointer to the WLAN DAL context
20380 pEventData: pointer to the event information structure
20381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 @see
20383 @return Result of the function call
20384*/
20385WDI_Status
20386WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020387(
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 WDI_ControlBlockType* pWDICtx,
20389 WDI_EventInfoType* pEventData
20390)
20391{
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 eHalStatus halStatus;
20393 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020394 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20395 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20396
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20398
20399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 -------------------------------------------------------------------------*/
20402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20403 ( NULL == pEventData->pEventData))
20404 {
20405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020409 }
20410
20411 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20412
20413 /*-------------------------------------------------------------------------
20414 Extract response and send it to UMAC
20415 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020416 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20417 {
20418 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20419 pEventData->pEventData,
20420 sizeof(halAddWowlBcastPtrRsp));
20421
20422 wdiWowlAddBcPtrRsp.wdiStatus =
20423 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20424 }
20425 else
20426 {
20427 halStatus = *((eHalStatus*)pEventData->pEventData);
20428 wdiWowlAddBcPtrRsp.wdiStatus =
20429 WDI_HAL_2_WDI_STATUS(halStatus);
20430 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020431
20432 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020433 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020434
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020436}/*WDI_ProcessWowlAddBcPtrnRsp*/
20437
20438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020441
20442 @param pWDICtx: pointer to the WLAN DAL context
20443 pEventData: pointer to the event information structure
20444
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 @see
20446 @return Result of the function call
20447*/
20448WDI_Status
20449WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020450(
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 WDI_ControlBlockType* pWDICtx,
20452 WDI_EventInfoType* pEventData
20453)
20454{
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 eHalStatus halStatus;
20456 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020457 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20458 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20460
20461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 -------------------------------------------------------------------------*/
20464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20465 ( NULL == pEventData->pEventData))
20466 {
20467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 }
20472
20473 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20474
20475 /*-------------------------------------------------------------------------
20476 Extract response and send it to UMAC
20477 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020478 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20479 {
20480 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20481 pEventData->pEventData,
20482 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020483
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020484 wdiWowlDelBcstPtrRsp.wdiStatus =
20485 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20486 }
20487 else
20488 {
20489 halStatus = *((eHalStatus*)pEventData->pEventData);
20490 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20491 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020493 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020494
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496}/*WDI_ProcessWowlDelBcPtrnRsp*/
20497
20498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020501
20502 @param pWDICtx: pointer to the WLAN DAL context
20503 pEventData: pointer to the event information structure
20504
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 @see
20506 @return Result of the function call
20507*/
20508WDI_Status
20509WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020510(
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 WDI_ControlBlockType* pWDICtx,
20512 WDI_EventInfoType* pEventData
20513)
20514{
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 eHalStatus halStatus;
20516 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020517 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20518 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20520
20521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 -------------------------------------------------------------------------*/
20524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20525 ( NULL == pEventData->pEventData))
20526 {
20527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 }
20532
20533 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20534
20535 /*-------------------------------------------------------------------------
20536 Extract response and send it to UMAC
20537 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020538 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20539 {
20540 wpalMemoryCopy( &halEnterWowlRspParams,
20541 (wpt_uint8*)pEventData->pEventData,
20542 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020543
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020544 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20545 wdiwowlEnterRsp.status =
20546 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20547 }
20548 else
20549 {
20550 halStatus = *((eHalStatus*)pEventData->pEventData);
20551 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20552 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020554 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020555
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020557}/*WDI_ProcessWowlEnterRsp*/
20558
20559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020562
20563 @param pWDICtx: pointer to the WLAN DAL context
20564 pEventData: pointer to the event information structure
20565
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 @see
20567 @return Result of the function call
20568*/
20569WDI_Status
20570WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020571(
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 WDI_ControlBlockType* pWDICtx,
20573 WDI_EventInfoType* pEventData
20574)
20575{
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 eHalStatus halStatus;
20577 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020578 tHalExitWowlRspParams halExitWowlRspParams;
20579 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20582
20583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 -------------------------------------------------------------------------*/
20586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20587 ( NULL == pEventData->pEventData))
20588 {
20589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 }
20594
20595 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20596
20597 /*-------------------------------------------------------------------------
20598 Extract response and send it to UMAC
20599 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020600 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20601 {
20602 wpalMemoryCopy( &halExitWowlRspParams,
20603 pEventData->pEventData,
20604 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020605
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020606 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20607 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20608
20609 }
20610 else
20611 {
20612 halStatus = *((eHalStatus*)pEventData->pEventData);
20613 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20614 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020616 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020617
Jeff Johnsone7245742012-09-05 17:12:55 -070020618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020619}/*WDI_ProcessWowlExitRsp*/
20620
20621/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 (called when a response is being received over the bus
20624 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020625
20626 @param pWDICtx: pointer to the WLAN DAL context
20627 pEventData: pointer to the event information structure
20628
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 @see
20630 @return Result of the function call
20631*/
20632WDI_Status
20633WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020634(
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 WDI_ControlBlockType* pWDICtx,
20636 WDI_EventInfoType* pEventData
20637)
20638{
20639 WDI_Status wdiStatus;
20640 eHalStatus halStatus;
20641 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20643
20644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 -------------------------------------------------------------------------*/
20647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20648 ( NULL == pEventData->pEventData))
20649 {
20650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 }
20655
20656 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20657
20658 /*-------------------------------------------------------------------------
20659 Extract response and send it to UMAC
20660 -------------------------------------------------------------------------*/
20661 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020663
20664 /*Notify UMAC*/
20665 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20666
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020668}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20669
20670
20671/**
20672 @brief Process Nv download(called when a response
20673 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020674
20675 @param pWDICtx: pointer to the WLAN DAL context
20676 pEventData: pointer to the event information structure
20677
Jeff Johnson295189b2012-06-20 16:38:30 -070020678 @see
20679 @return Result of the function call
20680*/
20681WDI_Status
20682WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020683(
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 WDI_ControlBlockType* pWDICtx,
20685 WDI_EventInfoType* pEventData
20686)
20687{
20688
20689 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20690 tHalNvImgDownloadRspParams halNvDownloadRsp;
20691 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20692
20693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 -------------------------------------------------------------------------*/
20696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20697 ( NULL == pEventData->pEventData))
20698 {
20699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 }
20704
20705 /*-------------------------------------------------------------------------
20706 Extract response and send it to UMAC
20707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wpalMemoryCopy( &halNvDownloadRsp,
20709 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 sizeof(halNvDownloadRsp));
20711
20712 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20713
20714 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20716 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 {
20718 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 }
20721 else
20722 {
20723 /*Reset the Nv related global information in WDI context information */
20724 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20725 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20726 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20727 /*call WDA callback function for last fragment */
20728 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20729 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20730 }
20731
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020733}
20734#ifdef WLAN_FEATURE_VOWIFI_11R
20735/**
20736 @brief Process Add TSpec Rsp function (called when a response
20737 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020738
20739 @param pWDICtx: pointer to the WLAN DAL context
20740 pEventData: pointer to the event information structure
20741
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 @see
20743 @return Result of the function call
20744*/
20745WDI_Status
20746WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020747(
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 WDI_ControlBlockType* pWDICtx,
20749 WDI_EventInfoType* pEventData
20750)
20751{
20752 WDI_Status wdiStatus;
20753 tAggrAddTsRspParams aggrAddTsRsp;
20754 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20756
20757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 -------------------------------------------------------------------------*/
20760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20761 ( NULL == pEventData->pEventData))
20762 {
20763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 }
20768
20769 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20770
20771 /*-------------------------------------------------------------------------
20772 Extract response and send it to UMAC
20773 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 wpalMemoryCopy( &aggrAddTsRsp,
20775 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 sizeof(aggrAddTsRsp));
20777
20778 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020780
20781 /*Notify UMAC*/
20782 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20783
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020785}/*WDI_ProcessAddTSpecRsp*/
20786#endif /* WLAN_FEATURE_VOWIFI_11R */
20787
20788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020789 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020791
20792 @param pWDICtx: pointer to the WLAN DAL context
20793 pEventData: pointer to the event information structure
20794
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 @see
20796 @return Result of the function call
20797*/
20798WDI_Status
20799WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020800(
Jeff Johnson295189b2012-06-20 16:38:30 -070020801 WDI_ControlBlockType* pWDICtx,
20802 WDI_EventInfoType* pEventData
20803)
20804{
20805 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20806 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20807 tHalHostResumeRspParams hostResumeRspMsg;
20808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20809
20810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 -------------------------------------------------------------------------*/
20813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20814 ( NULL == pEventData->pEventData))
20815 {
20816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 }
20821
20822 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20823
20824 /*-------------------------------------------------------------------------
20825 Extract response and send it to UMAC
20826 -------------------------------------------------------------------------*/
20827
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 (wpt_uint8*)pEventData->pEventData,
20830 sizeof(hostResumeRspMsg));
20831
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 wdiResumeRspParams.wdiStatus =
20833 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020834
20835 /*Notify UMAC*/
20836 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20837
20838 return WDI_STATUS_SUCCESS;
20839}
20840
20841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020844
20845 @param pWDICtx: pointer to the WLAN DAL context
20846 pEventData: pointer to the event information structure
20847
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 @see
20849 @return Result of the function call
20850*/
20851WDI_Status
20852WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020853(
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 WDI_ControlBlockType* pWDICtx,
20855 WDI_EventInfoType* pEventData
20856)
20857{
20858 WDI_Status wdiStatus;
20859 eHalStatus halStatus;
20860 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20862
20863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 -------------------------------------------------------------------------*/
20866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20867 ( NULL == pEventData->pEventData))
20868 {
20869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
20875 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876
20877 /*-------------------------------------------------------------------------
20878 Extract response and send it to UMAC
20879 -------------------------------------------------------------------------*/
20880 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020882
20883 /*Notify UMAC*/
20884 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20885
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020887}/*WDI_ProcessSetTxPerTrackingRsp*/
20888
20889/*==========================================================================
20890 Indications from HAL
20891 ==========================================================================*/
20892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 indication of this kind is being received over the bus
20895 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020896
20897 @param pWDICtx: pointer to the WLAN DAL context
20898 pEventData: pointer to the event information structure
20899
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 @see
20901 @return Result of the function call
20902*/
20903WDI_Status
20904WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020905(
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 WDI_ControlBlockType* pWDICtx,
20907 WDI_EventInfoType* pEventData
20908)
20909{
20910 WDI_LowLevelIndType wdiInd;
20911 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20913
20914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 -------------------------------------------------------------------------*/
20917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20918 ( NULL == pEventData->pEventData))
20919 {
20920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 }
20925
20926 /*-------------------------------------------------------------------------
20927 Extract indication and send it to UMAC
20928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20930 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020931 sizeof(tHalRSSINotification));
20932
20933 /*Fill in the indication parameters*/
20934 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20935 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20936 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20937 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20938 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20939 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20940 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20941 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20942 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20943 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20944 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20945 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20946 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020947 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20948 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949
ltimariub77f24b2013-01-24 18:54:33 -080020950 if ( pWDICtx->wdiLowLevelIndCB )
20951 {
20952 /*Notify UMAC of indication*/
20953 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20954 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020955
20956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020957}/*WDI_ProcessLowRSSIInd*/
20958
20959
20960/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 an indication of this kind is being received over the
20963 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020964
20965 @param pWDICtx: pointer to the WLAN DAL context
20966 pEventData: pointer to the event information structure
20967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 @see
20969 @return Result of the function call
20970*/
20971WDI_Status
20972WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020973(
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 WDI_ControlBlockType* pWDICtx,
20975 WDI_EventInfoType* pEventData
20976)
20977{
20978 WDI_Status wdiStatus;
20979 eHalStatus halStatus;
20980 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020981 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20983
20984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 -------------------------------------------------------------------------*/
20987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20988 ( NULL == pEventData->pEventData))
20989 {
20990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020995 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 /*-------------------------------------------------------------------------
20997 Extract indication and send it to UMAC
20998 -------------------------------------------------------------------------*/
20999 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21000 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021001 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021002
21003 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021004 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021005 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21006 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021007 if ( pWDICtx->wdiLowLevelIndCB )
21008 {
21009 /*Notify UMAC*/
21010 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21011 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021012
21013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014}/*WDI_ProcessMissedBeaconInd*/
21015
21016
21017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021019 an indication of this kind is being received over the
21020 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021021
21022 @param pWDICtx: pointer to the WLAN DAL context
21023 pEventData: pointer to the event information structure
21024
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 @see
21026 @return Result of the function call
21027*/
21028WDI_Status
21029WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021030(
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 WDI_ControlBlockType* pWDICtx,
21032 WDI_EventInfoType* pEventData
21033)
21034{
21035 WDI_Status wdiStatus;
21036 eHalStatus halStatus;
21037 WDI_LowLevelIndType wdiInd;
21038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21039
21040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 -------------------------------------------------------------------------*/
21043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21044 ( NULL == pEventData->pEventData))
21045 {
21046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 }
21051
21052 /*-------------------------------------------------------------------------
21053 Extract indication and send it to UMAC
21054 -------------------------------------------------------------------------*/
21055 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21056 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021058
21059 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 /* ! TO DO - fill in from HAL struct:
21062 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21063
ltimariub77f24b2013-01-24 18:54:33 -080021064 if ( pWDICtx->wdiLowLevelIndCB )
21065 {
21066 /*Notify UMAC*/
21067 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021069
21070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021071}/*WDI_ProcessUnkAddrFrameInd*/
21072
21073
21074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 indication of this kind is being received over the bus
21077 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021078
21079 @param pWDICtx: pointer to the WLAN DAL context
21080 pEventData: pointer to the event information structure
21081
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 @see
21083 @return Result of the function call
21084*/
21085WDI_Status
21086WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021087(
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 WDI_ControlBlockType* pWDICtx,
21089 WDI_EventInfoType* pEventData
21090)
21091{
21092 WDI_LowLevelIndType wdiInd;
21093 tpSirMicFailureInd pHalMicFailureInd;
21094
21095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21096
21097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 -------------------------------------------------------------------------*/
21100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21101 ( NULL == pEventData->pEventData))
21102 {
21103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021108
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21110 /*-------------------------------------------------------------------------
21111 Extract indication and send it to UMAC
21112 -------------------------------------------------------------------------*/
21113
21114 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21117 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21118 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21119 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21120 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21121 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21122 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21123 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 pHalMicFailureInd->info.keyId;
21130 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21131 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21132 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21133 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021134
21135 if ( pWDICtx->wdiLowLevelIndCB )
21136 {
21137 /*Notify UMAC*/
21138 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21139 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021140
21141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021142}/*WDI_ProcessMicFailureInd*/
21143
21144
21145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 an indication of this kind is being received over the
21148 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021149
21150 @param pWDICtx: pointer to the WLAN DAL context
21151 pEventData: pointer to the event information structure
21152
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 @see
21154 @return Result of the function call
21155*/
21156WDI_Status
21157WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021158(
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 WDI_ControlBlockType* pWDICtx,
21160 WDI_EventInfoType* pEventData
21161)
21162{
21163 WDI_Status wdiStatus;
21164 eHalStatus halStatus;
21165 WDI_LowLevelIndType wdiInd;
21166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21167
21168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 -------------------------------------------------------------------------*/
21171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21172 ( NULL == pEventData->pEventData))
21173 {
21174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 }
21179
21180 /*-------------------------------------------------------------------------
21181 Extract indication and send it to UMAC
21182 -------------------------------------------------------------------------*/
21183
21184 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21185 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021187
21188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21189 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021190
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21193 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194
ltimariub77f24b2013-01-24 18:54:33 -080021195 if ( pWDICtx->wdiLowLevelIndCB )
21196 {
21197 /*Notify UMAC*/
21198 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021200
21201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021202}/*WDI_ProcessFatalErrorInd*/
21203
21204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 an indication of this kind is being received over the
21207 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021208
21209 @param pWDICtx: pointer to the WLAN DAL context
21210 pEventData: pointer to the event information structure
21211
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 @see
21213 @return Result of the function call
21214*/
21215WDI_Status
21216WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021217(
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 WDI_ControlBlockType* pWDICtx,
21219 WDI_EventInfoType* pEventData
21220)
21221{
21222 tDeleteStaContextParams halDelSTACtx;
21223 WDI_LowLevelIndType wdiInd;
21224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21225
21226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 -------------------------------------------------------------------------*/
21229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21230 ( NULL == pEventData->pEventData))
21231 {
21232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 }
21237
21238 /*-------------------------------------------------------------------------
21239 Extract indication and send it to UMAC
21240 -------------------------------------------------------------------------*/
21241
21242 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 wpalMemoryCopy( &halDelSTACtx,
21244 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 sizeof(halDelSTACtx));
21246
21247 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021249
21250 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21251 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21252 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21253 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21254
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21260 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021261
ltimariub77f24b2013-01-24 18:54:33 -080021262 if ( pWDICtx->wdiLowLevelIndCB )
21263 {
21264 /*Notify UMAC*/
21265 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21266 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021267
21268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021269}/*WDI_ProcessDelSTAInd*/
21270
21271/**
21272*@brief Process Coex Indication function (called when
21273 an indication of this kind is being received over the
21274 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021275
21276 @param pWDICtx: pointer to the WLAN DAL context
21277 pEventData: pointer to the event information structure
21278
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 @see
21280 @return Result of the function call
21281*/
21282WDI_Status
21283WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021284(
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 WDI_ControlBlockType* pWDICtx,
21286 WDI_EventInfoType* pEventData
21287)
21288{
21289 WDI_LowLevelIndType wdiInd;
21290 tCoexIndMsg halCoexIndMsg;
21291 wpt_uint32 index;
21292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21293
21294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 -------------------------------------------------------------------------*/
21297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21298 ( NULL == pEventData->pEventData ))
21299 {
21300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 }
21305
21306 /*-------------------------------------------------------------------------
21307 Extract indication and send it to UMAC
21308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21310 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 sizeof(halCoexIndMsg.coexIndParams) );
21312
21313 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 wdiInd.wdiIndicationType = WDI_COEX_IND;
21315 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21317 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021319 }
21320
21321 // DEBUG
21322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21323 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21325 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21326 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21327 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21328 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021329
ltimariub77f24b2013-01-24 18:54:33 -080021330 if ( pWDICtx->wdiLowLevelIndCB )
21331 {
21332 /*Notify UMAC*/
21333 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21334 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021335
21336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337}/*WDI_ProcessCoexInd*/
21338
21339/**
21340*@brief Process Tx Complete Indication function (called when
21341 an indication of this kind is being received over the
21342 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021343
21344 @param pWDICtx: pointer to the WLAN DAL context
21345 pEventData: pointer to the event information structure
21346
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 @see
21348 @return Result of the function call
21349*/
21350WDI_Status
21351WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021352(
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 WDI_ControlBlockType* pWDICtx,
21354 WDI_EventInfoType* pEventData
21355)
21356{
21357 WDI_LowLevelIndType wdiInd;
21358 tTxComplIndMsg halTxComplIndMsg;
21359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21360
21361 /*-------------------------------------------------------------------------
21362 Sanity check
21363 -------------------------------------------------------------------------*/
21364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21365 ( NULL == pEventData->pEventData ))
21366 {
21367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 WDI_ASSERT( 0 );
21370 return WDI_STATUS_E_FAILURE;
21371 }
21372
21373 /*-------------------------------------------------------------------------
21374 Extract indication and send it to UMAC
21375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21377 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 sizeof(halTxComplIndMsg.txComplParams) );
21379
21380 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21382 wdiInd.wdiIndicationData.tx_complete_status
21383 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384
ltimariub77f24b2013-01-24 18:54:33 -080021385 if ( pWDICtx->wdiLowLevelIndCB )
21386 {
21387 /*Notify UMAC*/
21388 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021390
21391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021393#ifdef FEATURE_WLAN_TDLS
21394/**
21395*@brief Process TDLS Indication function (called when
21396 an indication of this kind is being received over the
21397 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021398
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021399 @param pWDICtx: pointer to the WLAN DAL context
21400 pEventData: pointer to the event information structure
21401
21402 @see
21403 @return Result of the function call
21404*/
21405WDI_Status
21406WDI_ProcessTdlsInd
21407(
21408 WDI_ControlBlockType* pWDICtx,
21409 WDI_EventInfoType* pEventData
21410)
21411{
21412 WDI_LowLevelIndType wdiInd;
21413 tTdlsIndMsg halTdlsIndMsg;
21414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21415
21416 /*-------------------------------------------------------------------------
21417 Sanity check
21418 -------------------------------------------------------------------------*/
21419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21420 ( NULL == pEventData->pEventData ))
21421 {
21422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21423 "%s: Invalid parameters", __func__);
21424 WDI_ASSERT( 0 );
21425 return WDI_STATUS_E_FAILURE;
21426 }
21427
21428 /*-------------------------------------------------------------------------
21429 Extract indication and send it to UMAC
21430 -------------------------------------------------------------------------*/
21431 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21432 pEventData->pEventData,
21433 sizeof(halTdlsIndMsg.tdlsIndParams) );
21434
21435 /*Fill in the indication parameters*/
21436 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21437
21438 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21439 = halTdlsIndMsg.tdlsIndParams.status;
21440
21441 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21442 = halTdlsIndMsg.tdlsIndParams.staIdx;
21443
21444 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21445 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21446
Atul Mittalbb2aad02014-09-22 19:09:36 +053021447 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21448 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021449 /*Notify UMAC*/
21450 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21451
21452 return WDI_STATUS_SUCCESS;
21453}/*WDI_ProcessTdlsInd*/
21454#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021455/**
Viral Modid86bde22012-12-10 13:09:21 -080021456*@brief Process Noa Start Indication function (called when
21457 an indication of this kind is being received over the
21458 bus from HAL)
21459
21460 @param pWDICtx: pointer to the WLAN DAL context
21461 pEventData: pointer to the event information structure
21462
21463 @see
21464 @return Result of the function call
21465*/
21466WDI_Status
21467WDI_ProcessP2pNoaStartInd
21468(
21469 WDI_ControlBlockType* pWDICtx,
21470 WDI_EventInfoType* pEventData
21471)
21472{
21473 WDI_LowLevelIndType wdiInd;
21474 tNoaStartIndMsg halNoaStartIndMsg;
21475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21476
21477 /*-------------------------------------------------------------------------
21478 Sanity check
21479 -------------------------------------------------------------------------*/
21480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21481 ( NULL == pEventData->pEventData ))
21482 {
21483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21484 "%s: Invalid parameters", __func__);
21485 WDI_ASSERT( 0 );
21486 return WDI_STATUS_E_FAILURE;
21487 }
21488
21489 /*-------------------------------------------------------------------------
21490 Extract indication and send it to UMAC
21491 -------------------------------------------------------------------------*/
21492 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21493 pEventData->pEventData,
21494 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21495
21496 /*Fill in the indication parameters*/
21497 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21498
21499 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21500 = halNoaStartIndMsg.noaStartIndParams.status;
21501
21502 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21503 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21504
21505 /*Notify UMAC*/
21506 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21507
21508 return WDI_STATUS_SUCCESS;
21509}/*WDI_ProcessNoaAttrInd*/
21510
21511/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021512*@brief Process Noa Attr Indication function (called when
21513 an indication of this kind is being received over the
21514 bus from HAL)
21515
21516 @param pWDICtx: pointer to the WLAN DAL context
21517 pEventData: pointer to the event information structure
21518
21519 @see
21520 @return Result of the function call
21521*/
21522WDI_Status
21523WDI_ProcessP2pNoaAttrInd
21524(
21525 WDI_ControlBlockType* pWDICtx,
21526 WDI_EventInfoType* pEventData
21527)
21528{
21529 WDI_LowLevelIndType wdiInd;
21530 tNoaAttrIndMsg halNoaAttrIndMsg;
21531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21532
21533 /*-------------------------------------------------------------------------
21534 Sanity check
21535 -------------------------------------------------------------------------*/
21536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21537 ( NULL == pEventData->pEventData ))
21538 {
21539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 WDI_ASSERT( 0 );
21542 return WDI_STATUS_E_FAILURE;
21543 }
21544
21545 /*-------------------------------------------------------------------------
21546 Extract indication and send it to UMAC
21547 -------------------------------------------------------------------------*/
21548 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21549 pEventData->pEventData,
21550 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21551
21552 /*Fill in the indication parameters*/
21553 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021554
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21556 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021557
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21559 = halNoaAttrIndMsg.noaAttrIndParams.index;
21560 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21561 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21562 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21563 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021564
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21566 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21567 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21568 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21569 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21570 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21571 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21572 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021573
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21575 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21576 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21577 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21578 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21579 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21580 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21581 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21582
ltimariub77f24b2013-01-24 18:54:33 -080021583 if ( pWDICtx->wdiLowLevelIndCB )
21584 {
21585 /*Notify UMAC*/
21586 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21587 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021588
21589 return WDI_STATUS_SUCCESS;
21590}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021591
21592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 an indication of this kind is being received over the
21595 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021596
21597 @param pWDICtx: pointer to the WLAN DAL context
21598 pEventData: pointer to the event information structure
21599
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 @see
21601 @return Result of the function call
21602*/
21603WDI_Status
21604WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021605(
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 WDI_ControlBlockType* pWDICtx,
21607 WDI_EventInfoType* pEventData
21608)
21609{
21610 WDI_LowLevelIndType wdiInd;
21611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021612
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 /*-------------------------------------------------------------------------
21614 Extract indication and send it to UMAC
21615 -------------------------------------------------------------------------*/
21616 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21618
ltimariub77f24b2013-01-24 18:54:33 -080021619 if ( pWDICtx->wdiLowLevelIndCB )
21620 {
21621 /*Notify UMAC*/
21622 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21623 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021624
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021626}/*WDI_ProcessTxPerHitInd*/
21627
Jeff Johnson295189b2012-06-20 16:38:30 -070021628/**
Yue Mab9c86f42013-08-14 15:59:08 -070021629 @brief Process Periodic Tx Pattern Fw Indication function
21630
21631 @param pWDICtx: pointer to the WLAN DAL context
21632 pEventData: pointer to the event information structure
21633
21634 @see
21635 @return Result of the function call
21636*/
21637WDI_Status
21638WDI_ProcessPeriodicTxPtrnFwInd
21639(
21640 WDI_ControlBlockType* pWDICtx,
21641 WDI_EventInfoType* pEventData
21642)
21643{
21644 WDI_LowLevelIndType wdiInd;
21645
21646 /*-------------------------------------------------------------------------
21647 Sanity check
21648 -------------------------------------------------------------------------*/
21649 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21650 (NULL == pEventData->pEventData))
21651 {
21652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21653 "%s: Invalid parameters", __func__);
21654 WDI_ASSERT(0);
21655 return WDI_STATUS_E_FAILURE;
21656 }
21657
21658 /*-------------------------------------------------------------------------
21659 Extract indication and send it to UMAC
21660 -------------------------------------------------------------------------*/
21661 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21662 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21663 sizeof(tHalPeriodicTxPtrnFwInd));
21664
21665 if (pWDICtx->wdiLowLevelIndCB)
21666 {
21667 /*Notify UMAC*/
21668 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21669 }
21670
21671 return WDI_STATUS_SUCCESS;
21672}
21673
21674/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 @brief WDI_ProcessFTMCommandReq
21676 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021677
21678 @param pWDICtx: pointer to the WLAN DAL context
21679 pEventData: pointer to the event information structure
21680
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 @see
21682 @return Result of the function call
21683*/
21684WDI_Status
21685WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021686(
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 WDI_ControlBlockType* pWDICtx,
21688 WDI_EventInfoType* pEventData
21689)
21690{
21691 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21692 wpt_uint8 *ftmCommandBuffer = NULL;
21693 wpt_uint16 dataOffset;
21694 wpt_uint16 bufferSize;
21695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 -------------------------------------------------------------------------*/
21698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21699 ( NULL == pEventData->pEventData))
21700
21701 {
21702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 }
21707
21708 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21709
21710 /* Get MSG Buffer */
21711 WDI_GetMessageBuffer(pWDICtx,
21712 WDI_FTM_CMD_REQ,
21713 ftmCommandReq->bodyLength,
21714 &ftmCommandBuffer,
21715 &dataOffset,
21716 &bufferSize);
21717
21718 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21719 ftmCommandReq->FTMCommandBody,
21720 ftmCommandReq->bodyLength);
21721
21722 /* Send MSG */
21723 return WDI_SendMsg(pWDICtx,
21724 ftmCommandBuffer,
21725 bufferSize,
21726 pEventData->pCBfnc,
21727 pEventData->pUserData,
21728 WDI_FTM_CMD_RESP);
21729}
21730
21731/**
21732 @brief WDI_ProcessFTMCommandRsp
21733 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021734
21735 @param pWDICtx: pointer to the WLAN DAL context
21736 pEventData: pointer to the event information structure
21737
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 @see
21739 @return Result of the function call
21740*/
21741WDI_Status
21742WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021743(
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 WDI_ControlBlockType* pWDICtx,
21745 WDI_EventInfoType* pEventData
21746)
21747{
21748 WDI_FTMCommandRspCb ftmCMDRspCb;
21749 tProcessPttRspParams *ftmCMDRspData = NULL;
21750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21751
21752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 -------------------------------------------------------------------------*/
21755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21756 ( NULL == pEventData->pEventData))
21757 {
21758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 }
21763
21764 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21765
21766 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21767
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21769 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21771
21772 /*Notify UMAC*/
21773 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21774
Jeff Johnsone7245742012-09-05 17:12:55 -070021775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021776}
Jeff Johnson295189b2012-06-20 16:38:30 -070021777/**
21778 @brief WDI_ProcessHalDumpCmdReq
21779 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021780
21781 @param pWDICtx: pointer to the WLAN DAL context
21782 pEventData: pointer to the event information structure
21783
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 @see
21785 @return Result of the function call
21786*/
21787WDI_Status
21788WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021789(
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 WDI_ControlBlockType* pWDICtx,
21791 WDI_EventInfoType* pEventData
21792)
21793{
21794 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21795 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21796 wpt_uint16 usDataOffset = 0;
21797 wpt_uint16 usSendSize = 0;
21798 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021800
21801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 -------------------------------------------------------------------------*/
21804 if (( NULL == pEventData ) ||
21805 ( NULL == pEventData->pEventData) ||
21806 ( NULL == pEventData->pCBfnc ))
21807 {
21808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 }
21813
21814 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21815 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21816
21817 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021822 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021824 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 /*-----------------------------------------------------------------------
21830 Get message buffer
21831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021833 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21834 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21837 {
21838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021839 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 }
21844
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 wpalMemoryCopy( pSendBuffer+usDataOffset,
21846 &halDumpCmdReqMsg.dumpCmdReqParams,
21847 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021848
21849 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021850 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021851
21852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21856 wdiHALDumpCmdRspCb, pEventData->pUserData,
21857 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021858}
21859
21860/**
21861 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 Process hal Dump Command Response from HAL, simply route to HDD
21863
21864 @param pWDICtx: pointer to the WLAN DAL context
21865 pEventData: pointer to the event information structure
21866
Jeff Johnson295189b2012-06-20 16:38:30 -070021867 @see
21868 @return Result of the function call
21869*/
21870WDI_Status
21871WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021872(
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 WDI_ControlBlockType* pWDICtx,
21874 WDI_EventInfoType* pEventData
21875)
21876{
21877 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021878 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21880
21881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021883 -------------------------------------------------------------------------*/
21884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21885 ( NULL == pEventData->pEventData))
21886 {
21887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 }
21892
Jeff Johnsone7245742012-09-05 17:12:55 -070021893 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021894
21895 /*Initialize the WDI Response structure */
21896 wdiHALDumpCmdRsp.usBufferLen = 0;
21897 wdiHALDumpCmdRsp.pBuffer = NULL;
21898
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021899 wpalMemoryCopy( &halDumpCmdRspParams,
21900 pEventData->pEventData,
21901 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021902
21903 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021904 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021905
21906 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021907 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 {
21909 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021910 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21911 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21912
21913 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21914 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021915 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021917
Jeff Johnson295189b2012-06-20 16:38:30 -070021918 /*Notify UMAC*/
21919 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21920
21921 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21922 {
21923 /* Free the allocated buffer */
21924 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21925 }
21926 return WDI_STATUS_SUCCESS;
21927}
21928
21929/*==========================================================================
21930 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021931
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021934==========================================================================*/
21935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 when it wishes to send up a notification like the ones
21938 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021939
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021941
21942 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 wctsNotifyCBData: the callback data of the user
21945
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021947
21948 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021949*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021950void
Jeff Johnson295189b2012-06-20 16:38:30 -070021951WDI_NotifyMsgCTSCB
21952(
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 WCTS_NotifyEventType wctsEvent,
21955 void* wctsNotifyCBData
21956)
21957{
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21960
21961 if (NULL == pWDICtx )
21962 {
21963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 }
21968
21969 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21970 {
21971 /* callback presumably occurred after close */
21972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021973 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 }
21976
21977 if ( WCTS_EVENT_OPEN == wctsEvent )
21978 {
21979 /*Flag must be set atomically as it is checked from incoming request
21980 functions*/
21981 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021983
21984 /*Nothing to do - so try to dequeue any pending request that may have
21985 occurred while we were trying to establish this*/
21986 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 {
21991 /*Flag must be set atomically as it is checked from incoming request
21992 functions*/
21993 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 wpalMutexRelease(&pWDICtx->wptMutex);
21999
22000 /*Notify that the Control Channel is closed */
22001 wpalEventSet(&pWDICtx->wctsActionEvent);
22002 }
22003
22004}/*WDI_NotifyMsgCTSCB*/
22005
22006
22007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 when it wishes to send up a packet received over the
22010 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022011
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022013
22014 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 pMsg: the packet
22016 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 wctsRxMsgCBData: the callback data of the user
22018
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022020
22021 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022022*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022023void
22024WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022025(
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 void* pMsg,
22028 wpt_uint32 uLen,
22029 void* wctsRxMsgCBData
22030)
22031{
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 tHalMsgHeader *pHalMsgHeader;
22033 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22036
22037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 ( uLen < sizeof(tHalMsgHeader)))
22042 {
22043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 }
22048
22049 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22050 {
22051 /* callback presumably occurred after close */
22052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022053 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 }
22056
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 context - so no serialization is necessary here
22059 ! - revisit this assumption */
22060
22061 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22062
22063 if ( uLen != pHalMsgHeader->msgLen )
22064 {
22065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22066 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022068 wpalWlanReload();
22069
Jeff Johnsone7245742012-09-05 17:12:55 -070022070 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 }
22072
22073 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22074
22075 /*The message itself starts after the header*/
22076 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22077 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22078 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22079 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22080
22081
22082 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22083 {
22084 /*Stop the timer as the response was received */
22085 /*!UT - check for potential race conditions between stop and response */
22086 wpalTimerStop(&pWDICtx->wptResponseTimer);
22087 }
22088 /* Check if we receive a response message which is not expected */
22089 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22090 {
22091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22092 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22093 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022094 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22096 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022097
22098 if (gWDICb.bEnableSSR == false)
22099 {
22100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22101 "SSR is not enabled on WDI timeout");
22102 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22103 return;
22104 }
22105 wpalWcnssResetIntr();
22106 /* if this timer fires, it means Riva did not receive the FIQ */
22107 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22108
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 return;
22110 }
22111
22112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22113 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22114
22115 /*Post response event to the state machine*/
22116 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22117
22118}/*WDI_RXMsgCTSCB*/
22119
22120
22121/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022123========================================================================*/
22124
22125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022128
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 @param pWDICtx - pointer to the control block
22130
22131 @return Result of the function call
22132*/
22133WPT_INLINE WDI_Status
22134WDI_CleanCB
22135(
22136 WDI_ControlBlockType* pWDICtx
22137)
22138{
22139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22140
22141 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022143
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22146 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22147
22148 WDI_ResetAssocSessions( pWDICtx );
22149
22150 return WDI_STATUS_SUCCESS;
22151}/*WDI_CleanCB*/
22152
22153
22154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022156
Jeff Johnsone7245742012-09-05 17:12:55 -070022157
22158 @param pWDICtx: pointer to the WLAN DAL context
22159 pEventData: pointer to the event information structure
22160
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 @see
22162 @return Result of the function call
22163*/
22164WPT_INLINE WDI_Status
22165WDI_ProcessRequest
22166(
22167 WDI_ControlBlockType* pWDICtx,
22168 WDI_EventInfoType* pEventData
22169)
22170{
22171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22172
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 already checked these pointers*/
22175
22176 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22177 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022178 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022180 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_getReqMsgString(pEventData->wdiRequest),
22182 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22183 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22184 }
22185 else
22186 {
22187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 pEventData->wdiRequest);
22190 return WDI_STATUS_E_NOT_IMPLEMENT;
22191 }
22192}/*WDI_ProcessRequest*/
22193
22194
22195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 prefixes it with a send message header
22199
22200 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 wdiReqType: type of the request being sent
22202 uBufferLen: message buffer len
22203 pMsgBuffer: resulting allocated buffer
22204 pusDataOffset: offset in the buffer where the caller
22205 can start copying its message data
22206 puBufferSize: the resulting buffer size (offset+buff
22207 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022208
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 @see
22210 @return Result of the function call
22211*/
22212WDI_Status
22213WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022214(
22215 WDI_ControlBlockType* pWDICtx,
22216 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022218 wpt_uint8** pMsgBuffer,
22219 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 wpt_uint16* pusBufferSize
22221)
22222{
22223 tHalMsgHeader halMsgHeader;
22224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22225
Jeff Johnsone7245742012-09-05 17:12:55 -070022226 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022227 again*/
22228
22229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022233 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22234 if ( NULL == *pMsgBuffer )
22235 {
22236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22237 "Unable to allocate message buffer for req %s (%d)",
22238 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 }
22243
22244 /*-------------------------------------------------------------------------
22245 Fill in the message header
22246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22248 /* Fill msgVersion */
22249#ifdef WLAN_FEATURE_11AC
22250 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022251 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 else
22253#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022254 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022255
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22257 *pusDataOffset = sizeof(halMsgHeader);
22258 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22259
22260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261}/*WDI_GetMessageBuffer*/
22262
22263
22264/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 the CB
22268
22269 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022271
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 usSendSize size of the buffer to be sent
22273 pRspCb: response callback - save in the WDI
22274 CB
22275 pUserData: user data associated with the
22276 callback
22277 wdiExpectedResponse: the code of the response that is
22278 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022279
Jeff Johnson295189b2012-06-20 16:38:30 -070022280 @see
22281 @return Result of the function call
22282*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022284WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022285(
22286 WDI_ControlBlockType* pWDICtx,
22287 wpt_uint8* pSendBuffer,
22288 wpt_uint32 usSendSize,
22289 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 void* pUserData,
22291 WDI_ResponseEnumType wdiExpectedResponse
22292)
22293{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022294 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022295 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22297
22298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 ------------------------------------------------------------------------*/
22301 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 pWDICtx->pfncRspCB = pRspCb;
22303 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022304
22305 /*-----------------------------------------------------------------------
22306 Call the CTS to send this message over - free message afterwards
22307 - notify transport failure
22308 Note: CTS is reponsible for freeing the message buffer.
22309 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022310 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22311 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22312 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022315 "Failed to send message with expected response %s (%d)"
22316 " over the bus - catastrophic failure",
22317 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22318 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022319
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022320 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22321 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022323 else
22324 {
22325 /* even when message was placed in CTS deferred Q, we will treat it
22326 success but log this info
22327 */
22328 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22329 {
22330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22331 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22332 "response %s (%d)",
22333 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22334 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022335 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022336 }
22337 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022338
Jeff Johnsond13512a2012-07-17 11:42:19 -070022339 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 if ( NULL != pWDICtx->wdiReqStatusCB )
22341 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022342 /*Inform originator whether request went through or not*/
22343 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22344 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 pWDICtx->wdiReqStatusCB = NULL;
22346 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022347 callback(wdiStatus, callbackContext);
22348
22349 /*For WDI requests which have registered a request callback,
22350 inform the WDA caller of the same via setting the return value
22351 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22352 end up repeating the functonality in the req callback for the
22353 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022354 if (wdiStatus != WDI_STATUS_SUCCESS)
22355 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022356 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022357 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 }
22359
Jeff Johnsond13512a2012-07-17 11:42:19 -070022360 if ( wdiStatus == WDI_STATUS_SUCCESS )
22361 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 /*Start timer for the expected response */
22363 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022364
22365 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022366 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022367 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022368 }
22369 else
22370 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022371 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022372 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22373 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022374
Jeff Johnsond13512a2012-07-17 11:42:19 -070022375 return wdiStatus;
22376
Jeff Johnson295189b2012-06-20 16:38:30 -070022377}/*WDI_SendMsg*/
22378
22379
22380
22381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 the bus using the control transport and saves some info
22384 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022385
22386 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 pSendBuffer: buffer to be sent
22388 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022389
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 @see
22391 @return Result of the function call
22392*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022393WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022394WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022395(
22396 WDI_ControlBlockType* pWDICtx,
22397 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 wpt_uint32 usSendSize
22399)
22400{
22401 wpt_uint32 uStatus ;
22402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22403
22404 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 Note: CTS is reponsible for freeing the message buffer.
22407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 (void*)pSendBuffer, usSendSize );
22410
22411 /*Inform Upper MAC about the outcome of the request*/
22412 if ( NULL != pWDICtx->wdiReqStatusCB )
22413 {
22414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22415 "Send indication status : %d", uStatus);
22416
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022417 /* even if CTS placed indication into its deferred Q, we treat it
22418 * as success and let CTS drain its queue as per smd interrupt to CTS
22419 */
22420 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 -070022421 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 }
22423
22424 /*If sending of the message failed - it is considered catastrophic and
22425 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022426 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22427 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22428
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 {
22430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022432
22433 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22434 return WDI_STATUS_E_FAILURE;
22435 }
22436
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022438}/*WDI_SendIndication*/
22439
22440
22441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 @brief WDI_DetectedDeviceError - called internally by DAL when
22443 it has detected a failure in the device
22444
22445 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 usErrorCode: error code detected by WDI or received
22447 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022448
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022451*/
22452void
22453WDI_DetectedDeviceError
22454(
22455 WDI_ControlBlockType* pWDICtx,
22456 wpt_uint16 usErrorCode
22457)
22458{
22459 WDI_LowLevelIndType wdiInd;
22460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22461
22462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22463 "Device Error detected code: %d - transitioning to stopped state",
22464 usErrorCode);
22465
Katya Nigamf02ad012014-05-05 16:12:49 +053022466 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 wpalMutexAcquire(&pWDICtx->wptMutex);
22469
22470 WDI_STATableStop(pWDICtx);
22471
22472 WDI_ResetAssocSessions(pWDICtx);
22473
22474 /*Set the expected state transition to stopped - because the device
22475 experienced a failure*/
22476 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22477
22478 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022482
22483 /*TO DO: - there should be an attempt to reset the device here*/
22484
22485 wpalMutexRelease(&pWDICtx->wptMutex);
22486
22487 /*------------------------------------------------------------------------
22488 Notify UMAC if a handler is registered
22489 ------------------------------------------------------------------------*/
22490 if (pWDICtx->wdiLowLevelIndCB)
22491 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22493 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494
22495 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22496 }
22497}/*WDI_DetectedDeviceError*/
22498
22499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022501 we started on send message has expire - this should
22502 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 reply - trigger catastrophic failure
22504 @param
22505
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022507
22508 @see
22509 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022510*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022511void
Jeff Johnson295189b2012-06-20 16:38:30 -070022512WDI_ResponseTimerCB
22513(
22514 void *pUserData
22515)
22516{
22517 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22519
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022520 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022525 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 }
22527
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022528 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022529 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022530 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022531
22532 /* If response timer is running at this time that means this timer
22533 * event is not for the last request but rather last-to-last request and
22534 * this timer event has come after we recevied respone for last-to-last
22535 * message
22536 */
22537 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22538 {
22539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22540 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022541 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022542 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22544 "uArchTimeStampTmrStart: %llu seconds, "
22545 "uArchTimeStampTmrExp: %llu seconds",
22546 pWDICtx->uArchTimeStampRspTmrStart,
22547 pWDICtx->uArchTimeStampRspTmrExp);
22548
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022549 return;
22550 }
22551
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022552 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 {
22554
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022557 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022559 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22560 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22562 "uArchTimeStampTmrStart: %llu seconds, "
22563 "uArchTimeStampTmrExp: %llu seconds",
22564 pWDICtx->uArchTimeStampRspTmrStart,
22565 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022566
22567 /* WDI timeout means Riva is not responding or SMD communication to Riva
22568 * is not happening. The only possible way to recover from this error
22569 * is to initiate SSR from APPS.
22570 * There is also an option to re-enable wifi, which will eventually
22571 * trigger SSR
22572 */
22573 if (gWDICb.bEnableSSR == false)
22574 {
22575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22576 "SSR is not enabled on WDI timeout");
22577 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22578 return;
22579 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022580#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022581 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022582 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022583 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022584 if(wpalIsSsrPanicOnFailure())
22585 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022586 } else {
22587 /* if this timer fires, it means Riva did not receive the FIQ */
22588 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022589 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022590#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022591 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22592 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022593#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 }
22595 else
22596 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022598 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022599 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022600 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22601 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22603 "uArchTimeStampTmrStart: %llu seconds, "
22604 "uArchTimeStampTmrExp: %llu seconds",
22605 pWDICtx->uArchTimeStampRspTmrStart,
22606 pWDICtx->uArchTimeStampRspTmrExp);
22607
Jeff Johnson295189b2012-06-20 16:38:30 -070022608 }
22609
22610 return;
22611
22612}/*WDI_ResponseTimerCB*/
22613
22614
22615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022617
Jeff Johnsone7245742012-09-05 17:12:55 -070022618
22619 @param pWDICtx: pointer to the WLAN DAL context
22620 pEventData: pointer to the event information structure
22621
Jeff Johnson295189b2012-06-20 16:38:30 -070022622 @see
22623 @return Result of the function call
22624*/
22625WPT_INLINE WDI_Status
22626WDI_ProcessResponse
22627(
22628 WDI_ControlBlockType* pWDICtx,
22629 WDI_EventInfoType* pEventData
22630)
22631{
22632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22633
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 already checked these pointers
22636 ! - revisit this assumption */
22637 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22638 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022641 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 WDI_getRespMsgString(pEventData->wdiResponse),
22643 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22644 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22645 }
22646 else
22647 {
22648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 pEventData->wdiResponse);
22651 return WDI_STATUS_E_NOT_IMPLEMENT;
22652 }
22653}/*WDI_ProcessResponse*/
22654
22655
22656/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022658=========================================================================*/
22659
22660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 @brief Utility function used by the DAL Core to help queue a
22662 request that cannot be processed right away.
22663 @param
22664
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 pWDICtx: - pointer to the WDI control block
22666 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 queued
22668
22669 @see
22670 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022671*/
22672WDI_Status
22673WDI_QueuePendingReq
22674(
22675 WDI_ControlBlockType* pWDICtx,
22676 WDI_EventInfoType* pEventData
22677)
22678{
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22683
22684 if ( NULL == pEventDataQueue )
22685 {
22686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 WDI_ASSERT(0);
22689 return WDI_STATUS_MEM_FAILURE;
22690 }
22691
22692 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22693 pEventDataQueue->pUserData = pEventData->pUserData;
22694 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22695 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697
22698 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22699 {
22700 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022701
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 if ( NULL == pEventInfo )
22703 {
22704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 WDI_ASSERT(0);
22707 wpalMemoryFree(pEventDataQueue);
22708 return WDI_STATUS_MEM_FAILURE;
22709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022710
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22712
22713 }
22714 pEventDataQueue->pEventData = pEventInfo;
22715
22716 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022718
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022719 if (eWLAN_PAL_STATUS_E_FAILURE ==
22720 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22721 {
22722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22723 "pEventDataQueue wpal_list_insert_back failed");
22724 WDI_ASSERT(0);
22725 wpalMemoryFree(pEventDataQueue);
22726 wpalMemoryFree(pEventInfo);
22727 return WDI_STATUS_MEM_FAILURE;
22728 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022729
22730 return WDI_STATUS_SUCCESS;
22731}/*WDI_QueuePendingReq*/
22732
22733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 @param
22737
22738 pMsg - pointer to the message
22739
22740 @see
22741 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022742*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022743void
Jeff Johnson295189b2012-06-20 16:38:30 -070022744WDI_PALCtrlMsgCB
22745(
22746 wpt_msg *pMsg
22747)
22748{
22749 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 WDI_ControlBlockType* pWDICtx = NULL;
22751 WDI_Status wdiStatus;
22752 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 void* pUserData;
22754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22755
22756 if (( NULL == pMsg )||
22757 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22758 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22759 {
22760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 }
22765
22766 /*Transition back to the state that we had before serialization
22767 - serialization transitions us to BUSY to stop any incomming requests
22768 ! TO DO L: possible race condition here if a request comes in between the
22769 state transition and the post function*/
22770
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022772
22773 /*-----------------------------------------------------------------------
22774 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 -----------------------------------------------------------------------*/
22777 switch ( pEventData->wdiRequest )
22778 {
22779
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22782 break;
22783
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WDI_NV_DOWNLOAD_REQ:
22785 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22786 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22787 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22788 {
22789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022790 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22792 }
22793 else
22794 {
22795 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22796 }
22797
22798 break;
22799
22800 default:
22801 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22802 break;
22803 }/*switch ( pEventData->wdiRequest )*/
22804
22805 if ( WDI_STATUS_SUCCESS != wdiStatus )
22806 {
22807 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22808
22809 if ( NULL != pfnReqStatusCB )
22810 {
22811 /*Fail the request*/
22812 pfnReqStatusCB( wdiStatus, pUserData);
22813 }
22814 }
22815
22816 /* Free data - that was allocated when queueing*/
22817 if( pEventData != NULL )
22818 {
22819 if( pEventData->pEventData != NULL )
22820 {
22821 wpalMemoryFree(pEventData->pEventData);
22822 }
22823 wpalMemoryFree(pEventData);
22824 }
22825
22826 if( pMsg != NULL )
22827 {
22828 wpalMemoryFree(pMsg);
22829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022830
Jeff Johnson295189b2012-06-20 16:38:30 -070022831}/*WDI_PALCtrlMsgCB*/
22832
22833/**
22834 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 and schedule for execution a pending request
22836 @param
22837
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 pWDICtx: - pointer to the WDI control block
22839 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 queued
22841
22842 @see
22843 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022844*/
22845WDI_Status
22846WDI_DequeuePendingReq
22847(
22848 WDI_ControlBlockType* pWDICtx
22849)
22850{
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022853 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22855
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022857
22858 if ( NULL == pNode )
22859 {
22860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 return WDI_STATUS_SUCCESS;
22863 }
22864
22865 /*The node actually points to the 1st element inside the Event Data struct -
22866 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022868
22869 /*Serialize processing in the control thread
22870 !TO DO: - check to see if these are all the messages params that need
22871 to be filled in*/
22872 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22873
22874 if ( NULL == palMsg )
22875 {
22876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022882 palMsg->callback = WDI_PALCtrlMsgCB;
22883 palMsg->ptr = pEventData;
22884
22885 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022887 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022888
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 /*Transition back to BUSY as we need to handle a queued request*/
22890 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022891
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22893
22894 return WDI_STATUS_PENDING;
22895}/*WDI_DequeuePendingReq*/
22896
22897
22898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022899 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 away.- The assoc requests will be queued by BSSID
22902 @param
22903
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 pWDICtx: - pointer to the WDI control block
22905 pEventData: pointer to the evnt info that needs to be queued
22906 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022907
22908 @see
22909 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022910*/
22911WDI_Status
22912WDI_QueueNewAssocRequest
22913(
22914 WDI_ControlBlockType* pWDICtx,
22915 WDI_EventInfoType* pEventData,
22916 wpt_macAddr macBSSID
22917)
22918{
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 wpt_uint8 i;
22920 WDI_BSSSessionType* pSession = NULL;
22921 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 void* pEventInfo;
22924 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022926
Jeff Johnsone7245742012-09-05 17:12:55 -070022927
22928 /*------------------------------------------------------------------------
22929 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 ------------------------------------------------------------------------*/
22931 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22932 {
22933 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22934 {
22935 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 pSession = &pWDICtx->aBSSSessions[i];
22937 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 }
22939 }
22940
22941 if ( i >= WDI_MAX_BSS_SESSIONS )
22942 {
22943 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022946
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 /*------------------------------------------------------------------------
22948 Fill in the BSSID for this session and set the usage flag
22949 ------------------------------------------------------------------------*/
22950 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022951 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022952
22953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022954 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022955 ------------------------------------------------------------------------*/
22956 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22957 if ( NULL == pEventDataQueue )
22958 {
22959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022960 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022961 WDI_ASSERT(0);
22962 return WDI_STATUS_MEM_FAILURE;
22963 }
22964
22965 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22966 if ( NULL == pSessionIdElement )
22967 {
22968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022969 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 WDI_ASSERT(0);
22971 wpalMemoryFree(pEventDataQueue);
22972 return WDI_STATUS_MEM_FAILURE;
22973 }
22974
22975 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22976 if ( NULL == pEventInfo )
22977 {
22978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022979 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 WDI_ASSERT(0);
22981 wpalMemoryFree(pSessionIdElement);
22982 wpalMemoryFree(pEventDataQueue);
22983 return WDI_STATUS_MEM_FAILURE;
22984 }
22985
22986 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22987 pEventDataQueue->pUserData = pEventData->pUserData;
22988 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22989 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022991
22992 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22993 pEventDataQueue->pEventData = pEventInfo;
22994
22995 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997
22998 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023001 if (eWLAN_PAL_STATUS_E_FAILURE ==
23002 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23003 {
23004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23005 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23006 WDI_ASSERT(0);
23007 wpalMemoryFree(pSessionIdElement);
23008 wpalMemoryFree(pEventDataQueue);
23009 wpalMemoryFree(pEventInfo);
23010 return WDI_STATUS_MEM_FAILURE;
23011 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023012
23013 /*We need to maintain a separate list that keeps track of the order in which
23014 the new assoc requests are being queued such that we can start processing
23015 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 pSessionIdElement->ucIndex = i;
23017 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023018
23019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23020 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023021 if (eWLAN_PAL_STATUS_E_FAILURE ==
23022 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23023 {
23024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23025 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23026 WDI_ASSERT(0);
23027 wpalMemoryFree(pSessionIdElement);
23028 wpalMemoryFree(pEventDataQueue);
23029 wpalMemoryFree(pEventInfo);
23030 return WDI_STATUS_MEM_FAILURE;
23031 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023032
23033 /*Return pending as this is what the status of the request is since it has
23034 been queued*/
23035 return WDI_STATUS_PENDING;
23036}/*WDI_QueueNewAssocRequest*/
23037
23038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023041 away.- The assoc requests will be queued by BSSID
23042 @param
23043
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 pWDICtx: - pointer to the WDI control block
23045 pSession: - session in which to queue
23046 pEventData: pointer to the event info that needs to be
23047 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023048
23049 @see
23050 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023051*/
23052WDI_Status
23053WDI_QueueAssocRequest
23054(
23055 WDI_ControlBlockType* pWDICtx,
23056 WDI_BSSSessionType* pSession,
23057 WDI_EventInfoType* pEventData
23058)
23059{
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023062 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023064
23065 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 Sanity check
23067 ------------------------------------------------------------------------*/
23068 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23069 {
23070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023072
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 }
23075
23076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 ------------------------------------------------------------------------*/
23079 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23080 if ( NULL == pEventDataQueue )
23081 {
23082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023083 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 WDI_ASSERT(0);
23085 return WDI_STATUS_MEM_FAILURE;
23086 }
23087
23088 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23089 if ( NULL == pEventInfo )
23090 {
23091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23092 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023093 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 WDI_ASSERT(0);
23095 wpalMemoryFree(pEventDataQueue);
23096 return WDI_STATUS_MEM_FAILURE;
23097 }
23098
23099 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23100 pEventDataQueue->pUserData = pEventData->pUserData;
23101 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23102 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 pEventDataQueue->pEventData = pEventInfo;
23105
23106 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23107
23108 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023110
23111 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023113
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023114 if (eWLAN_PAL_STATUS_E_FAILURE ==
23115 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23116 {
23117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23118 "%s: Cannot allocate memory for queueing event data info",
23119 __func__);
23120 WDI_ASSERT(0);
23121 wpalMemoryFree(pEventDataQueue);
23122 wpalMemoryFree(pEventInfo);
23123 return WDI_STATUS_MEM_FAILURE;
23124 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023125
23126 /*The result of this operation is pending because the request has been
23127 queued and it will be processed at a later moment in time */
23128 return WDI_STATUS_PENDING;
23129}/*WDI_QueueAssocRequest*/
23130
23131/**
23132 @brief Utility function used by the DAL Core to help dequeue
23133 an association request that was pending
23134 The request will be queued up in front of the main
23135 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023136 @param
23137
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023139
23140
23141 @see
23142 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023143*/
23144WDI_Status
23145WDI_DequeueAssocRequest
23146(
23147 WDI_ControlBlockType* pWDICtx
23148)
23149{
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 wpt_list_node* pNode = NULL;
23151 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 WDI_BSSSessionType* pSession;
23153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023154
23155 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 Sanity check
23157 ------------------------------------------------------------------------*/
23158 if ( NULL == pWDICtx )
23159 {
23160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023162
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 }
23165
23166 /*------------------------------------------------------------------------
23167 An association has been completed => a new association can occur
23168 Check to see if there are any pending associations ->
23169 If so , transfer all the pending requests into the busy queue for
23170 processing
23171 These requests have arrived prior to the requests in the busy queue
23172 (bc they needed to be processed in order to be placed in this queue)
23173 => they will be placed at the front of the busy queue
23174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023176
23177 if ( NULL == pNode )
23178 {
23179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023180 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023181 return WDI_STATUS_SUCCESS;
23182 }
23183
23184 /*The node actually points to the 1st element inside the Session Id struct -
23185 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023187
23188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23189 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23190
23191 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23192 {
23193 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023194
Jeff Johnson295189b2012-06-20 16:38:30 -070023195 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 the front of the main waiting queue for subsequent execution*/
23197 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 while ( NULL != pNode )
23199 {
23200 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23202 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023203 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 }
23206 else
23207 {
23208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 WPAL_ASSERT(0);
23211 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023214
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23216 wpalMemoryFree(pSessionIdElement);
23217 return WDI_STATUS_SUCCESS;
23218}/*WDI_DequeueAssocRequest*/
23219
23220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 pending requests - all req cb will be called with
23223 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 @param
23225
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023227
23228 @see
23229 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023230*/
23231WDI_Status
23232WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023233(
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 WDI_ControlBlockType* pWDICtx
23235)
23236{
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 void* pUserData;
23241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23242
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023244
23245 /*------------------------------------------------------------------------
23246 Go through all the requests and fail them - this will only be called
23247 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 ------------------------------------------------------------------------*/
23250 while( pNode )
23251 {
23252 /*The node actually points to the 1st element inside the Event Data struct -
23253 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 pEventDataQueue = (WDI_EventInfoType*)pNode;
23255
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23257 if ( NULL != pfnReqStatusCB )
23258 {
23259 /*Fail the request*/
23260 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23261 }
23262 /* Free data - that was allocated when queueing */
23263 if ( pEventDataQueue->pEventData != NULL )
23264 {
23265 wpalMemoryFree(pEventDataQueue->pEventData);
23266 }
23267 wpalMemoryFree(pEventDataQueue);
23268
23269 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23270 {
23271 break;
23272 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 }
23274
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 return WDI_STATUS_SUCCESS;
23276}/*WDI_ClearPendingRequests*/
23277
23278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 @brief Helper routine used to init the BSS Sessions in the WDI control block
23280
23281
23282 @param pWDICtx: pointer to the WLAN DAL context
23283
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 @see
23285*/
23286void
23287WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023288(
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 WDI_ControlBlockType* pWDICtx
23290)
23291{
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23294
23295 /*-------------------------------------------------------------------------
23296 No Sanity check
23297 -------------------------------------------------------------------------*/
23298 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23299 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23302 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23303 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23304 }
23305}/*WDI_ResetAssocSessions*/
23306
23307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 @brief Helper routine used to find a session based on the BSSID
23309
23310
23311 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 pSession: pointer to the session (if found)
23314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023317*/
23318wpt_uint8
23319WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023320(
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 WDI_ControlBlockType* pWDICtx,
23322 wpt_macAddr macBSSID,
23323 WDI_BSSSessionType** ppSession
23324)
23325{
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23328
23329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 -------------------------------------------------------------------------*/
23332 if ( NULL == ppSession )
23333 {
23334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023335 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023336 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 }
23338
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023340
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 /*------------------------------------------------------------------------
23342 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 ------------------------------------------------------------------------*/
23344 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23345 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023346 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23347 (eWLAN_PAL_TRUE ==
23348 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23349 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 {
23351 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 return i;
23354 }
23355 }
23356
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023358}/*WDI_FindAssocSession*/
23359
23360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 @brief Helper routine used to find a session based on the BSSID
23362
23363
23364 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 ucBSSIdx: BSS Index of the session
23366 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023367
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023370*/
23371wpt_uint8
23372WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023373(
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 WDI_ControlBlockType* pWDICtx,
23375 wpt_uint16 ucBSSIdx,
23376 WDI_BSSSessionType** ppSession
23377)
23378{
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23381
23382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 -------------------------------------------------------------------------*/
23385 if ( NULL == ppSession )
23386 {
23387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023388 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 }
23391
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023393
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 /*------------------------------------------------------------------------
23395 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 ------------------------------------------------------------------------*/
23397 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23398 {
23399 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23400 {
23401 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 return i;
23404 }
23405 }
23406
Jeff Johnsone7245742012-09-05 17:12:55 -070023407 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023408}/*WDI_FindAssocSessionByBSSIdx*/
23409
23410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023411 @brief Helper routine used to find a session based on the BSSID
23412
23413
23414 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 ucBSSIdx: BSS Index of the session
23416 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023417
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023420*/
23421wpt_uint8
23422WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023423(
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 WDI_ControlBlockType* pWDICtx,
23425 wpt_uint16 usIdx,
23426 WDI_BSSSessionType** ppSession
23427)
23428{
23429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23430
23431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 -------------------------------------------------------------------------*/
23434 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23435 {
23436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023437 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 }
23440
23441 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023443
23444 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023445
Jeff Johnson295189b2012-06-20 16:38:30 -070023446}/*WDI_FindAssocSessionByBSSIdx*/
23447
23448/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023451
23452
23453 @param pWDICtx: pointer to the WLAN DAL context
23454 pSession: pointer to the session (if found)
23455
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023458*/
23459wpt_uint8
23460WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023461(
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 WDI_ControlBlockType* pWDICtx,
23463 WDI_BSSSessionType** ppSession
23464)
23465{
Jeff Johnsone7245742012-09-05 17:12:55 -070023466 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 -------------------------------------------------------------------------*/
23471 if ( NULL == ppSession )
23472 {
23473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023474 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 }
23477
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023479
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 /*------------------------------------------------------------------------
23481 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 ------------------------------------------------------------------------*/
23483 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23484 {
23485 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23486 {
23487 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 return i;
23490 }
23491 }
23492
Jeff Johnsone7245742012-09-05 17:12:55 -070023493 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023494}/*WDI_FindEmptySession*/
23495
23496
23497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023500
23501
23502 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023503 macBSSID: pointer to BSSID. If NULL, get all the session.
23504 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23505 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23506 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023507 @see
23508 @return Number of sessions in use
23509*/
23510wpt_uint8
23511WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023512(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023513 WDI_ControlBlockType* pWDICtx,
23514 wpt_macAddr macBSSID,
23515 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023516)
23517{
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023520
23521 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 Count all sessions in use
23523 ------------------------------------------------------------------------*/
23524 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23525 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023526 if ( macBSSID && skipBSSID &&
23527 (eWLAN_PAL_TRUE ==
23528 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23529 WDI_MAC_ADDR_LEN)))
23530 {
23531 continue;
23532 }
23533 else if ( pWDICtx->aBSSSessions[i].bInUse )
23534 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023535 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023536 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 }
23538
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023540}/*WDI_GetActiveSessionsCount*/
23541
23542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023545
23546
23547 @param pWDICtx: pointer to the WLAN DAL context
23548 pSession: pointer to the session (if found)
23549
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023552*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023553void
Jeff Johnson295189b2012-06-20 16:38:30 -070023554WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023555(
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 WDI_ControlBlockType* pWDICtx,
23557 WDI_BSSSessionType* ppSession
23558)
23559{
23560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 -------------------------------------------------------------------------*/
23563 if ( NULL == ppSession )
23564 {
23565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023566 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 }
23569
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 /*------------------------------------------------------------------------
23571 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 ------------------------------------------------------------------------*/
23573 wpal_list_destroy(&ppSession->wptPendingQueue);
23574 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23576 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23578 wpal_list_init(&ppSession->wptPendingQueue);
23579
23580}/*WDI_DeleteSession*/
23581
23582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 @param
23586
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 WDI_AddStaParams: - pointer to the WDI Add STA params
23588 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023589
23590 @see
23591 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023592*/
23593void
23594WDI_AddBcastSTAtoSTATable
23595(
23596 WDI_ControlBlockType* pWDICtx,
23597 WDI_AddStaParams * staParams,
23598 wpt_uint16 usBcastStaIdx
23599)
23600{
23601 WDI_AddStaParams wdiAddSTAParam = {0};
23602 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23604
23605 /*---------------------------------------------------------------------
23606 Sanity check
23607 ---------------------------------------------------------------------*/
23608 if ( NULL == staParams )
23609 {
23610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023612
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 }
23615
23616 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23617 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23618 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23619 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23620 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23621 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23622 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23623 WDI_MAC_ADDR_LEN );
23624 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23625 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23626 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23627 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23628 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23629 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23630 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023631
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23633}
23634
23635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 @brief NV blob will be divided into fragments of size 4kb and
23637 Sent to HAL
23638
23639 @param pWDICtx: pointer to the WLAN DAL context
23640 pEventData: pointer to the event information structure
23641
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 @see
23643 @return Result of the function call
23644 */
23645
23646WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023647(
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 WDI_ControlBlockType* pWDICtx,
23649 WDI_EventInfoType* pEventData
23650)
23651{
23652
23653 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23654 wpt_uint8* pSendBuffer = NULL;
23655 wpt_uint16 usDataOffset = 0;
23656 wpt_uint16 usSendSize = 0;
23657 wpt_uint16 usCurrentFragmentSize =0;
23658 wpt_uint8* pSrcBuffer = NULL;
23659 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23660 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23661
23662 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23663 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23664 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23665
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23668
23669 /* Update the current Fragment Number */
23670 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23671
23672 /*Update the HAL REQ structure */
23673 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23674 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23675 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23676
23677 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 image will be sent to HAL*/
23680
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23687 usCurrentFragmentSize = FRAGMENT_SIZE;
23688
23689 /*Update the HAL REQ structure */
23690 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23691 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23692
23693 }
23694 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023695 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 usCurrentFragmentSize = FRAGMENT_SIZE;
23697
23698 /*Update the HAL REQ structure */
23699 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23700 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23701 }
23702
23703 /*-----------------------------------------------------------------------
23704 Get message buffer
23705 -----------------------------------------------------------------------*/
23706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23707 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23708 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23711 {
23712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023713 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 pEventData, pwdiNvDownloadReqParams);
23715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 }
23718
23719 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23722
23723 /* Appending the NV image fragment */
23724 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23725 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23726 usCurrentFragmentSize);
23727
23728 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23732 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 WDI_NV_DOWNLOAD_RESP);
23734
23735}
Jeff Johnsone7245742012-09-05 17:12:55 -070023736/*============================================================================
23737 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 ============================================================================*/
23739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 @brief Helper routine used to find a session based on the BSSID
23741 @param pContext: pointer to the WLAN DAL context
23742 @param pDPContext: pointer to the Datapath context
23743
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023746*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023747WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023748WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23749{
23750 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23751
23752 pCB->pDPContext = pDPContext;
23753 return;
23754}
23755
23756/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 @brief Helper routine used to find a session based on the BSSID
23758
23759
23760 @param pContext: pointer to the WLAN DAL context
23761
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 @see
23763 @return pointer to Datapath context
23764*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023765WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023766WDI_DS_GetDatapathContext (void *pContext)
23767{
23768 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23769 return pCB->pDPContext;
23770}
23771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023772 @brief Helper routine used to find a session based on the BSSID
23773
23774
23775 @param pContext: pointer to the WLAN DAL context
23776 @param pDTDriverContext: pointer to the Transport Driver context
23777
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 @see
23779 @return void
23780*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023781WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023782WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23783{
23784 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23785
23786 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023788}
23789
23790/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023791 @brief Helper routine used to find a session based on the BSSID
23792
23793
23794 @param pWDICtx: pointer to the WLAN DAL context
23795
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023797 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023798*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023799WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023800WDT_GetTransportDriverContext (void *pContext)
23801{
23802 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023804}
23805
Jeff Johnsone7245742012-09-05 17:12:55 -070023806/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 Helper inline converters
23808 ============================================================================*/
23809/*Convert WDI driver type into HAL driver type*/
23810WPT_STATIC WPT_INLINE WDI_Status
23811WDI_HAL_2_WDI_STATUS
23812(
23813 eHalStatus halStatus
23814)
23815{
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 the chances of getting inlined*/
23818 switch( halStatus )
23819 {
23820 case eHAL_STATUS_SUCCESS:
23821 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23822 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23823 return WDI_STATUS_SUCCESS;
23824 case eHAL_STATUS_FAILURE:
23825 return WDI_STATUS_E_FAILURE;
23826 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 return WDI_STATUS_MEM_FAILURE;
23828 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 default:
23831 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23832 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023833
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023835}/*WDI_HAL_2_WDI_STATUS*/
23836
23837/*Convert WDI request type into HAL request type*/
23838WPT_STATIC WPT_INLINE tHalHostMsgType
23839WDI_2_HAL_REQ_TYPE
23840(
23841 WDI_RequestEnumType wdiReqType
23842)
23843{
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 the chances of getting inlined*/
23846 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023853 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023854 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023857 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023871 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 return WLAN_HAL_RMV_STAKEY_REQ;
23883 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 case WDI_DEL_BA_REQ:
23892 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023893#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 case WDI_TSM_STATS_REQ:
23895 return WLAN_HAL_TSM_STATS_REQ;
23896#endif
23897 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023899 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 case WDI_ADD_BA_SESSION_REQ:
23908 return WLAN_HAL_ADD_BA_SESSION_REQ;
23909 case WDI_TRIGGER_BA_REQ:
23910 return WLAN_HAL_TRIGGER_BA_REQ;
23911 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23916 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23917 case WDI_SET_MAX_TX_POWER_REQ:
23918 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023919 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23920 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023921 case WDI_SET_TX_POWER_REQ:
23922 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023923 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23924 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023925#ifdef FEATURE_WLAN_TDLS
23926 case WDI_TDLS_LINK_ESTABLISH_REQ:
23927 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023928 case WDI_TDLS_CHAN_SWITCH_REQ:
23929 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023930#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023932 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023933 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023934 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023935 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 case WDI_REM_BEACON_FILTER_REQ:
23952 return WLAN_HAL_REM_BCN_FILTER_REQ;
23953 case WDI_SET_RSSI_THRESHOLDS_REQ:
23954 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23955 case WDI_HOST_OFFLOAD_REQ:
23956 return WLAN_HAL_HOST_OFFLOAD_REQ;
23957 case WDI_WOWL_ADD_BC_PTRN_REQ:
23958 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23959 case WDI_WOWL_DEL_BC_PTRN_REQ:
23960 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23961 case WDI_WOWL_ENTER_REQ:
23962 return WLAN_HAL_ENTER_WOWL_REQ;
23963 case WDI_WOWL_EXIT_REQ:
23964 return WLAN_HAL_EXIT_WOWL_REQ;
23965 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23966 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23967 case WDI_NV_DOWNLOAD_REQ:
23968 return WLAN_HAL_DOWNLOAD_NV_REQ;
23969 case WDI_FLUSH_AC_REQ:
23970 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23971 case WDI_BTAMP_EVENT_REQ:
23972 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23973#ifdef WLAN_FEATURE_VOWIFI_11R
23974 case WDI_AGGR_ADD_TS_REQ:
23975 return WLAN_HAL_AGGR_ADD_TS_REQ;
23976#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 case WDI_FTM_CMD_REQ:
23978 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 case WDI_ADD_STA_SELF_REQ:
23980 return WLAN_HAL_ADD_STA_SELF_REQ;
23981 case WDI_DEL_STA_SELF_REQ:
23982 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023983#ifdef FEATURE_OEM_DATA_SUPPORT
23984 case WDI_START_OEM_DATA_REQ:
23985 return WLAN_HAL_START_OEM_DATA_REQ;
23986#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 case WDI_HOST_RESUME_REQ:
23988 return WLAN_HAL_HOST_RESUME_REQ;
23989 case WDI_HOST_SUSPEND_IND:
23990 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023991 case WDI_TRAFFIC_STATS_IND:
23992 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023993#ifdef WLAN_FEATURE_11W
23994 case WDI_EXCLUDE_UNENCRYPTED_IND:
23995 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23996#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 case WDI_KEEP_ALIVE_REQ:
23998 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023999#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024000 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24001 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024002#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024003#ifdef FEATURE_WLAN_SCAN_PNO
24004 case WDI_SET_PREF_NETWORK_REQ:
24005 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24006 case WDI_SET_RSSI_FILTER_REQ:
24007 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24008 case WDI_UPDATE_SCAN_PARAMS_REQ:
24009 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24010#endif // FEATURE_WLAN_SCAN_PNO
24011 case WDI_SET_TX_PER_TRACKING_REQ:
24012 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24013#ifdef WLAN_FEATURE_PACKET_FILTERING
24014 case WDI_8023_MULTICAST_LIST_REQ:
24015 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24016 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24019 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24020 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24021 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24022#endif // WLAN_FEATURE_PACKET_FILTERING
24023 case WDI_HAL_DUMP_CMD_REQ:
24024 return WLAN_HAL_DUMP_COMMAND_REQ;
24025#ifdef WLAN_FEATURE_GTK_OFFLOAD
24026 case WDI_GTK_OFFLOAD_REQ:
24027 return WLAN_HAL_GTK_OFFLOAD_REQ;
24028 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24029 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24030#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24031
24032 case WDI_INIT_SCAN_CON_REQ:
24033 return WLAN_HAL_INIT_SCAN_CON_REQ;
24034 case WDI_SET_POWER_PARAMS_REQ:
24035 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24036 case WDI_SET_TM_LEVEL_REQ:
24037 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24038 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24039 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024040#ifdef WLAN_FEATURE_11AC
24041 case WDI_UPDATE_VHT_OP_MODE_REQ:
24042 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24043#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024044 case WDI_GET_ROAM_RSSI_REQ:
24045 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024046 case WDI_DHCP_START_IND:
24047 return WLAN_HAL_DHCP_START_IND;
24048 case WDI_DHCP_STOP_IND:
24049 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024050#ifdef FEATURE_WLAN_LPHB
24051 case WDI_LPHB_CFG_REQ:
24052 return WLAN_HAL_LPHB_CFG_REQ;
24053#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024054 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24055 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24056 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24057 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24058
Rajeev79dbe4c2013-10-05 11:03:42 +053024059#ifdef FEATURE_WLAN_BATCH_SCAN
24060 case WDI_SET_BATCH_SCAN_REQ:
24061 return WLAN_HAL_BATCHSCAN_SET_REQ;
24062 case WDI_STOP_BATCH_SCAN_IND:
24063 return WLAN_HAL_BATCHSCAN_STOP_IND;
24064 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24065 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24066#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024067 case WDI_RATE_UPDATE_IND:
24068 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024069 case WDI_START_HT40_OBSS_SCAN_IND:
24070 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24071 case WDI_STOP_HT40_OBSS_SCAN_IND:
24072 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024073 case WDI_UPDATE_CHAN_REQ:
24074 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024075 case WDI_CH_SWITCH_REQ_V1:
24076 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024077 case WDI_GET_BCN_MISS_RATE_REQ:
24078 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024079
24080#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24081 case WDI_LL_STATS_SET_REQ:
24082 return WLAN_HAL_LL_SET_STATS_REQ;
24083 case WDI_LL_STATS_GET_REQ:
24084 return WLAN_HAL_LL_GET_STATS_REQ;
24085 case WDI_LL_STATS_CLEAR_REQ:
24086 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24087#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024088#ifdef WLAN_FEATURE_EXTSCAN
24089 case WDI_EXTSCAN_START_REQ:
24090 return WLAN_HAL_EXT_SCAN_START_REQ;
24091 case WDI_EXTSCAN_STOP_REQ:
24092 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24093 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24094 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24095 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24096 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24097 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24098 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24099 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24100 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24101 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24102 return WLAN_HAL_SIG_RSSI_SET_REQ;
24103 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24104 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24105#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024106 case WDI_SPOOF_MAC_ADDR_REQ:
24107 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024108 case WDI_GET_FW_STATS_REQ:
24109 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024110 case WDI_ENCRYPT_MSG_REQ:
24111 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024112 case WDI_MGMT_LOGGING_INIT_REQ:
24113 return WLAN_HAL_MGMT_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024114 case WDI_GET_FRAME_LOG_REQ:
24115 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024116 case WDI_NAN_REQUEST:
24117 return WLAN_HAL_NAN_REQ;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024118
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024122
Jeff Johnson295189b2012-06-20 16:38:30 -070024123}/*WDI_2_HAL_REQ_TYPE*/
24124
24125/*Convert WDI response type into HAL response type*/
24126WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24127HAL_2_WDI_RSP_TYPE
24128(
24129 tHalHostMsgType halMsg
24130)
24131{
Jeff Johnsone7245742012-09-05 17:12:55 -070024132 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 the chances of getting inlined*/
24134 switch( halMsg )
24135 {
24136 case WLAN_HAL_START_RSP:
24137 return WDI_START_RESP;
24138 case WLAN_HAL_STOP_RSP:
24139 return WDI_STOP_RESP;
24140 case WLAN_HAL_INIT_SCAN_RSP:
24141 return WDI_INIT_SCAN_RESP;
24142 case WLAN_HAL_START_SCAN_RSP:
24143 return WDI_START_SCAN_RESP;
24144 case WLAN_HAL_END_SCAN_RSP:
24145 return WDI_END_SCAN_RESP;
24146 case WLAN_HAL_FINISH_SCAN_RSP:
24147 return WDI_FINISH_SCAN_RESP;
24148 case WLAN_HAL_CONFIG_STA_RSP:
24149 return WDI_CONFIG_STA_RESP;
24150 case WLAN_HAL_DELETE_STA_RSP:
24151 return WDI_DEL_STA_RESP;
24152 case WLAN_HAL_CONFIG_BSS_RSP:
24153 return WDI_CONFIG_BSS_RESP;
24154 case WLAN_HAL_DELETE_BSS_RSP:
24155 return WDI_DEL_BSS_RESP;
24156 case WLAN_HAL_JOIN_RSP:
24157 return WDI_JOIN_RESP;
24158 case WLAN_HAL_POST_ASSOC_RSP:
24159 return WDI_POST_ASSOC_RESP;
24160 case WLAN_HAL_SET_BSSKEY_RSP:
24161 return WDI_SET_BSS_KEY_RESP;
24162 case WLAN_HAL_SET_STAKEY_RSP:
24163 return WDI_SET_STA_KEY_RESP;
24164 case WLAN_HAL_RMV_BSSKEY_RSP:
24165 return WDI_RMV_BSS_KEY_RESP;
24166 case WLAN_HAL_RMV_STAKEY_RSP:
24167 return WDI_RMV_STA_KEY_RESP;
24168 case WLAN_HAL_SET_BCASTKEY_RSP:
24169 return WDI_SET_STA_BCAST_KEY_RESP;
24170 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24171 // return WDI_RMV_STA_BCAST_KEY_RESP;
24172 case WLAN_HAL_ADD_TS_RSP:
24173 return WDI_ADD_TS_RESP;
24174 case WLAN_HAL_DEL_TS_RSP:
24175 return WDI_DEL_TS_RESP;
24176 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24177 return WDI_UPD_EDCA_PRMS_RESP;
24178 case WLAN_HAL_ADD_BA_RSP:
24179 return WDI_ADD_BA_RESP;
24180 case WLAN_HAL_DEL_BA_RSP:
24181 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024182#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 case WLAN_HAL_TSM_STATS_RSP:
24184 return WDI_TSM_STATS_RESP;
24185#endif
24186 case WLAN_HAL_CH_SWITCH_RSP:
24187 return WDI_CH_SWITCH_RESP;
24188 case WLAN_HAL_SET_LINK_ST_RSP:
24189 return WDI_SET_LINK_ST_RESP;
24190 case WLAN_HAL_GET_STATS_RSP:
24191 return WDI_GET_STATS_RESP;
24192 case WLAN_HAL_UPDATE_CFG_RSP:
24193 return WDI_UPDATE_CFG_RESP;
24194 case WLAN_HAL_ADD_BA_SESSION_RSP:
24195 return WDI_ADD_BA_SESSION_RESP;
24196 case WLAN_HAL_TRIGGER_BA_RSP:
24197 return WDI_TRIGGER_BA_RESP;
24198 case WLAN_HAL_UPDATE_BEACON_RSP:
24199 return WDI_UPD_BCON_PRMS_RESP;
24200 case WLAN_HAL_SEND_BEACON_RSP:
24201 return WDI_SND_BCON_RESP;
24202 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24203 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24204 /*Indications*/
24205 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24206 return WDI_HAL_RSSI_NOTIFICATION_IND;
24207 case WLAN_HAL_MISSED_BEACON_IND:
24208 return WDI_HAL_MISSED_BEACON_IND;
24209 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24210 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24211 case WLAN_HAL_MIC_FAILURE_IND:
24212 return WDI_HAL_MIC_FAILURE_IND;
24213 case WLAN_HAL_FATAL_ERROR_IND:
24214 return WDI_HAL_FATAL_ERROR_IND;
24215 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24216 return WDI_HAL_DEL_STA_IND;
24217 case WLAN_HAL_COEX_IND:
24218 return WDI_HAL_COEX_IND;
24219 case WLAN_HAL_OTA_TX_COMPL_IND:
24220 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 case WLAN_HAL_P2P_NOA_ATTR_IND:
24222 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024223 case WLAN_HAL_P2P_NOA_START_IND:
24224 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024225 case WLAN_HAL_DEL_BA_IND:
24226 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 case WLAN_HAL_TX_PER_HIT_IND:
24228 return WDI_HAL_TX_PER_HIT_IND;
24229 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24230 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024231 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24232 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024233 case WLAN_HAL_SET_TX_POWER_RSP:
24234 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 case WLAN_HAL_SET_P2P_GONOA_RSP:
24236 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024237#ifdef FEATURE_WLAN_TDLS
24238 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24239 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024240 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24241 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024242 case WLAN_HAL_TDLS_IND:
24243 return WDI_HAL_TDLS_IND;
24244#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024248 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024251 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024258 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024260 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24264 return WDI_SET_BEACON_FILTER_RESP;
24265 case WLAN_HAL_REM_BCN_FILTER_RSP:
24266 return WDI_REM_BEACON_FILTER_RESP;
24267 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24268 return WDI_SET_RSSI_THRESHOLDS_RESP;
24269 case WLAN_HAL_HOST_OFFLOAD_RSP:
24270 return WDI_HOST_OFFLOAD_RESP;
24271 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24272 return WDI_WOWL_ADD_BC_PTRN_RESP;
24273 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24274 return WDI_WOWL_DEL_BC_PTRN_RESP;
24275 case WLAN_HAL_ENTER_WOWL_RSP:
24276 return WDI_WOWL_ENTER_RESP;
24277 case WLAN_HAL_EXIT_WOWL_RSP:
24278 return WDI_WOWL_EXIT_RESP;
24279 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24280 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24281 case WLAN_HAL_DOWNLOAD_NV_RSP:
24282 return WDI_NV_DOWNLOAD_RESP;
24283 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24284 return WDI_FLUSH_AC_RESP;
24285 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24286 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 case WLAN_HAL_PROCESS_PTT_RSP:
24288 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 case WLAN_HAL_ADD_STA_SELF_RSP:
24290 return WDI_ADD_STA_SELF_RESP;
24291case WLAN_HAL_DEL_STA_SELF_RSP:
24292 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024293#ifdef FEATURE_OEM_DATA_SUPPORT
24294 case WLAN_HAL_START_OEM_DATA_RSP:
24295 return WDI_START_OEM_DATA_RESP;
24296#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WLAN_HAL_HOST_RESUME_RSP:
24298 return WDI_HOST_RESUME_RESP;
24299 case WLAN_HAL_KEEP_ALIVE_RSP:
24300 return WDI_KEEP_ALIVE_RESP;
24301#ifdef FEATURE_WLAN_SCAN_PNO
24302 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24303 return WDI_SET_PREF_NETWORK_RESP;
24304 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24307 return WDI_UPDATE_SCAN_PARAMS_RESP;
24308 case WLAN_HAL_PREF_NETW_FOUND_IND:
24309 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24310#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024311#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024312 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24313 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024314#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24316 return WDI_SET_TX_PER_TRACKING_RESP;
24317#ifdef WLAN_FEATURE_PACKET_FILTERING
24318 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24319 return WDI_8023_MULTICAST_LIST_RESP;
24320 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24321 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24322 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24323 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24324 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24325 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24326#endif // WLAN_FEATURE_PACKET_FILTERING
24327
24328 case WLAN_HAL_DUMP_COMMAND_RSP:
24329 return WDI_HAL_DUMP_CMD_RESP;
24330 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24331 return WDI_SET_POWER_PARAMS_RESP;
24332#ifdef WLAN_FEATURE_VOWIFI_11R
24333 case WLAN_HAL_AGGR_ADD_TS_RSP:
24334 return WDI_AGGR_ADD_TS_RESP;
24335#endif
24336
24337#ifdef WLAN_FEATURE_GTK_OFFLOAD
24338 case WLAN_HAL_GTK_OFFLOAD_RSP:
24339 return WDI_GTK_OFFLOAD_RESP;
24340 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24341 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24342#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24343#ifdef WLAN_WAKEUP_EVENTS
24344 case WLAN_HAL_WAKE_REASON_IND:
24345 return WDI_HAL_WAKE_REASON_IND;
24346#endif // WLAN_WAKEUP_EVENTS
24347
24348 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24349 return WDI_SET_TM_LEVEL_RESP;
24350 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24351 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024352#ifdef WLAN_FEATURE_11AC
24353 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24354 return WDI_UPDATE_VHT_OP_MODE_RESP;
24355#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024356#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024357 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24358 return WDI_GET_ROAM_RSSI_RESP;
24359#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024360
Leo Chang9056f462013-08-01 19:21:11 -070024361#ifdef FEATURE_WLAN_LPHB
24362 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024363 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024364 case WLAN_HAL_LPHB_CFG_RSP:
24365 return WDI_LPHB_CFG_RESP;
24366#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024367
24368 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24369 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024370 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24371 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024372
Rajeev79dbe4c2013-10-05 11:03:42 +053024373#ifdef FEATURE_WLAN_BATCH_SCAN
24374 case WLAN_HAL_BATCHSCAN_SET_RSP:
24375 return WDI_SET_BATCH_SCAN_RESP;
24376 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24377 return WDI_BATCHSCAN_RESULT_IND;
24378#endif // FEATURE_WLAN_BATCH_SCAN
24379
Leo Chang0b0e45a2013-12-15 15:18:55 -080024380#ifdef FEATURE_WLAN_CH_AVOID
24381 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24382 return WDI_HAL_CH_AVOID_IND;
24383#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024384 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24385 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024386 case WLAN_HAL_PRINT_REG_INFO_IND:
24387 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024388 case WLAN_HAL_CH_SWITCH_V1_RSP:
24389 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024390 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24391 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024392#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24393 case WLAN_HAL_LL_SET_STATS_RSP:
24394 return WDI_LL_STATS_SET_RSP;
24395 case WLAN_HAL_LL_GET_STATS_RSP:
24396 return WDI_LL_STATS_GET_RSP;
24397 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24398 return WDI_LL_STATS_CLEAR_RSP;
24399 case WLAN_HAL_LL_NOTIFY_STATS:
24400 return WDI_HAL_LL_STATS_RESULTS_IND;
24401#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024402#ifdef WLAN_FEATURE_EXTSCAN
24403 case WLAN_HAL_EXT_SCAN_START_RSP:
24404 return WDI_EXTSCAN_START_RSP;
24405 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24406 return WDI_EXTSCAN_STOP_RSP;
24407 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24408 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24409 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24410 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24411 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24412 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24413 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24414 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24415 case WLAN_HAL_SIG_RSSI_SET_RSP:
24416 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24417 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24418 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24419 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24420 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24421 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24422 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24423 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24424 return WDI_HAL_EXTSCAN_RESULT_IND;
24425 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24426 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24427 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24428 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24429#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024430 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24431 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024432 case WLAN_HAL_FW_STATS_RSP:
24433 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024434 case WLAN_HAL_ENCRYPT_DATA_RSP:
24435 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024436 case WLAN_HAL_MGMT_LOGGING_INIT_RSP:
24437 return WDI_MGMT_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024438 case WLAN_HAL_GET_FRAME_LOG_RSP:
24439 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024440 case WLAN_HAL_NAN_RSP:
24441 return WDI_NAN_RESPONSE;
24442 case WLAN_HAL_NAN_EVT:
24443 return WDI_HAL_NAN_EVENT;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024444
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 }
24448
24449}/*HAL_2_WDI_RSP_TYPE*/
24450
24451
24452/*Convert WDI driver type into HAL driver type*/
24453WPT_STATIC WPT_INLINE tDriverType
24454WDI_2_HAL_DRV_TYPE
24455(
24456 WDI_DriverType wdiDriverType
24457)
24458{
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 the chances of getting inlined*/
24461 switch( wdiDriverType )
24462 {
24463 case WDI_DRIVER_TYPE_PRODUCTION:
24464 return eDRIVER_TYPE_PRODUCTION;
24465 case WDI_DRIVER_TYPE_MFG:
24466 return eDRIVER_TYPE_MFG;
24467 case WDI_DRIVER_TYPE_DVT:
24468 return eDRIVER_TYPE_DVT;
24469 }
24470
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024472}/*WDI_2_HAL_DRV_TYPE*/
24473
24474
24475/*Convert WDI stop reason into HAL stop reason*/
24476WPT_STATIC WPT_INLINE tHalStopType
24477WDI_2_HAL_STOP_REASON
24478(
24479 WDI_StopType wdiDriverType
24480)
24481{
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 the chances of getting inlined*/
24484 switch( wdiDriverType )
24485 {
24486 case WDI_STOP_TYPE_SYS_RESET:
24487 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024488 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24489 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024490 case WDI_STOP_TYPE_RF_KILL:
24491 return HAL_STOP_TYPE_RF_KILL;
24492 }
24493
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024495}/*WDI_2_HAL_STOP_REASON*/
24496
24497
24498/*Convert WDI scan mode type into HAL scan mode type*/
24499WPT_STATIC WPT_INLINE eHalSysMode
24500WDI_2_HAL_SCAN_MODE
24501(
24502 WDI_ScanMode wdiScanMode
24503)
24504{
Jeff Johnsone7245742012-09-05 17:12:55 -070024505 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 the chances of getting inlined*/
24507 switch( wdiScanMode )
24508 {
24509 case WDI_SCAN_MODE_NORMAL:
24510 return eHAL_SYS_MODE_NORMAL;
24511 case WDI_SCAN_MODE_LEARN:
24512 return eHAL_SYS_MODE_LEARN;
24513 case WDI_SCAN_MODE_SCAN:
24514 return eHAL_SYS_MODE_SCAN;
24515 case WDI_SCAN_MODE_PROMISC:
24516 return eHAL_SYS_MODE_PROMISC;
24517 case WDI_SCAN_MODE_SUSPEND_LINK:
24518 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024519 case WDI_SCAN_MODE_ROAM_SCAN:
24520 return eHAL_SYS_MODE_ROAM_SCAN;
24521 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24522 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 }
24524
Jeff Johnsone7245742012-09-05 17:12:55 -070024525 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024526}/*WDI_2_HAL_SCAN_MODE*/
24527
24528/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024529WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024530WDI_2_HAL_SEC_CH_OFFSET
24531(
24532 WDI_HTSecondaryChannelOffset wdiSecChOffset
24533)
24534{
Jeff Johnsone7245742012-09-05 17:12:55 -070024535 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 the chances of getting inlined*/
24537 switch( wdiSecChOffset )
24538 {
24539 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024544 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24545#ifdef WLAN_FEATURE_11AC
24546 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24547 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24548 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24549 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24550 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24551 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24552 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24553 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24554 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24555 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24556 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24557 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24558 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24559 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24560#endif
24561 default:
24562 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 }
24564
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024566}/*WDI_2_HAL_SEC_CH_OFFSET*/
24567
24568/*Convert WDI BSS type into HAL BSS type*/
24569WPT_STATIC WPT_INLINE tSirBssType
24570WDI_2_HAL_BSS_TYPE
24571(
24572 WDI_BssType wdiBSSType
24573)
24574{
Jeff Johnsone7245742012-09-05 17:12:55 -070024575 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 the chances of getting inlined*/
24577 switch( wdiBSSType )
24578 {
24579 case WDI_INFRASTRUCTURE_MODE:
24580 return eSIR_INFRASTRUCTURE_MODE;
24581 case WDI_INFRA_AP_MODE:
24582 return eSIR_INFRA_AP_MODE;
24583 case WDI_IBSS_MODE:
24584 return eSIR_IBSS_MODE;
24585 case WDI_BTAMP_STA_MODE:
24586 return eSIR_BTAMP_STA_MODE;
24587 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 case WDI_BSS_AUTO_MODE:
24590 return eSIR_AUTO_MODE;
24591 }
24592
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024594}/*WDI_2_HAL_BSS_TYPE*/
24595
24596/*Convert WDI NW type into HAL NW type*/
24597WPT_STATIC WPT_INLINE tSirNwType
24598WDI_2_HAL_NW_TYPE
24599(
24600 WDI_NwType wdiNWType
24601)
24602{
Jeff Johnsone7245742012-09-05 17:12:55 -070024603 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 the chances of getting inlined*/
24605 switch( wdiNWType )
24606 {
24607 case WDI_11A_NW_TYPE:
24608 return eSIR_11A_NW_TYPE;
24609 case WDI_11B_NW_TYPE:
24610 return eSIR_11B_NW_TYPE;
24611 case WDI_11G_NW_TYPE:
24612 return eSIR_11G_NW_TYPE;
24613 case WDI_11N_NW_TYPE:
24614 return eSIR_11N_NW_TYPE;
24615 }
24616
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024618}/*WDI_2_HAL_NW_TYPE*/
24619
24620/*Convert WDI chanel bonding type into HAL cb type*/
24621WPT_STATIC WPT_INLINE ePhyChanBondState
24622WDI_2_HAL_CB_STATE
24623(
24624 WDI_PhyChanBondState wdiCbState
24625)
24626{
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 the chances of getting inlined*/
24629 switch ( wdiCbState )
24630 {
24631 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24632 return PHY_SINGLE_CHANNEL_CENTERED;
24633 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24634 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24635 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24636 return PHY_DOUBLE_CHANNEL_CENTERED;
24637 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24638 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024639#ifdef WLAN_FEATURE_11AC
24640 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24641 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24642 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24643 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24644 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24645 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24646 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24647 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24648 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24649 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24650 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24651 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24652 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24653 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24654#endif
24655 case WDI_MAX_CB_STATE:
24656 default:
24657 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024659
Jeff Johnson295189b2012-06-20 16:38:30 -070024660 return PHY_CHANNEL_BONDING_STATE_MAX;
24661}/*WDI_2_HAL_CB_STATE*/
24662
24663/*Convert WDI chanel bonding type into HAL cb type*/
24664WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24665WDI_2_HAL_HT_OPER_MODE
24666(
24667 WDI_HTOperatingMode wdiHTOperMode
24668)
24669{
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 the chances of getting inlined*/
24672 switch ( wdiHTOperMode )
24673 {
24674 case WDI_HT_OP_MODE_PURE:
24675 return eSIR_HT_OP_MODE_PURE;
24676 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24677 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24678 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24679 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24680 case WDI_HT_OP_MODE_MIXED:
24681 return eSIR_HT_OP_MODE_MIXED;
24682 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024683
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 return eSIR_HT_OP_MODE_MAX;
24685}/*WDI_2_HAL_HT_OPER_MODE*/
24686
24687/*Convert WDI mimo PS type into HAL mimo PS type*/
24688WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24689WDI_2_HAL_MIMO_PS
24690(
24691 WDI_HTMIMOPowerSaveState wdiHTOperMode
24692)
24693{
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 the chances of getting inlined*/
24696 switch ( wdiHTOperMode )
24697 {
24698 case WDI_HT_MIMO_PS_STATIC:
24699 return eSIR_HT_MIMO_PS_STATIC;
24700 case WDI_HT_MIMO_PS_DYNAMIC:
24701 return eSIR_HT_MIMO_PS_DYNAMIC;
24702 case WDI_HT_MIMO_PS_NA:
24703 return eSIR_HT_MIMO_PS_NA;
24704 case WDI_HT_MIMO_PS_NO_LIMIT:
24705 return eSIR_HT_MIMO_PS_NO_LIMIT;
24706 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024707
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 return eSIR_HT_MIMO_PS_MAX;
24709}/*WDI_2_HAL_MIMO_PS*/
24710
24711/*Convert WDI ENC type into HAL ENC type*/
24712WPT_STATIC WPT_INLINE tAniEdType
24713WDI_2_HAL_ENC_TYPE
24714(
24715 WDI_EncryptType wdiEncType
24716)
24717{
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 the chances of getting inlined*/
24720 switch ( wdiEncType )
24721 {
24722 case WDI_ENCR_NONE:
24723 return eSIR_ED_NONE;
24724
24725 case WDI_ENCR_WEP40:
24726 return eSIR_ED_WEP40;
24727
24728 case WDI_ENCR_WEP104:
24729 return eSIR_ED_WEP104;
24730
24731 case WDI_ENCR_TKIP:
24732 return eSIR_ED_TKIP;
24733
24734 case WDI_ENCR_CCMP:
24735 return eSIR_ED_CCMP;
24736
24737 case WDI_ENCR_AES_128_CMAC:
24738 return eSIR_ED_AES_128_CMAC;
24739#if defined(FEATURE_WLAN_WAPI)
24740 case WDI_ENCR_WPI:
24741 return eSIR_ED_WPI;
24742#endif
24743 default:
24744 return eSIR_ED_NOT_IMPLEMENTED;
24745 }
24746
24747}/*WDI_2_HAL_ENC_TYPE*/
24748
24749/*Convert WDI WEP type into HAL WEP type*/
24750WPT_STATIC WPT_INLINE tAniWepType
24751WDI_2_HAL_WEP_TYPE
24752(
24753 WDI_WepType wdiWEPType
24754)
24755{
Jeff Johnsone7245742012-09-05 17:12:55 -070024756 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 the chances of getting inlined*/
24758 switch ( wdiWEPType )
24759 {
24760 case WDI_WEP_STATIC:
24761 return eSIR_WEP_STATIC;
24762
24763 case WDI_WEP_DYNAMIC:
24764 return eSIR_WEP_DYNAMIC;
24765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024766
Jeff Johnson295189b2012-06-20 16:38:30 -070024767 return eSIR_WEP_MAX;
24768}/*WDI_2_HAL_WEP_TYPE*/
24769
24770WPT_STATIC WPT_INLINE tSirLinkState
24771WDI_2_HAL_LINK_STATE
24772(
24773 WDI_LinkStateType wdiLinkState
24774)
24775{
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 the chances of getting inlined*/
24778 switch ( wdiLinkState )
24779 {
24780 case WDI_LINK_IDLE_STATE:
24781 return eSIR_LINK_IDLE_STATE;
24782
24783 case WDI_LINK_PREASSOC_STATE:
24784 return eSIR_LINK_PREASSOC_STATE;
24785
24786 case WDI_LINK_POSTASSOC_STATE:
24787 return eSIR_LINK_POSTASSOC_STATE;
24788
24789 case WDI_LINK_AP_STATE:
24790 return eSIR_LINK_AP_STATE;
24791
24792 case WDI_LINK_IBSS_STATE:
24793 return eSIR_LINK_IBSS_STATE;
24794
24795 case WDI_LINK_BTAMP_PREASSOC_STATE:
24796 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24797
24798 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24799 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24800
24801 case WDI_LINK_BTAMP_AP_STATE:
24802 return eSIR_LINK_BTAMP_AP_STATE;
24803
24804 case WDI_LINK_BTAMP_STA_STATE:
24805 return eSIR_LINK_BTAMP_STA_STATE;
24806
24807 case WDI_LINK_LEARN_STATE:
24808 return eSIR_LINK_LEARN_STATE;
24809
24810 case WDI_LINK_SCAN_STATE:
24811 return eSIR_LINK_SCAN_STATE;
24812
24813 case WDI_LINK_FINISH_SCAN_STATE:
24814 return eSIR_LINK_FINISH_SCAN_STATE;
24815
24816 case WDI_LINK_INIT_CAL_STATE:
24817 return eSIR_LINK_INIT_CAL_STATE;
24818
24819 case WDI_LINK_FINISH_CAL_STATE:
24820 return eSIR_LINK_FINISH_CAL_STATE;
24821
Jeff Johnson295189b2012-06-20 16:38:30 -070024822 case WDI_LINK_LISTEN_STATE:
24823 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024824
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024825 case WDI_LINK_SEND_ACTION_STATE:
24826 return eSIR_LINK_SEND_ACTION_STATE;
24827
Jeff Johnson295189b2012-06-20 16:38:30 -070024828 default:
24829 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024830 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024831}
24832
Jeff Johnsone7245742012-09-05 17:12:55 -070024833/*Translate a STA Context from WDI into HAL*/
24834WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024835void
24836WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024837(
Jeff Johnson295189b2012-06-20 16:38:30 -070024838 tConfigStaParams* phalConfigSta,
24839 WDI_ConfigStaReqInfoType* pwdiConfigSta
24840)
24841{
24842 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024843#ifdef WLAN_FEATURE_11AC
24844 /* Get the Version 1 Handler */
24845 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24846 if (WDI_getFwWlanFeatCaps(DOT11AC))
24847 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024848 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024849 }
24850#endif
24851 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024852 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024853
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 wpalMemoryCopy(phalConfigSta->bssId,
24855 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24856
24857 wpalMemoryCopy(phalConfigSta->staMac,
24858 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024859
24860 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24861 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24862 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24863 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24864 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24865 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24866 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24867 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24868 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24869 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24870 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24871 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24872 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24873 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24874 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24875 phalConfigSta->action = pwdiConfigSta->wdiAction;
24876 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24877 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24878 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24879 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24880 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24881 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24882 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024883
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24885
Jeff Johnsone7245742012-09-05 17:12:55 -070024886 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024887 pwdiConfigSta->wdiSupportedRates.opRateMode;
24888 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24889 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24892 }
24893 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24894 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024895 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024896 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24897 }
24898 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24899 {
24900 phalConfigSta->supportedRates.aniLegacyRates[i] =
24901 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24902 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024903 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024904 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24905 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24909 }
24910 phalConfigSta->supportedRates.rxHighestDataRate =
24911 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24912
Jeff Johnsone7245742012-09-05 17:12:55 -070024913#ifdef WLAN_FEATURE_11AC
24914 if(phalConfigSta_V1 != NULL)
24915 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024916 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24917 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24918 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24919 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024920 }
24921#endif
24922
Jeff Johnson295189b2012-06-20 16:38:30 -070024923 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024924
Jeff Johnsone7245742012-09-05 17:12:55 -070024925#ifdef WLAN_FEATURE_11AC
24926 if(phalConfigSta_V1 != NULL)
24927 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024928 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24929 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024930 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024931 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024932 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24933 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24934
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 }
24936#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024937}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024938
24939/*Translate a Rate set info from WDI into HAL*/
24940WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024941WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024942(
Jeff Johnson295189b2012-06-20 16:38:30 -070024943 tSirMacRateSet* pHalRateSet,
24944 WDI_RateSet* pwdiRateSet
24945)
24946{
Jeff Johnsone7245742012-09-05 17:12:55 -070024947 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24949
24950 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24951 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24952
24953 for ( i = 0; i < pHalRateSet->numRates; i++ )
24954 {
24955 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24956 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024957
Jeff Johnson295189b2012-06-20 16:38:30 -070024958}/*WDI_CopyWDIRateSetToHALRateSet*/
24959
24960
24961/*Translate an EDCA Parameter Record from WDI into HAL*/
24962WPT_STATIC WPT_INLINE void
24963WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024964(
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 tSirMacEdcaParamRecord* phalEdcaParam,
24966 WDI_EdcaParamRecord* pWDIEdcaParam
24967)
24968{
Jeff Johnsone7245742012-09-05 17:12:55 -070024969 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 the chances of getting inlined*/
24971
24972 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24973 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24974 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24975 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24976
24977 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24978 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24979 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24980}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24981
24982
24983/*Copy a management frame header from WDI fmt into HAL fmt*/
24984WPT_STATIC WPT_INLINE void
24985WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24986(
24987 tSirMacMgmtHdr* pmacMgmtHdr,
24988 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24989)
24990{
24991 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24992 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24993 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24994 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24995 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24996 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24997 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24998 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24999 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25000 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25001 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25002
25003 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25004 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25005
Jeff Johnsone7245742012-09-05 17:12:55 -070025006 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 pwdiMacMgmtHdr->bssId, 6);
25012
25013 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25014 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25015 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25016
25017}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25018
25019
25020/*Copy config bss parameters from WDI fmt into HAL fmt*/
25021WPT_STATIC WPT_INLINE void
25022WDI_CopyWDIConfigBSSToHALConfigBSS
25023(
25024 tConfigBssParams* phalConfigBSS,
25025 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25026)
25027{
25028
25029 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025030#ifdef WLAN_FEATURE_11AC
25031 /* Get the Version 1 Handler */
25032 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25033 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025034 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025035#endif
25036
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 wpalMemoryCopy( phalConfigBSS->bssId,
25038 pwdiConfigBSS->macBSSID,
25039 WDI_MAC_ADDR_LEN);
25040
25041#ifdef HAL_SELF_STA_PER_BSS
25042 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25043 pwdiConfigBSS->macSelfAddr,
25044 WDI_MAC_ADDR_LEN);
25045#endif
25046
25047 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25048
25049 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25050 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25051
Jeff Johnsone7245742012-09-05 17:12:55 -070025052 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 pwdiConfigBSS->ucShortSlotTimeSupported;
25054 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25055 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25056 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25057 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25058 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25061 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25062 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25063 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25064 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25065 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25066 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25067 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25068 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25069 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25070 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25071
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 phalConfigBSS->htOperMode =
25073 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025074
25075 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25076 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25077 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25078 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25079
25080#ifdef WLAN_FEATURE_VOWIFI
25081 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25082#endif
25083
25084 /*! Used 32 as magic number because that is how the ssid is declared inside the
25085 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25088 pwdiConfigBSS->wdiSSID.ucLength : 32;
25089 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 pwdiConfigBSS->wdiSSID.sSSID,
25091 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025092
25093 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25094 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025095
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25097 &pwdiConfigBSS->wdiRateSet);
25098
25099 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25100
25101 if(phalConfigBSS->edcaParamsValid)
25102 {
25103 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25104 &pwdiConfigBSS->wdiBEEDCAParams);
25105 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25106 &pwdiConfigBSS->wdiBKEDCAParams);
25107 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25108 &pwdiConfigBSS->wdiVIEDCAParams);
25109 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25110 &pwdiConfigBSS->wdiVOEDCAParams);
25111 }
25112
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025114
25115 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25116
25117#ifdef WLAN_FEATURE_VOWIFI_11R
25118
Jeff Johnsone7245742012-09-05 17:12:55 -070025119 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025120 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025121
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 if( phalConfigBSS->extSetStaKeyParamValid )
25123 {
25124 /*-----------------------------------------------------------------------
25125 Copy the STA Key parameters into the HAL message
25126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25129
Jeff Johnsone7245742012-09-05 17:12:55 -070025130 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25132
25133 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25134
25135 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25136
25137 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25138
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25140 keyIndex++)
25141 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25144 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25145 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25146 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25147 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25148 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25155 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025156 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 WDI_MAX_KEY_LENGTH);
25158 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 }
25160 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25161 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 sizeof(phalConfigBSS->extSetStaKeyParam) );
25164 }
25165
25166#endif /*WLAN_FEATURE_VOWIFI_11R*/
25167
Jeff Johnsone7245742012-09-05 17:12:55 -070025168#ifdef WLAN_FEATURE_11AC
25169 if(phalConfigBSS_V1 != NULL)
25170 {
25171 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25172 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25173 }
25174#endif
25175
Jeff Johnson295189b2012-06-20 16:38:30 -070025176}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25177
25178
Jeff Johnsone7245742012-09-05 17:12:55 -070025179/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 pointed to by user data */
25181WPT_STATIC WPT_INLINE void
25182WDI_ExtractRequestCBFromEvent
25183(
25184 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025185 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 void** ppUserData
25187)
25188{
25189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25190 switch ( pEvent->wdiRequest )
25191 {
25192 case WDI_START_REQ:
25193 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25194 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25195 break;
25196 case WDI_STOP_REQ:
25197 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25198 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25199 break;
25200 case WDI_INIT_SCAN_REQ:
25201 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25202 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25203 break;
25204 case WDI_START_SCAN_REQ:
25205 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25206 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25207 break;
25208 case WDI_END_SCAN_REQ:
25209 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25210 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25211 break;
25212 case WDI_FINISH_SCAN_REQ:
25213 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25214 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25215 break;
25216 case WDI_JOIN_REQ:
25217 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25218 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25219 break;
25220 case WDI_CONFIG_BSS_REQ:
25221 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25222 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25223 break;
25224 case WDI_DEL_BSS_REQ:
25225 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25226 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25227 break;
25228 case WDI_POST_ASSOC_REQ:
25229 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25230 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25231 break;
25232 case WDI_DEL_STA_REQ:
25233 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25234 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25235 break;
25236 case WDI_DEL_STA_SELF_REQ:
25237 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25238 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25239 break;
25240
25241 case WDI_SET_BSS_KEY_REQ:
25242 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25243 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25244 break;
25245 case WDI_RMV_BSS_KEY_REQ:
25246 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25247 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25248 break;
25249 case WDI_SET_STA_KEY_REQ:
25250 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25251 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25252 break;
25253 case WDI_RMV_STA_KEY_REQ:
25254 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25255 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25256 break;
25257 case WDI_ADD_TS_REQ:
25258 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25259 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25260 break;
25261 case WDI_DEL_TS_REQ:
25262 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25263 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25264 break;
25265 case WDI_UPD_EDCA_PRMS_REQ:
25266 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25267 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25268 break;
25269 case WDI_ADD_BA_SESSION_REQ:
25270 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25271 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25272 break;
25273 case WDI_DEL_BA_REQ:
25274 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25275 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25276 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025277#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 case WDI_TSM_STATS_REQ:
25279 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25280 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25281 break;
25282#endif
25283 case WDI_CH_SWITCH_REQ:
25284 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25285 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25286 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025287 case WDI_CH_SWITCH_REQ_V1:
25288 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25289 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25290 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025291 case WDI_CONFIG_STA_REQ:
25292 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25293 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25294 break;
25295 case WDI_SET_LINK_ST_REQ:
25296 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25297 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25298 break;
25299 case WDI_GET_STATS_REQ:
25300 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25301 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25302 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025303#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025304 case WDI_GET_ROAM_RSSI_REQ:
25305 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25306 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25307 break;
25308#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 case WDI_UPDATE_CFG_REQ:
25310 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25311 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25312 break;
25313 case WDI_ADD_BA_REQ:
25314 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25315 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25316 break;
25317 case WDI_TRIGGER_BA_REQ:
25318 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25319 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25320 break;
25321 case WDI_UPD_BCON_PRMS_REQ:
25322 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25323 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25324 break;
25325 case WDI_SND_BCON_REQ:
25326 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25327 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25328 break;
25329 case WDI_ENTER_BMPS_REQ:
25330 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25331 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25332 break;
25333 case WDI_EXIT_BMPS_REQ:
25334 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25335 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25336 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025337 case WDI_ENTER_IMPS_REQ:
25338 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25339 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25340 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025341 case WDI_ENTER_UAPSD_REQ:
25342 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25343 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25344 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025345 case WDI_EXIT_UAPSD_REQ:
25346 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25347 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25348 break;
25349 case WDI_SET_UAPSD_PARAM_REQ:
25350 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25351 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25352 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 case WDI_UPDATE_UAPSD_PARAM_REQ:
25354 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25355 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25356 break;
25357 case WDI_CONFIGURE_RXP_FILTER_REQ:
25358 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25359 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25360 break;
25361 case WDI_SET_BEACON_FILTER_REQ:
25362 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25363 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25364 break;
25365 case WDI_REM_BEACON_FILTER_REQ:
25366 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25367 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025368 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025369 case WDI_SET_RSSI_THRESHOLDS_REQ:
25370 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25371 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25372 break;
25373 case WDI_HOST_OFFLOAD_REQ:
25374 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25375 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25376 break;
25377 case WDI_WOWL_ADD_BC_PTRN_REQ:
25378 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25379 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25380 break;
25381 case WDI_WOWL_DEL_BC_PTRN_REQ:
25382 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25383 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25384 break;
25385 case WDI_WOWL_ENTER_REQ:
25386 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25387 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25388 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025389 case WDI_WOWL_EXIT_REQ:
25390 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25391 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25392 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25394 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25395 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25396 break;
25397 case WDI_FLUSH_AC_REQ:
25398 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25399 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25400 break;
25401 case WDI_BTAMP_EVENT_REQ:
25402 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25404 break;
25405 case WDI_KEEP_ALIVE_REQ:
25406 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25407 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25408 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025409#if defined FEATURE_WLAN_SCAN_PNO
25410 case WDI_SET_PREF_NETWORK_REQ:
25411 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25412 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25413 break;
25414 case WDI_SET_RSSI_FILTER_REQ:
25415 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25416 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25417 break;
25418 case WDI_UPDATE_SCAN_PARAMS_REQ:
25419 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25420 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25421 break;
25422#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 case WDI_SET_TX_PER_TRACKING_REQ:
25424 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25425 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025426 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025427#if defined WLAN_FEATURE_PACKET_FILTERING
25428 case WDI_8023_MULTICAST_LIST_REQ:
25429 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25430 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25431 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025432 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25433 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25434 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25435 break;
25436 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25437 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25438 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25439 break;
25440 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25441 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25442 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25443 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025444#endif
25445 case WDI_SET_POWER_PARAMS_REQ:
25446 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25447 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25448 break;
25449#if defined WLAN_FEATURE_GTK_OFFLOAD
25450 case WDI_GTK_OFFLOAD_REQ:
25451 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25452 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25453 break;
25454 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25455 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25456 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25457 break;
25458#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025459
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 default:
25461 *ppfnReqCB = NULL;
25462 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025463 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025464 }
25465}/*WDI_ExtractRequestCBFromEvent*/
25466
25467
25468/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025469 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 frame xtl is enabled for a particular STA.
25471
25472 WDI_PostAssocReq must have been called.
25473
Jeff Johnsone7245742012-09-05 17:12:55 -070025474 @param uSTAIdx: STA index
25475
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 @see WDI_PostAssocReq
25477 @return Result of the function call
25478*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025479wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025480WDI_IsHwFrameTxTranslationCapable
25481(
25482 wpt_uint8 uSTAIdx
25483)
25484{
Jeff Johnsone7245742012-09-05 17:12:55 -070025485 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 uma value*/
25487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 ------------------------------------------------------------------------*/
25490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25491 {
25492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25493 "WDI API call before module is initialized - Fail request");
25494
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025496 }
25497
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025498#ifdef WLAN_SOFTAP_VSTA_FEATURE
25499 if (IS_VSTA_IDX(uSTAIdx))
25500 {
25501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25502 "STA %d is a Virtual STA, "
25503 "HW frame translation disabled", uSTAIdx);
25504 return eWLAN_PAL_FALSE;
25505 }
25506#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025507
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 return gWDICb.bFrameTransEnabled;
25509}/*WDI_IsHwFrameTxTranslationCapable*/
25510
Katya Nigam6201c3e2014-05-27 17:51:42 +053025511
25512/**
25513 @brief WDI_IsSelfSTA - check if staid is self sta index
25514
25515
25516 @param pWDICtx: pointer to the WLAN DAL context
25517 ucSTAIdx: station index
25518
25519 @return Result of the function call
25520*/
25521wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25522{
25523 wpt_uint8 ucSTAType;
25524
25525 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25526 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25527 {
25528 if( ucSTAType == WDI_STA_ENTRY_SELF )
25529 return eWLAN_PAL_TRUE;
25530 }
25531
25532 return eWLAN_PAL_FALSE;
25533}
25534
25535
25536
Jeff Johnson295189b2012-06-20 16:38:30 -070025537#ifdef FEATURE_WLAN_SCAN_PNO
25538/**
25539 @brief WDI_SetPreferredNetworkList
25540
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025543
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 wdiPNOScanCb: callback for passing back the response
25545 of the Set PNO operation received from the
25546 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025547
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 callback
25550
Jeff Johnson295189b2012-06-20 16:38:30 -070025551 @return Result of the function call
25552*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025553WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025554WDI_SetPreferredNetworkReq
25555(
25556 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25557 WDI_PNOScanCb wdiPNOScanCb,
25558 void* pUserData
25559)
25560{
25561 WDI_EventInfoType wdiEventData = {{0}};
25562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25563
25564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 ------------------------------------------------------------------------*/
25567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25568 {
25569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25570 "WDI API call before module is initialized - Fail request");
25571
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 }
25574
25575 /*------------------------------------------------------------------------
25576 Fill in Event data and post to the Main FSM
25577 ------------------------------------------------------------------------*/
25578 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025580 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025581 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 wdiEventData.pUserData = pUserData;
25583
25584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25585}
25586
25587
25588/**
25589 @brief WDI_SetRssiFilterReq
25590
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025593
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 wdiRssiFilterCb: callback for passing back the response
25595 of the Set RSSI Filter operation received from the
25596 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025597
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025599 callback
25600
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 @return Result of the function call
25602*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025603WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025604WDI_SetRssiFilterReq
25605(
25606 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25607 WDI_RssiFilterCb wdiRssiFilterCb,
25608 void* pUserData
25609)
25610{
25611 WDI_EventInfoType wdiEventData = {{0}};
25612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25613
25614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 ------------------------------------------------------------------------*/
25617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25618 {
25619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25620 "WDI API call before module is initialized - Fail request");
25621
Jeff Johnsone7245742012-09-05 17:12:55 -070025622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 }
25624
25625 /*------------------------------------------------------------------------
25626 Fill in Event data and post to the Main FSM
25627 ------------------------------------------------------------------------*/
25628 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 wdiEventData.pUserData = pUserData;
25633
25634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25635}/*WDI_SetRssiFilterReq*/
25636
25637/**
25638 @brief WDI_UpdateScanParamsReq
25639
Jeff Johnsone7245742012-09-05 17:12:55 -070025640 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025642
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 wdiUpdateScanParamsCb: callback for passing back the response
25644 of the Set PNO operation received from the
25645 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025646
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 callback
25649
Jeff Johnson295189b2012-06-20 16:38:30 -070025650 @return Result of the function call
25651*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025653WDI_UpdateScanParamsReq
25654(
25655 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25656 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25657 void* pUserData
25658)
25659{
25660 WDI_EventInfoType wdiEventData = {{0}};
25661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25662
25663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 ------------------------------------------------------------------------*/
25666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25667 {
25668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25669 "WDI API call before module is initialized - Fail request");
25670
Jeff Johnsone7245742012-09-05 17:12:55 -070025671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 }
25673
25674 /*------------------------------------------------------------------------
25675 Fill in Event data and post to the Main FSM
25676 ------------------------------------------------------------------------*/
25677 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025678 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025679 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025681 wdiEventData.pUserData = pUserData;
25682
25683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25684}
25685
25686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025689
25690 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 pwdiPNOScanReqParams: pointer to the info received
25692 from upper layers
25693 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025694 and its size
25695
Jeff Johnson295189b2012-06-20 16:38:30 -070025696 @return Result of the function call
25697*/
25698
25699WDI_Status
25700WDI_PackPreferredNetworkList
25701(
25702 WDI_ControlBlockType* pWDICtx,
25703 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25704 wpt_uint8** ppSendBuffer,
25705 wpt_uint16* pSize
25706)
25707{
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 wpt_uint16 usDataOffset = 0;
25710 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025711 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 /*-----------------------------------------------------------------------
25714 Get message buffer
25715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025717 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025719 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 {
25721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025722 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 pwdiPNOScanReqParams);
25724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 }
25727
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025728 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25729
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 /*-------------------------------------------------------------------------
25731 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25732 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025733 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025735 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25737
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025738 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025741 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25743
25744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25747 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25748 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25749
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025750 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 {
25752 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025753 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25755
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025756 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025757 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025758 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
25760 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025761 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025762 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025763
25764 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025770 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025771 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25772 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25773 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25774 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025775
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025776 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025777 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025778 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025779
25780 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025781 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25783
25784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025785 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025786 pPrefNetwListParams->aNetworks[i].ssId.length,
25787 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025788 }
25789
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025790 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025791 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25793 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25794 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25795
25796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025797 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025798 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25800 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25801
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025802 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025804 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025806 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25808 }
25809
25810 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025811 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25813 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25814 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025817 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025820
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025821 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25823 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25824 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025825 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025826
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025829 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025830
25831 /*Set the output values*/
25832 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025834
25835 return WDI_STATUS_SUCCESS;
25836}/*WDI_PackPreferredNetworkList*/
25837
25838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025841
25842 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 pwdiPNOScanReqParams: pointer to the info received
25844 from upper layers
25845 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 and its size
25847
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 @return Result of the function call
25849*/
25850
25851WDI_Status
25852WDI_PackPreferredNetworkListNew
25853(
25854 WDI_ControlBlockType* pWDICtx,
25855 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25856 wpt_uint8** ppSendBuffer,
25857 wpt_uint16* pSize
25858)
25859{
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 wpt_uint16 usDataOffset = 0;
25862 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025863 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865
25866 /*-----------------------------------------------------------------------
25867 Get message buffer
25868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025870 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025872 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 {
25874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025875 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025876 pwdiPNOScanReqParams);
25877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 }
25880
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025881 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25882
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 /*-------------------------------------------------------------------------
25884 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25885 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025886 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025888 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25890
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025891 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025894 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25896
25897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25900 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25901 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25902
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 {
25905 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025906 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25908
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025911 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025912
25913 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025914 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025915 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025916
25917 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025918 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025919 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
25921 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025922 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025923 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025927 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25929
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025930 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025932 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025933
25934 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025935 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25937
25938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025939 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025940 pPrefNetwListParams->aNetworks[i].ssId.length,
25941 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025942 }
25943
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025944 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025945 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25947 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25948 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25949
25950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025952 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25954 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25955
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025956 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025958 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025960 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25962 }
25963
25964 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025965 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25967 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25968 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025969 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025970
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025971 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025973 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025974
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025975 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25977 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25978 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025980
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025981 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025983 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025984
Jeff Johnson295189b2012-06-20 16:38:30 -070025985
25986 /*Set the output values*/
25987 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025989
25990 return WDI_STATUS_SUCCESS;
25991}/*WDI_PackPreferredNetworkListNew*/
25992
25993/**
25994 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025995
25996 @param pWDICtx: pointer to the WLAN DAL context
25997 pEventData: pointer to the event information structure
25998
Jeff Johnson295189b2012-06-20 16:38:30 -070025999 @return Result of the function call
26000*/
26001WDI_Status
26002WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026003(
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 WDI_ControlBlockType* pWDICtx,
26005 WDI_EventInfoType* pEventData
26006)
26007{
26008 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26009 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026010 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026011 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026013
26014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 -------------------------------------------------------------------------*/
26017 if (( NULL == pEventData ) ||
26018 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26019 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26020 {
26021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026025 }
26026
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026027 /*----------------------------------------------------------------------
26028 Avoid Enable PNO during any active session or an ongoing session
26029 ----------------------------------------------------------------------*/
26030 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26031 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26032 {
26033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26034 "%s:(Active/Ongoing Session) - Fail request", __func__);
26035
26036 return WDI_STATUS_E_FAILURE;
26037 }
26038
Jeff Johnson295189b2012-06-20 16:38:30 -070026039 /*-------------------------------------------------------------------------
26040 Pack the PNO request structure based on version
26041 -------------------------------------------------------------------------*/
26042 if ( pWDICtx->wdiPNOVersion > 0 )
26043 {
26044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026045 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 pWDICtx->wdiPNOVersion);
26047
26048 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26049 &pSendBuffer, &usSendSize);
26050 }
26051 else
26052 {
26053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026054 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 pWDICtx->wdiPNOVersion);
26056
26057 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26058 &pSendBuffer, &usSendSize);
26059 }
26060
26061 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26062 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26063 {
26064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026065 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 }
26069
26070 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
26073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26077 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026078}
26079
26080/**
26081 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026082
26083 @param pWDICtx: pointer to the WLAN DAL context
26084 pEventData: pointer to the event information structure
26085
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 @see
26087 @return Result of the function call
26088*/
26089WDI_Status
26090WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026091(
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 WDI_ControlBlockType* pWDICtx,
26093 WDI_EventInfoType* pEventData
26094)
26095{
26096 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26097 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 wpt_uint16 usDataOffset = 0;
26100 wpt_uint16 usSendSize = 0;
26101 wpt_uint8 ucRssiThreshold;
26102
26103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 -------------------------------------------------------------------------*/
26106 if (( NULL == pEventData ) ||
26107 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26108 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26109 {
26110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026114 }
26115
26116 /*-----------------------------------------------------------------------
26117 Get message buffer
26118 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 sizeof(ucRssiThreshold),
26121 &pSendBuffer, &usDataOffset, &usSendSize))||
26122 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26123 {
26124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026125 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 }
26130
26131 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26132
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 wpalMemoryCopy( pSendBuffer+usDataOffset,
26134 &ucRssiThreshold,
26135 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026136
26137 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026138 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026139
26140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26144 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026145}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26147/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026148 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026149
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026150 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026151 by the Device Interface
26152
26153 wdiRoamOffloadScancb: callback for passing back the response
26154 of the Roam Candidate Lookup Req operation received from the
26155 device
26156
26157 pUserData: user data will be passed back with the
26158 callback
26159 @return Result of the function call
26160*/
26161WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026162WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026163(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026164 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026165 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26166 void* pUserData
26167)
26168{
26169 WDI_EventInfoType wdiEventData = {{0}};
26170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26171
26172 /*------------------------------------------------------------------------
26173 Sanity Check
26174 ------------------------------------------------------------------------*/
26175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26176 {
26177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26178 "WDI API call before module is initialized - Fail request");
26179
26180 return WDI_STATUS_E_NOT_ALLOWED;
26181 }
26182
26183 /*------------------------------------------------------------------------
26184 Fill in Event data and post to the Main FSM
26185 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026186 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26187 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26188 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026189 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26190 wdiEventData.pUserData = pUserData;
26191
26192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26193}
26194
26195void
26196WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26197{
26198 switch (wdiEdType)
26199 {
26200 case WDI_ED_NONE:
26201 *EdType = eED_NONE;
26202 break;
26203 case WDI_ED_WEP40:
26204 case WDI_ED_WEP104:
26205 *EdType = eED_WEP;
26206 break;
26207 case WDI_ED_TKIP:
26208 *EdType = eED_TKIP;
26209 break;
26210 case WDI_ED_CCMP:
26211#ifdef WLAN_FEATURE_11W
26212 case WDI_ED_AES_128_CMAC:
26213#endif
26214 *EdType = eED_CCMP;
26215 break;
26216#ifdef FEATURE_WLAN_WAPI
26217 case WDI_ED_WPI:
26218 *EdType = eED_WPI;
26219 break;
26220#endif
26221 case WDI_ED_ANY:
26222 *EdType = eED_ANY;
26223 break;
26224
26225 default:
26226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26227 "%s: Unknown Encryption Type", __func__);
26228 break;
26229 }
26230}
26231
26232/**
26233 @brief Helper function to pack Start Roam Candidate Lookup
26234 Request parameters
26235
26236 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026237 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026238 from upper layers
26239 ppSendBuffer, pSize - out pointers of the packed buffer
26240 and its size
26241
26242 @return Result of the function call
26243*/
26244
26245WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026246WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026247(
26248 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026249 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026250 wpt_uint8** ppSendBuffer,
26251 wpt_uint16* pSize
26252)
26253{
26254 wpt_uint8* pSendBuffer = NULL;
26255 wpt_uint16 usDataOffset = 0;
26256 wpt_uint16 usSendSize = 0;
26257 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26258 wpt_uint8 i;
26259 /*-----------------------------------------------------------------------
26260 Get message buffer
26261 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026262 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026263 sizeof(tRoamCandidateListParams),
26264 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026265 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026266 {
26267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026268 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026269 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026270 WDI_ASSERT(0);
26271 return WDI_STATUS_E_FAILURE;
26272 }
26273 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026274 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026275 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026276 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026277 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026278 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026279 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026280 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026281 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026282 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026283 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026284
26285 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026286 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026287 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026288 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026289 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26290 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026291 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26292 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26293 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26294 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26295 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026296 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026297 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026298 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026299 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26300 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26301 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26302 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26303 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26304 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26305 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026306 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026307 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026308 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26309 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26310 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026311
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26313 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26314 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26315 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26316 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26317 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026318 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026319 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26320 pRoamCandidateListParams->RoamScanOffloadEnabled,
26321 pRoamCandidateListParams->Command,
26322 pRoamCandidateListParams->StartScanReason,
26323 pRoamCandidateListParams->NeighborScanTimerPeriod,
26324 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26325 pRoamCandidateListParams->NeighborScanChannelMinTime,
26326 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26327 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26328 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26329 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26330 pRoamCandidateListParams->ConnectedNetwork.authentication,
26331 pRoamCandidateListParams->ConnectedNetwork.encryption,
26332 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26333 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26334 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026335 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026336 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026337 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026338 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026339 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26340 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026341 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026342 pRoamCandidateListParams->us24GProbeSize);
26343 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026344 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026345 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026346 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026347 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26348 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026349 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026350 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026351 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26352 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26353 pRoamCandidateListParams->nProbes =
26354 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26355 pRoamCandidateListParams->HomeAwayTime =
26356 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026358 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26359 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026361 }
26362
26363
26364 /*Set the output values*/
26365 *ppSendBuffer = pSendBuffer;
26366 *pSize = usSendSize;
26367 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026368}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026369
26370/**
26371 @brief Process Start Roam Candidate Lookup Request function
26372
26373 @param pWDICtx: pointer to the WLAN DAL context
26374 pEventData: pointer to the event information structure
26375
26376 @return Result of the function call
26377*/
26378WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026379WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026380(
26381 WDI_ControlBlockType* pWDICtx,
26382 WDI_EventInfoType* pEventData
26383)
26384{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026385 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026386 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26387 wpt_uint8* pSendBuffer = NULL;
26388 wpt_uint16 usSendSize = 0;
26389 WDI_Status wdiStatus;
26390 /*-------------------------------------------------------------------------
26391 Sanity check
26392 -------------------------------------------------------------------------*/
26393 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026394 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026395 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26396 {
26397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26398 "%s: Invalid parameters", __func__);
26399 WDI_ASSERT(0);
26400 return WDI_STATUS_E_FAILURE;
26401 }
26402
26403 /*-------------------------------------------------------------------------
26404 Pack the Start Roam Candidate Lookup request structure based on version
26405 -------------------------------------------------------------------------*/
26406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26407 "%s: Packing Roam Candidate Lookup request ", __func__);
26408
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026409 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026410 &pSendBuffer, &usSendSize);
26411
26412 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26413 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26414 {
26415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26416 "%s: failed to pack request parameters", __func__);
26417 WDI_ASSERT(0);
26418 return wdiStatus;
26419 }
26420
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026421 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26422 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026423
26424 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026425 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026426 -------------------------------------------------------------------------*/
26427 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026428 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026429}
26430
26431/**
26432 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26433 response is being received over the bus from HAL)
26434
26435 @param pWDICtx: pointer to the WLAN DAL context
26436 pEventData: pointer to the event information structure
26437
26438 @see
26439 @return Result of the function call
26440*/
26441WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026442WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026443(
26444 WDI_ControlBlockType* pWDICtx,
26445 WDI_EventInfoType* pEventData
26446)
26447{
26448 WDI_Status wdiStatus;
26449 eHalStatus halStatus;
26450 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26451
26452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26453
26454 /*-------------------------------------------------------------------------
26455 Sanity check
26456 -------------------------------------------------------------------------*/
26457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26458 ( NULL == pEventData->pEventData ))
26459 {
26460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26461 "%s: Invalid parameters", __func__);
26462 WDI_ASSERT(0);
26463 return WDI_STATUS_E_FAILURE;
26464 }
26465
26466 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26467
26468 /*-------------------------------------------------------------------------
26469 Extract response and send it to UMAC
26470 -------------------------------------------------------------------------*/
26471 halStatus = *((eHalStatus*)pEventData->pEventData);
26472 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26473
26474 /*Notify UMAC*/
26475 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26476
26477 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026478}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026479#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026480
26481/**
26482 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026483
26484 @param pWDICtx: pointer to the WLAN DAL context
26485 pEventData: pointer to the event information structure
26486
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 @see
26488 @return Result of the function call
26489*/
26490WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026491WDI_PackUpdateScanParamsReq
26492(
26493 WDI_ControlBlockType* pWDICtx,
26494 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26495 wpt_uint8** ppSendBuffer,
26496 wpt_uint16* pSize
26497)
26498{
26499 wpt_uint8* pSendBuffer = NULL;
26500 wpt_uint16 usDataOffset = 0;
26501 wpt_uint16 usSendSize = 0;
26502 tUpdateScanParams updateScanParams = {0};
26503
26504
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026506 "Begin WDI Update Scan Parameters Old Style Params");
26507 /*-----------------------------------------------------------------------
26508 Get message buffer
26509 -----------------------------------------------------------------------*/
26510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26511 sizeof(updateScanParams),
26512 &pSendBuffer, &usDataOffset, &usSendSize))||
26513 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26514 {
26515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026516 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026517 pwdiUpdateScanParams);
26518 WDI_ASSERT(0);
26519 return WDI_STATUS_E_FAILURE;
26520 }
26521
26522 //
26523 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26524 //
26525
26526 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26527 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26528
26529 updateScanParams.ucChannelCount =
26530 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26531 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26532 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26533 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26534
26535 wpalMemoryCopy( updateScanParams.aChannels,
26536 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26537 updateScanParams.ucChannelCount);
26538
26539
26540 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26541 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26542 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26543 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26544 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26545
26546 wpalMemoryCopy( pSendBuffer+usDataOffset,
26547 &updateScanParams,
26548 sizeof(updateScanParams));
26549
26550 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26551 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26552
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026554 "End Update Scan Parameters Old Style");
26555
26556 /*Set the output values*/
26557 *ppSendBuffer = pSendBuffer;
26558 *pSize = usSendSize;
26559
26560 return WDI_STATUS_SUCCESS;
26561}
26562
26563/**
26564 @brief Process Update Scan Params function
26565
26566 @param pWDICtx: pointer to the WLAN DAL context
26567 pEventData: pointer to the event information structure
26568
26569 @see
26570 @return Result of the function call
26571*/
26572WDI_Status
26573WDI_PackUpdateScanParamsReqEx
26574(
26575 WDI_ControlBlockType* pWDICtx,
26576 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26577 wpt_uint8** ppSendBuffer,
26578 wpt_uint16* pSize
26579)
26580{
26581 wpt_uint8* pSendBuffer = NULL;
26582 wpt_uint16 usDataOffset = 0;
26583 wpt_uint16 usSendSize = 0;
26584 tUpdateScanParamsEx updateScanParams = {0};
26585
26586
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026587 /*-----------------------------------------------------------------------
26588 Get message buffer
26589 -----------------------------------------------------------------------*/
26590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26591 sizeof(updateScanParams),
26592 &pSendBuffer, &usDataOffset, &usSendSize))||
26593 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26594 {
26595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026596 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026597 pwdiUpdateScanParams);
26598 WDI_ASSERT(0);
26599 return WDI_STATUS_E_FAILURE;
26600 }
26601
26602 //
26603 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26604 //
26605
26606 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26607 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26608
26609 updateScanParams.ucChannelCount =
26610 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26611 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26612 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26613 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26614
26615 wpalMemoryCopy( updateScanParams.aChannels,
26616 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26617 updateScanParams.ucChannelCount);
26618
26619
26620 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26621 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26622 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26623 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26624 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26625
26626 wpalMemoryCopy( pSendBuffer+usDataOffset,
26627 &updateScanParams,
26628 sizeof(updateScanParams));
26629
26630 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26631 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26632
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026633 /*Set the output values*/
26634 *ppSendBuffer = pSendBuffer;
26635 *pSize = usSendSize;
26636
26637 return WDI_STATUS_SUCCESS;
26638}
26639
26640/**
26641 @brief Process Update Scan Params function
26642
26643 @param pWDICtx: pointer to the WLAN DAL context
26644 pEventData: pointer to the event information structure
26645
26646 @see
26647 @return Result of the function call
26648*/
26649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026650WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026651(
Jeff Johnson295189b2012-06-20 16:38:30 -070026652 WDI_ControlBlockType* pWDICtx,
26653 WDI_EventInfoType* pEventData
26654)
26655{
26656 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26657 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026658 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026660 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026661
26662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026664 -------------------------------------------------------------------------*/
26665 if (( NULL == pEventData ) ||
26666 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26667 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26668 {
26669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026673 }
26674
26675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26676 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026677
26678 //
26679 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26680 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026681 if ( pWDICtx->wlanVersion.revision < 1 )
26682 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026683 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026684 &pSendBuffer, &usSendSize);
26685 }
26686 else
26687 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026688 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26689 &pSendBuffer, &usSendSize);
26690 }
26691
26692 if(WDI_STATUS_SUCCESS != wdiStatus)
26693 {
26694 //memory allocation failed
26695 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026696 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026697
Jeff Johnson295189b2012-06-20 16:38:30 -070026698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026699 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026701 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026702 wdiUpdateScanParamsCb, pEventData->pUserData,
26703 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026704}
26705
26706/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026707 @brief Process Update Channel Params function
26708
26709 @param pWDICtx: pointer to the WLAN DAL context
26710 pEventData: pointer to the event information structure
26711
26712 @see
26713 @return Result of the function call
26714*/
26715WDI_Status
26716WDI_ProcessUpdateChannelParamsReq
26717(
26718 WDI_ControlBlockType* pWDICtx,
26719 WDI_EventInfoType* pEventData
26720)
26721{
26722 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26723 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26724 wpt_uint8* pSendBuffer = NULL;
26725 wpt_uint16 usDataOffset = 0;
26726 wpt_uint16 usSendSize = 0;
26727 tUpdateChannelReqType *updateChannelParams;
26728 wpt_uint32 usUpdateChanParamSize;
26729 wpt_uint8 num_channels = 0;
26730
26731 /*-------------------------------------------------------------------------
26732 Sanity check
26733 -------------------------------------------------------------------------*/
26734 if (( NULL == pEventData ) ||
26735 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26736 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26737 {
26738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26739 "%s: Invalid parameters", __func__);
26740 WDI_ASSERT(0);
26741 return WDI_STATUS_E_FAILURE;
26742 }
26743 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026744 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026745
26746 /*-----------------------------------------------------------------------
26747 Get message buffer
26748 -----------------------------------------------------------------------*/
26749 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26750 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26751 &pSendBuffer, &usDataOffset, &usSendSize))||
26752 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26753 {
26754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26755 "Unable to get send buffer in Update Channel Params req %p",
26756 pwdiUpdateChanListParams);
26757 WDI_ASSERT(0);
26758 return WDI_STATUS_E_FAILURE;
26759 }
26760 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26761
26762 updateChannelParams->numChan = num_channels;
26763 wpalMemoryCopy(&updateChannelParams->chanParam,
26764 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26765 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26766
26767 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26768 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26769
26770 /*-------------------------------------------------------------------------
26771 Send Update channel request to fw
26772 -------------------------------------------------------------------------*/
26773 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26774 wdiUpdateChanParamsCb, pEventData->pUserData,
26775 WDI_UPDATE_CHAN_RESP);
26776}
26777
26778/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026779 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026780
26781 @param pWDICtx: pointer to the WLAN DAL context
26782 pEventData: pointer to the event information structure
26783
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 @see
26785 @return Result of the function call
26786*/
26787WDI_Status
26788WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026789(
Jeff Johnson295189b2012-06-20 16:38:30 -070026790 WDI_ControlBlockType* pWDICtx,
26791 WDI_EventInfoType* pEventData
26792)
26793{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026794 WDI_LowLevelIndType wdiInd;
26795 tpPrefNetwFoundParams pNetwFoundParams;
26796 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026797
26798
26799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026801 -------------------------------------------------------------------------*/
26802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26803 ( NULL == pEventData->pEventData ))
26804 {
26805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 }
26810
26811 /*-------------------------------------------------------------------------
26812 Extract indication and send it to UMAC
26813 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026814 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26815
26816 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26817 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26818 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26819
26820 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26821 {
26822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26823 "%s: fail to allocate memory", __func__);
26824 return WDI_STATUS_MEM_FAILURE;
26825 }
26826
26827 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26828 (pNetwFoundParams->ssId.length < 32 )?
26829 pNetwFoundParams->ssId.length : 32;
26830 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26831 pNetwFoundParams->ssId.ssId,
26832 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26833 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26834 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26835 pNetwFoundParams->frameLength;
26836 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26837 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26838 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026839
26840 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026841 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026842
Jeff Johnson295189b2012-06-20 16:38:30 -070026843 // DEBUG
26844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026845 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026847 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026848 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026849 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026850 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26851
ltimariub77f24b2013-01-24 18:54:33 -080026852 if ( pWDICtx->wdiLowLevelIndCB )
26853 {
26854 /*Notify UMAC*/
26855 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026857
26858 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026859}
26860
26861/**
26862 @brief Process PNO Rsp function (called when a
26863 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026864
26865 @param pWDICtx: pointer to the WLAN DAL context
26866 pEventData: pointer to the event information structure
26867
Jeff Johnson295189b2012-06-20 16:38:30 -070026868 @see
26869 @return Result of the function call
26870*/
26871WDI_Status
26872WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026873(
Jeff Johnson295189b2012-06-20 16:38:30 -070026874 WDI_ControlBlockType* pWDICtx,
26875 WDI_EventInfoType* pEventData
26876)
26877{
26878 WDI_Status wdiStatus;
26879 eHalStatus halStatus;
26880 WDI_PNOScanCb wdiPNOScanCb = NULL;
26881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26882
26883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026885 -------------------------------------------------------------------------*/
26886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26887 ( NULL == pEventData->pEventData ))
26888 {
26889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026893 }
26894
26895
Jeff Johnsone7245742012-09-05 17:12:55 -070026896 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026897
26898 /*-------------------------------------------------------------------------
26899 Extract response and send it to UMAC
26900 -------------------------------------------------------------------------*/
26901 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026902 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026903
26904 /*Notify UMAC*/
26905 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26906
Jeff Johnsone7245742012-09-05 17:12:55 -070026907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026908}/*WDI_ProcessSetPreferredNetworkRsp*/
26909
26910/**
26911 @brief Process RSSI Filter Rsp function (called when a
26912 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026913
26914 @param pWDICtx: pointer to the WLAN DAL context
26915 pEventData: pointer to the event information structure
26916
Jeff Johnson295189b2012-06-20 16:38:30 -070026917 @see
26918 @return Result of the function call
26919*/
26920WDI_Status
26921WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026922(
Jeff Johnson295189b2012-06-20 16:38:30 -070026923 WDI_ControlBlockType* pWDICtx,
26924 WDI_EventInfoType* pEventData
26925)
26926{
26927 WDI_Status wdiStatus;
26928 eHalStatus halStatus;
26929 WDI_RssiFilterCb wdiRssiFilterCb;
26930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26931
26932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026934 -------------------------------------------------------------------------*/
26935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26936 ( NULL == pEventData->pEventData ))
26937 {
26938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026942 }
26943
Jeff Johnsone7245742012-09-05 17:12:55 -070026944 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026945
26946 /*-------------------------------------------------------------------------
26947 Extract response and send it to UMAC
26948 -------------------------------------------------------------------------*/
26949 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026950 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026951
26952 /*Notify UMAC*/
26953 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26954
Jeff Johnsone7245742012-09-05 17:12:55 -070026955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026956}/*WDI_ProcessSetRssiFilterRsp*/
26957
26958/**
26959 @brief Process Update Scan Params Rsp function (called when a
26960 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026961
26962 @param pWDICtx: pointer to the WLAN DAL context
26963 pEventData: pointer to the event information structure
26964
Jeff Johnson295189b2012-06-20 16:38:30 -070026965 @see
26966 @return Result of the function call
26967*/
26968WDI_Status
26969WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026970(
Jeff Johnson295189b2012-06-20 16:38:30 -070026971 WDI_ControlBlockType* pWDICtx,
26972 WDI_EventInfoType* pEventData
26973)
26974{
26975 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026976 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026977 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026978 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26980
26981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 -------------------------------------------------------------------------*/
26984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26985 ( NULL == pEventData->pEventData ))
26986 {
26987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026991 }
26992
26993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026994 "%s: Process UPD scan params ptr : %p",
26995 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026996
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026998
26999 /*-------------------------------------------------------------------------
27000 Extract response and send it to UMAC
27001 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027002 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27003 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027004 sizeof(halUpdScanParams.status));
27005
27006 uStatus = halUpdScanParams.status;
27007
27008 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027009 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027010
27011 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027013
Jeff Johnsone7245742012-09-05 17:12:55 -070027014 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027015
27016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027017 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 halUpdScanParams.status);
27019
27020 /*Notify UMAC*/
27021 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27022
Jeff Johnsone7245742012-09-05 17:12:55 -070027023 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027024}
27025#endif // FEATURE_WLAN_SCAN_PNO
27026
27027#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027029WDI_8023MulticastListReq
27030(
27031 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27032 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27033 void* pUserData
27034)
27035{
27036 WDI_EventInfoType wdiEventData;
27037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27038
27039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027040 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027041
27042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027044 ------------------------------------------------------------------------*/
27045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27046 {
27047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27048 "WDI API call before module is initialized - Fail request");
27049
Jeff Johnsone7245742012-09-05 17:12:55 -070027050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 }
27052
27053 /*------------------------------------------------------------------------
27054 Fill in Event data and post to the Main FSM
27055 ------------------------------------------------------------------------*/
27056 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027057 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027059 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027060 wdiEventData.pUserData = pUserData;
27061
27062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27063}
27064
Jeff Johnsone7245742012-09-05 17:12:55 -070027065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027066WDI_ReceiveFilterSetFilterReq
27067(
27068 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27069 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27070 void* pUserData
27071)
27072{
27073 WDI_EventInfoType wdiEventData;
27074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27075
27076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027077 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027078
27079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027081 ------------------------------------------------------------------------*/
27082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27083 {
27084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27085 "WDI API call before module is initialized - Fail request");
27086
Jeff Johnsone7245742012-09-05 17:12:55 -070027087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027088 }
27089
27090 /*------------------------------------------------------------------------
27091 Fill in Event data and post to the Main FSM
27092 ------------------------------------------------------------------------*/
27093 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027094 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27095 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027096 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27097 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027098 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027099 wdiEventData.pUserData = pUserData;
27100
27101
27102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27103}
27104
Jeff Johnsone7245742012-09-05 17:12:55 -070027105WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027106WDI_FilterMatchCountReq
27107(
27108 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27109 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27110 void* pUserData
27111)
27112{
27113 WDI_EventInfoType wdiEventData;
27114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27115
27116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027117 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027118
27119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027121 ------------------------------------------------------------------------*/
27122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27123 {
27124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27125 "WDI API call before module is initialized - Fail request");
27126
Jeff Johnsone7245742012-09-05 17:12:55 -070027127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 }
27129
27130 /*------------------------------------------------------------------------
27131 Fill in Event data and post to the Main FSM
27132 ------------------------------------------------------------------------*/
27133 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027134 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027136 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 wdiEventData.pUserData = pUserData;
27138
27139
27140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27141}
27142
Jeff Johnsone7245742012-09-05 17:12:55 -070027143WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027144WDI_ReceiveFilterClearFilterReq
27145(
27146 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27147 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27148 void* pUserData
27149)
27150{
27151 WDI_EventInfoType wdiEventData;
27152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27153
27154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027155 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027156
27157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027159 ------------------------------------------------------------------------*/
27160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27161 {
27162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27163 "WDI API call before module is initialized - Fail request");
27164
Jeff Johnsone7245742012-09-05 17:12:55 -070027165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027166 }
27167
27168 /*------------------------------------------------------------------------
27169 Fill in Event data and post to the Main FSM
27170 ------------------------------------------------------------------------*/
27171 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027172 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027173 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027174 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027175 wdiEventData.pUserData = pUserData;
27176
27177
27178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27179}
27180
27181/**
27182 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027183
27184 @param pWDICtx: pointer to the WLAN DAL context
27185 pEventData: pointer to the event information structure
27186
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 @see
27188 @return Result of the function call
27189*/
27190WDI_Status
27191WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027192(
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 WDI_ControlBlockType* pWDICtx,
27194 WDI_EventInfoType* pEventData
27195)
27196{
27197 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27198 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 wpt_uint16 usDataOffset = 0;
27201 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027202 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027203 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027204 wpt_uint8 ucCurrentBSSSesIdx = 0;
27205 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027206
27207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027208 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027209
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027210 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27211 if( NULL == pRcvFltMcAddrListType )
27212 {
27213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27214 "Failed to alloc in WDI_Process8023MulticastListReq");
27215 return WDI_STATUS_E_FAILURE;
27216 }
27217
Jeff Johnson295189b2012-06-20 16:38:30 -070027218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027220 -------------------------------------------------------------------------*/
27221 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027222 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27226 {
27227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027228 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027229 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027231 return WDI_STATUS_E_FAILURE;
27232 }
27233
27234 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27235 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27236 &pBSSSes);
27237 if ( NULL == pBSSSes )
27238 {
27239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027240 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027241 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027243 }
27244
27245 /*-----------------------------------------------------------------------
27246 Get message buffer
27247 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27249 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027250 sizeof(tHalRcvFltMcAddrListType),
27251 &pSendBuffer, &usDataOffset, &usSendSize))||
27252 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27253 {
27254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27255 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027256 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 pEventData, pwdiFltPktSetMcListReqParamsType,
27258 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027259 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027262 }
27263
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027264 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027265 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027266 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027268 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27270 sizeof(tSirMacAddr));
27271 }
27272
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027273 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027274 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027275 pRcvFltMcAddrListType,
27276 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027277
27278 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027279 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027280
27281
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027282 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027284 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027286 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027287 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027288 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027289}
27290
27291/**
27292 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027293
27294 @param pWDICtx: pointer to the WLAN DAL context
27295 pEventData: pointer to the event information structure
27296
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 @see
27298 @return Result of the function call
27299*/
27300WDI_Status
27301WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027302(
Jeff Johnson295189b2012-06-20 16:38:30 -070027303 WDI_ControlBlockType* pWDICtx,
27304 WDI_EventInfoType* pEventData
27305)
27306{
27307 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27308 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 wpt_uint16 usDataOffset = 0;
27311 wpt_uint16 usSendSize = 0;
27312 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027313 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027314 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027315 wpt_uint8 ucCurrentBSSSesIdx = 0;
27316 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027317 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27318 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027319
27320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027321 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027322
27323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027325 -------------------------------------------------------------------------*/
27326 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027327 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027328 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027329 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027330 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27331 {
27332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027335 return WDI_STATUS_E_FAILURE;
27336 }
27337
27338 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27339 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27340 &pBSSSes);
27341 if ( NULL == pBSSSes )
27342 {
27343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027344 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 }
27347
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027348 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27349 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027351 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27352 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27353 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27354
27355 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27356 usSessRcvPktFilterCfgSize);
27357
27358 if(NULL == pSessRcvPktFilterCfg)
27359 {
27360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27361 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027362 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027363 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027364 WDI_ASSERT(0);
27365 return WDI_STATUS_E_FAILURE;
27366 }
27367
27368 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27369
27370 /*-----------------------------------------------------------------------
27371 Get message buffer
27372 -----------------------------------------------------------------------*/
27373
27374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27375 usSessRcvPktFilterCfgSize,
27376 &pSendBuffer, &usDataOffset, &usSendSize))||
27377 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27378 {
27379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27380 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027381 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027382 pEventData, pwdiSetRcvPktFilterReqInfo,
27383 wdiReceiveFilterSetFilterCb);
27384 WDI_ASSERT(0);
27385 wpalMemoryFree(pSessRcvPktFilterCfg);
27386 return WDI_STATUS_E_FAILURE;
27387 }
27388
27389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027390 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027391 usSendSize,pSessRcvPktFilterCfg);
27392
27393 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27394 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27395 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27396 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27397
27398 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27399
27400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27401 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27402 pSessRcvPktFilterCfg->filterType);
27403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27404 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27405 pSessRcvPktFilterCfg->coleasceTime);
27406
27407 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27408 {
27409 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27410 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27411 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27412 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27413 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27414 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27415 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27416 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27417
27418 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27419 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27420 8);
27421 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27422 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27423 8);
27424
27425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027426 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027427 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27428 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27429
27430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027431 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027432 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27433 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27434
27435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027436 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027437 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27438 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27439 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27440 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27441 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27442 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27443
27444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027445 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027446 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27447 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27448 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27449 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27450 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27451 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27452 }
27453
27454 wpalMemoryCopy( pSendBuffer+usDataOffset,
27455 pSessRcvPktFilterCfg,
27456 usSessRcvPktFilterCfgSize);
27457
27458
27459 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27460 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27461
27462 wpalMemoryFree(pSessRcvPktFilterCfg);
27463
27464 }
27465 /*If SLM_SESSIONIZATION is not supported then do this */
27466 else
27467 {
27468 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27469 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27470 * sizeof(tHalRcvPktFilterParams));
27471
27472 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 usRcvPktFilterCfgSize);
27474
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027475 if(NULL == pRcvPktFilterCfg)
27476 {
27477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27478 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027479 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027480 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027481 WDI_ASSERT(0);
27482 return WDI_STATUS_E_FAILURE;
27483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027485 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027486
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 /*-----------------------------------------------------------------------
27488 Get message buffer
27489 -----------------------------------------------------------------------*/
27490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027491 usRcvPktFilterCfgSize,
27492 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027493 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27494 {
27495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027496 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027497 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027498 pEventData, pwdiSetRcvPktFilterReqInfo,
27499 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027500 WDI_ASSERT(0);
27501 wpalMemoryFree(pRcvPktFilterCfg);
27502 return WDI_STATUS_E_FAILURE;
27503 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027504
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 usSendSize,usRcvPktFilterCfgSize);
27508
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027509 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27510 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27511 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27512 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027513
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027515 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027516 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027518 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027519 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027520
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027521 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27522 {
27523 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27524 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27525 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27526 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27527 pRcvPktFilterCfg->paramsData[i].dataOffset =
27528 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27529 pRcvPktFilterCfg->paramsData[i].dataLength =
27530 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027532 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027533 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27534 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027535 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027536 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27537 8);
27538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027540 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027541 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27543
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027545 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027546 pRcvPktFilterCfg->paramsData[i].dataOffset,
27547 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027548
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027550 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027551 pRcvPktFilterCfg->paramsData[i].compareData[0],
27552 pRcvPktFilterCfg->paramsData[i].compareData[1],
27553 pRcvPktFilterCfg->paramsData[i].compareData[2],
27554 pRcvPktFilterCfg->paramsData[i].compareData[3],
27555 pRcvPktFilterCfg->paramsData[i].compareData[4],
27556 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027557
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027559 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027560 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27561 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27562 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27563 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27564 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27565 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027567
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027568 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027569 pRcvPktFilterCfg,
27570 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027571
27572
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027573 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27574 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027575
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027577 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027578 wpalMemoryFree(pRcvPktFilterCfg);
27579 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027581 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027585 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027586}
27587
27588/**
27589 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027590
27591 @param pWDICtx: pointer to the WLAN DAL context
27592 pEventData: pointer to the event information structure
27593
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 @see
27595 @return Result of the function call
27596*/
27597WDI_Status
27598WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027599(
Jeff Johnson295189b2012-06-20 16:38:30 -070027600 WDI_ControlBlockType* pWDICtx,
27601 WDI_EventInfoType* pEventData
27602)
27603{
27604 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27605 NULL;
27606 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27607 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027608 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027609 wpt_uint16 usDataOffset = 0;
27610 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027611 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27612 wpt_uint8 ucCurrentBSSSesIdx = 0;
27613 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027614
27615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027616 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027617
27618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027620 -------------------------------------------------------------------------*/
27621 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027622 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027623 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027624 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027625 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27626 {
27627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027631 }
27632
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027633 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27634 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27635 &pBSSSes);
27636 if ( NULL == pBSSSes )
27637 {
27638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027639 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027640 return WDI_STATUS_E_FAILURE;
27641 }
27642
Jeff Johnson295189b2012-06-20 16:38:30 -070027643 /*-----------------------------------------------------------------------
27644 Get message buffer
27645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27647 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027649 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027650 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 {
27652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27653 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027654 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27656 wdiFilterMatchCountCb);
27657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027659 }
27660
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027661 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27662 wpalMemoryCopy( pSendBuffer+usDataOffset,
27663 &rcvFltPktMatchCntReqParam,
27664 sizeof(rcvFltPktMatchCntReqParam));
27665
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 //
27667 // Don't need to fill send buffer other than header
27668 //
27669 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027670 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027671
27672
27673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027674 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027675 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27677 wdiFilterMatchCountCb,
27678 pEventData->pUserData,
27679 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027680}
27681
27682/**
27683 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027684
27685 @param pWDICtx: pointer to the WLAN DAL context
27686 pEventData: pointer to the event information structure
27687
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 @see
27689 @return Result of the function call
27690*/
27691WDI_Status
27692WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027693(
Jeff Johnson295189b2012-06-20 16:38:30 -070027694 WDI_ControlBlockType* pWDICtx,
27695 WDI_EventInfoType* pEventData
27696)
Jeff Johnsone7245742012-09-05 17:12:55 -070027697{
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27699 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027700 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027701 wpt_uint16 usDataOffset = 0;
27702 wpt_uint16 usSendSize = 0;
27703 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027704 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027705 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027706
27707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027708 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027709
27710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027712 -------------------------------------------------------------------------*/
27713 if (( NULL == pEventData ) ||
27714 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27715 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027716 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27718 {
27719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027722 return WDI_STATUS_E_FAILURE;
27723 }
27724
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027725 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027726 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27727 &pBSSSes);
27728 if ( NULL == pBSSSes )
27729 {
27730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027731 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 }
27734
27735 /*-----------------------------------------------------------------------
27736 Get message buffer
27737 -----------------------------------------------------------------------*/
27738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027739 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027740 sizeof(tHalRcvFltPktClearParam),
27741 &pSendBuffer, &usDataOffset, &usSendSize))||
27742 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27743 {
27744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27745 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027746 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027747 pEventData, pwdiRcvFltPktClearReqParamsType,
27748 wdiRcvFltPktClearFilterCb);
27749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027751 }
27752
27753
27754 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027755 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027756 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027757 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027758
Jeff Johnsone7245742012-09-05 17:12:55 -070027759 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27760 wpalMemoryCopy( pSendBuffer+usDataOffset,
27761 &rcvFltPktClearParam,
27762 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027763
27764 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027765 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027766
27767
27768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027769 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027772 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027773 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027774}
27775
27776/**
27777 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027778
27779 @param pWDICtx: pointer to the WLAN DAL context
27780 pEventData: pointer to the event information structure
27781
Jeff Johnson295189b2012-06-20 16:38:30 -070027782 @see
27783 @return Result of the function call
27784*/
27785WDI_Status
27786WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027787(
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 WDI_ControlBlockType* pWDICtx,
27789 WDI_EventInfoType* pEventData
27790)
27791{
Jeff Johnson295189b2012-06-20 16:38:30 -070027792 eHalStatus halStatus;
27793 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027794 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27795 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27797
27798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027799 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027800
27801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 -------------------------------------------------------------------------*/
27804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27805 ( NULL == pEventData->pEventData ))
27806 {
27807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027811 }
27812
Jeff Johnsone7245742012-09-05 17:12:55 -070027813 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027814
27815 /*-------------------------------------------------------------------------
27816 Extract response and send it to UMAC
27817 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027818 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27819 {
27820 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27821 pEventData->pEventData,
27822 sizeof(halRcvFltPktSetMcListRsp));
27823
27824 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27825 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27826 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27827 halRcvFltPktSetMcListRsp.bssIdx;
27828 }
27829 else
27830 {
27831 halStatus = *((eHalStatus*)pEventData->pEventData);
27832 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27833 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027834
27835 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027836 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027837
Jeff Johnsone7245742012-09-05 17:12:55 -070027838 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027839}
27840
27841/**
27842 @brief Process Set Rsp function (called when a
27843 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027844
27845 @param pWDICtx: pointer to the WLAN DAL context
27846 pEventData: pointer to the event information structure
27847
Jeff Johnson295189b2012-06-20 16:38:30 -070027848 @see
27849 @return Result of the function call
27850*/
27851WDI_Status
27852WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027853(
Jeff Johnson295189b2012-06-20 16:38:30 -070027854 WDI_ControlBlockType* pWDICtx,
27855 WDI_EventInfoType* pEventData
27856)
27857{
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 eHalStatus halStatus;
27859 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027860 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27861 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27863
27864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027865 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027866
27867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027869 -------------------------------------------------------------------------*/
27870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27871 ( NULL == pEventData->pEventData ))
27872 {
27873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027877 }
27878
27879 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027880 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027881
27882 /*-------------------------------------------------------------------------
27883 Extract response and send it to UMAC
27884 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027885 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27886 {
27887 wpalMemoryCopy( &halSetPktFilterRspParams,
27888 pEventData->pEventData,
27889 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027890
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027891 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27892 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27893 }
27894 else
27895 {
27896 halStatus = *((eHalStatus*)pEventData->pEventData);
27897 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27898 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027899 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027900 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027901
Jeff Johnsone7245742012-09-05 17:12:55 -070027902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027903}
27904
27905/**
27906 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027907
27908 @param pWDICtx: pointer to the WLAN DAL context
27909 pEventData: pointer to the event information structure
27910
Jeff Johnson295189b2012-06-20 16:38:30 -070027911 @see
27912 @return Result of the function call
27913*/
27914WDI_Status
27915WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027916(
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 WDI_ControlBlockType* pWDICtx,
27918 WDI_EventInfoType* pEventData
27919)
27920{
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027922 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027923 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27924 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027925
27926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27927
27928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027929 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027930
27931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027933 -------------------------------------------------------------------------*/
27934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27935 ( NULL == pEventData->pEventData ))
27936 {
27937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027941 }
27942
Jeff Johnsone7245742012-09-05 17:12:55 -070027943 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027944
27945 /*-------------------------------------------------------------------------
27946 Extract response and send it to UMAC
27947 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027948 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27949 {
27950 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27951 pEventData->pEventData,
27952 sizeof(halRcvFltrPktMatachRsp));
27953
27954 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27955 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27956 }
27957 else
27958 {
27959 halStatus = *((eHalStatus*)pEventData->pEventData);
27960 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027962
27963 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027964 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027965
Jeff Johnsone7245742012-09-05 17:12:55 -070027966 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027967}
27968
27969/**
27970 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027971
27972 @param pWDICtx: pointer to the WLAN DAL context
27973 pEventData: pointer to the event information structure
27974
Jeff Johnson295189b2012-06-20 16:38:30 -070027975 @see
27976 @return Result of the function call
27977*/
27978WDI_Status
27979WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027980(
Jeff Johnson295189b2012-06-20 16:38:30 -070027981 WDI_ControlBlockType* pWDICtx,
27982 WDI_EventInfoType* pEventData
27983)
27984{
Jeff Johnson295189b2012-06-20 16:38:30 -070027985 eHalStatus halStatus;
27986 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027987 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27988 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27990
27991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027992 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027993
27994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027996 -------------------------------------------------------------------------*/
27997 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27998 ( NULL == pEventData->pEventData ))
27999 {
28000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028004 }
28005
28006 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028007 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028008
28009 /*-------------------------------------------------------------------------
28010 Extract response and send it to UMAC
28011 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028012 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28013 {
28014 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28015 pEventData->pEventData,
28016 sizeof(halRcvFltPktClearRspMsg));
28017
28018 wdiRcvFltPktClearRspParamsType.wdiStatus =
28019 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28020 wdiRcvFltPktClearRspParamsType.bssIdx =
28021 halRcvFltPktClearRspMsg.bssIdx;
28022 }
28023 else
28024 {
28025 halStatus = *((eHalStatus*)pEventData->pEventData);
28026 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28027 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028028
28029 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028030 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028031
Jeff Johnsone7245742012-09-05 17:12:55 -070028032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028033}
28034#endif // WLAN_FEATURE_PACKET_FILTERING
28035
28036/**
28037 @brief Process Shutdown Rsp function
28038 There is no shutdown response comming from HAL
28039 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028040
Jeff Johnson295189b2012-06-20 16:38:30 -070028041 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028042 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028043
28044 @see
28045 @return Result of the function call
28046*/
28047WDI_Status
28048WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028049(
Jeff Johnson295189b2012-06-20 16:38:30 -070028050 WDI_ControlBlockType* pWDICtx,
28051 WDI_EventInfoType* pEventData
28052)
28053{
28054 /*There is no shutdown response comming from HAL - function just kept for
28055 simmetry */
28056 WDI_ASSERT(0);
28057 return WDI_STATUS_SUCCESS;
28058}/*WDI_ProcessShutdownRsp*/
28059
28060/**
28061 @brief WDI_SetPowerParamsReq
28062
Jeff Johnsone7245742012-09-05 17:12:55 -070028063 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028064 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028065
Jeff Johnson295189b2012-06-20 16:38:30 -070028066 wdiPowerParamsCb: callback for passing back the response
28067 of the Set Power Params operation received from the
28068 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028069
Jeff Johnson295189b2012-06-20 16:38:30 -070028070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028071 callback
28072
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 @return Result of the function call
28074*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028076WDI_SetPowerParamsReq
28077(
28078 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28079 WDI_SetPowerParamsCb wdiPowerParamsCb,
28080 void* pUserData
28081)
28082{
28083 WDI_EventInfoType wdiEventData;
28084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28085
28086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028088 ------------------------------------------------------------------------*/
28089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28090 {
28091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28092 "WDI API call before module is initialized - Fail request");
28093
Jeff Johnsone7245742012-09-05 17:12:55 -070028094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028095 }
28096
28097 /*------------------------------------------------------------------------
28098 Fill in Event data and post to the Main FSM
28099 ------------------------------------------------------------------------*/
28100 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028101 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028102 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028103 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028104 wdiEventData.pUserData = pUserData;
28105
28106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28107}/*WDI_SetPowerParamsReq*/
28108
28109/**
28110 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028111
28112 @param pWDICtx: pointer to the WLAN DAL context
28113 pEventData: pointer to the event information structure
28114
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 @see
28116 @return Result of the function call
28117*/
28118WDI_Status
28119WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028120(
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 WDI_ControlBlockType* pWDICtx,
28122 WDI_EventInfoType* pEventData
28123)
28124{
28125 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28126 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028128 wpt_uint16 usDataOffset = 0;
28129 wpt_uint16 usSendSize = 0;
28130 tSetPowerParamsType powerParams;
28131
28132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028134 -------------------------------------------------------------------------*/
28135 if (( NULL == pEventData ) ||
28136 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28137 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28138 {
28139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028143 }
28144
28145 /*-----------------------------------------------------------------------
28146 Get message buffer
28147 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028149 sizeof(powerParams),
28150 &pSendBuffer, &usDataOffset, &usSendSize))||
28151 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28152 {
28153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028154 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028158 }
28159
28160 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028161 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28163
28164 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028165 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028166 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28167
28168 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028169 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028170 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28171
28172 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028174 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28175
28176 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028177 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028178 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28179
28180 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028181 powerParams.uBETInterval =
28182 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028183
Yue Mac24062f2013-05-13 17:01:29 -070028184 /* MAX LI for modulated DTIM */
28185 powerParams.uMaxLIModulatedDTIM =
28186 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028187
28188 wpalMemoryCopy( pSendBuffer+usDataOffset,
28189 &powerParams,
28190 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028191
28192 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028193 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028194
28195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028196 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028197 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028198 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28199 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028200}
28201
28202/**
28203 @brief Process Power Params Rsp function (called when a
28204 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028205
28206 @param pWDICtx: pointer to the WLAN DAL context
28207 pEventData: pointer to the event information structure
28208
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 @see
28210 @return Result of the function call
28211*/
28212WDI_Status
28213WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028214(
Jeff Johnson295189b2012-06-20 16:38:30 -070028215 WDI_ControlBlockType* pWDICtx,
28216 WDI_EventInfoType* pEventData
28217)
28218{
28219 WDI_Status wdiStatus;
28220 eHalStatus halStatus;
28221 WDI_SetPowerParamsCb wdiPowerParamsCb;
28222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28223
28224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028226 -------------------------------------------------------------------------*/
28227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28228 ( NULL == pEventData->pEventData ))
28229 {
28230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028234 }
28235
Jeff Johnsone7245742012-09-05 17:12:55 -070028236 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028237
28238 /*-------------------------------------------------------------------------
28239 Extract response and send it to UMAC
28240 -------------------------------------------------------------------------*/
28241 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028242 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028243
28244 /*Notify UMAC*/
28245 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28246
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028248}/*WDI_ProcessSetPowerParamsRsp*/
28249
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028250/**
28251 @brief WDI_dhcpStartInd
28252 Host will send an event to the FW when DHCP is initiated
28253
28254 @param
28255 WDI_DHCPInd: DHCP Indication
28256 @see
28257 @return Result of the function call
28258*/
28259WDI_Status
28260WDI_dhcpStartInd
28261(
28262 WDI_DHCPInd *wdiDHCPInd
28263)
28264{
28265 WDI_EventInfoType wdiEventData;
28266
28267 /*------------------------------------------------------------------------
28268 Sanity Check
28269 ------------------------------------------------------------------------*/
28270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28271 {
28272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28273 "WDI API call before module is initialized - Fail request");
28274
28275 return WDI_STATUS_E_NOT_ALLOWED;
28276 }
28277
28278 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28279 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028280 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028281 wdiEventData.pCBfnc = NULL;
28282 wdiEventData.pUserData = NULL;
28283
28284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28285}
28286
28287
28288/**
28289 @brief WDI_dhcpStopInd
28290 Host will send an event to the FW when DHCP is completed
28291
28292 @param
28293 WDI_DHCPInd: DHCP Indication
28294 @see
28295 @return Result of the function call
28296*/
28297WDI_Status
28298WDI_dhcpStopInd
28299(
28300 WDI_DHCPInd *wdiDHCPInd
28301)
28302{
28303 WDI_EventInfoType wdiEventData;
28304
28305 /*------------------------------------------------------------------------
28306 Sanity Check
28307 ------------------------------------------------------------------------*/
28308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28309 {
28310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28311 "WDI API call before module is initialized - Fail request");
28312
28313 return WDI_STATUS_E_NOT_ALLOWED;
28314 }
28315
28316 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28317 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028318 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028319 wdiEventData.pCBfnc = NULL;
28320 wdiEventData.pUserData = NULL;
28321
28322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28323}
28324
28325
28326/**
28327 @brief Process DHCP Start Indication message and post it to HAL
28328
28329 @param pWDICtx: pointer to the WLAN DAL context
28330 pEventData: pointer to the event information structure
28331
28332 @see
28333 @return Result of the function call
28334*/
28335WDI_Status
28336WDI_ProcessDHCPStartInd
28337(
28338 WDI_ControlBlockType* pWDICtx,
28339 WDI_EventInfoType* pEventData
28340)
28341{
28342 wpt_uint8* pSendBuffer = NULL;
28343 wpt_uint16 usDataOffset = 0;
28344 wpt_uint16 usSendSize = 0;
28345 wpt_uint16 usLen = 0;
28346 WDI_DHCPInd* pwdiDHCPInd = NULL;
28347 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028348 WDI_Status wdiStatus;
28349
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028350
28351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28352
28353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28354 "%s", __func__);
28355
28356 /*-------------------------------------------------------------------------
28357 Sanity check
28358 -------------------------------------------------------------------------*/
28359 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28360 {
28361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28362 "%s: Invalid parameters", __func__);
28363 WDI_ASSERT(0);
28364 return WDI_STATUS_E_FAILURE;
28365 }
28366 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28367 /*-----------------------------------------------------------------------
28368 Get message buffer
28369 -----------------------------------------------------------------------*/
28370
28371 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28372 WDI_DHCP_START_IND,
28373 sizeof(tDHCPInfo),
28374 &pSendBuffer, &usDataOffset, &usSendSize))||
28375 ( usSendSize < (usDataOffset + usLen )))
28376 {
28377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28378 "Unable to get send buffer in DHCP Start req %p ",
28379 pEventData);
28380 WDI_ASSERT(0);
28381 return WDI_STATUS_E_FAILURE;
28382 }
28383
Sandeep Puligillaee789512014-02-13 19:14:52 +053028384 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028385 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28386 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28387 WDI_MAC_ADDR_LEN);
28388
28389 pWDICtx->pReqStatusUserData = NULL;
28390 pWDICtx->pfncRspCB = NULL;
28391
28392 /*-------------------------------------------------------------------------
28393 Send DHCP Start Indication to HAL
28394 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028395 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28396 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028397}/*WDI_ProcessDHCPStartInd*/
28398
28399/**
28400 @brief Process DHCP Stop indication message and post it to HAL
28401
28402 @param pWDICtx: pointer to the WLAN DAL context
28403 pEventData: pointer to the event information structure
28404
28405 @see
28406 @return Result of the function call
28407*/
28408WDI_Status
28409WDI_ProcessDHCPStopInd
28410(
28411 WDI_ControlBlockType* pWDICtx,
28412 WDI_EventInfoType* pEventData
28413)
28414{
28415 wpt_uint8* pSendBuffer = NULL;
28416 wpt_uint16 usDataOffset = 0;
28417 wpt_uint16 usSendSize = 0;
28418 wpt_uint16 usLen = 0;
28419 WDI_DHCPInd* pwdiDHCPInd = NULL;
28420 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028421 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028422
28423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28424
28425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28426 "%s", __func__);
28427
28428 /*-------------------------------------------------------------------------
28429 Sanity check
28430 -------------------------------------------------------------------------*/
28431
28432 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28433 {
28434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28435 "%s: Invalid parameters", __func__);
28436 WDI_ASSERT(0);
28437 return WDI_STATUS_E_FAILURE;
28438 }
28439 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28440 /*-----------------------------------------------------------------------
28441 Get message buffer
28442 -----------------------------------------------------------------------*/
28443
28444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28445 WDI_DHCP_STOP_IND,
28446 sizeof(tDHCPInfo),
28447 &pSendBuffer, &usDataOffset, &usSendSize))||
28448 ( usSendSize < (usDataOffset + usLen )))
28449 {
28450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28451 "Unable to get send buffer in DHCP Start req %p ",
28452 pEventData);
28453 WDI_ASSERT(0);
28454 return WDI_STATUS_E_FAILURE;
28455 }
28456
Sandeep Puligillaee789512014-02-13 19:14:52 +053028457 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028458 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28459 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28460 WDI_MAC_ADDR_LEN);
28461
28462 pWDICtx->pReqStatusUserData = NULL;
28463 pWDICtx->pfncRspCB = NULL;
28464 /*-------------------------------------------------------------------------
28465 Send DHCP Stop indication to HAL
28466 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028467 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28468 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028469
28470}/*WDI_ProcessDHCPStopInd*/
28471
28472
Jeff Johnson295189b2012-06-20 16:38:30 -070028473#ifdef WLAN_FEATURE_GTK_OFFLOAD
28474/**
28475 @brief WDI_GTKOffloadReq will be called when the upper MAC
28476 wants to set GTK Rekey Counter while in power save. Upon
28477 the call of this API the WLAN DAL will pack and send a
28478 HAL GTK offload request message to the lower RIVA
28479 sub-system if DAL is in state STARTED.
28480
28481 In state BUSY this request will be queued. Request won't
28482 be allowed in any other state.
28483
28484 WDI_PostAssocReq must have been called.
28485
28486 @param pwdiGtkOffloadParams: the GTK offload as specified
28487 by the Device Interface
28488
28489 wdiGtkOffloadCb: callback for passing back the response
28490 of the GTK offload operation received from the device
28491
28492 pUserData: user data will be passed back with the
28493 callback
28494
28495 @see WDI_PostAssocReq
28496 @return Result of the function call
28497*/
28498WDI_Status
28499WDI_GTKOffloadReq
28500(
28501 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28502 WDI_GtkOffloadCb wdiGtkOffloadCb,
28503 void* pUserData
28504)
28505{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028506 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28508
28509 /*------------------------------------------------------------------------
28510 Sanity Check
28511 ------------------------------------------------------------------------*/
28512 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28513 {
28514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28515 "WDI API call before module is initialized - Fail request");
28516
28517 return WDI_STATUS_E_NOT_ALLOWED;
28518 }
28519
28520 /*------------------------------------------------------------------------
28521 Fill in Event data and post to the Main FSM
28522 ------------------------------------------------------------------------*/
28523 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28524 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028525 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028526 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28527 wdiEventData.pUserData = pUserData;
28528
28529 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28530}
28531
28532
28533/**
28534 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28535 MAC wants to get GTK Rekey Counter while in power save.
28536 Upon the call of this API the WLAN DAL will pack and
28537 send a HAL GTK offload request message to the lower RIVA
28538 sub-system if DAL is in state STARTED.
28539
28540 In state BUSY this request will be queued. Request won't
28541 be allowed in any other state.
28542
28543 WDI_PostAssocReq must have been called.
28544
28545 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28546 Information Message as specified by the
28547 Device Interface
28548
28549 wdiGtkOffloadGetInfoCb: callback for passing back the
28550 response of the GTK offload operation received from the
28551 device
28552
28553 pUserData: user data will be passed back with the
28554 callback
28555
28556 @see WDI_PostAssocReq
28557 @return Result of the function call
28558*/
28559WDI_Status
28560WDI_GTKOffloadGetInfoReq
28561(
28562 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28563 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28564 void* pUserData
28565)
28566{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028567 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28569
28570 /*------------------------------------------------------------------------
28571 Sanity Check
28572 ------------------------------------------------------------------------*/
28573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28574 {
28575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28576 "WDI API call before module is initialized - Fail request");
28577
28578 return WDI_STATUS_E_NOT_ALLOWED;
28579 }
28580
28581 /*------------------------------------------------------------------------
28582 Fill in Event data and post to the Main FSM
28583 ------------------------------------------------------------------------*/
28584 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28585 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28586 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28587 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28588 wdiEventData.pUserData = pUserData;
28589
28590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28591}
28592
28593
28594/**
28595 @brief Process set GTK Offload Request function
28596
28597 @param pWDICtx: pointer to the WLAN DAL context
28598 pEventData: pointer to the event information structure
28599
28600 @see
28601 @return Result of the function call
28602*/
28603WDI_Status
28604WDI_ProcessGTKOffloadReq
28605(
28606 WDI_ControlBlockType* pWDICtx,
28607 WDI_EventInfoType* pEventData
28608)
28609{
28610 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28611 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28612 wpt_uint8* pSendBuffer = NULL;
28613 wpt_uint16 usDataOffset = 0;
28614 wpt_uint16 usSendSize = 0;
28615 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028616 wpt_uint8 ucCurrentSessionId = 0;
28617 WDI_BSSSessionType* pBSSSes = NULL;
28618
Jeff Johnson295189b2012-06-20 16:38:30 -070028619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28620
28621 /*-------------------------------------------------------------------------
28622 Sanity check
28623 -------------------------------------------------------------------------*/
28624 if (( NULL == pEventData ) ||
28625 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28626 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28627 {
28628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028631 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028632 }
28633
28634 /*-----------------------------------------------------------------------
28635 Get message buffer
28636 -----------------------------------------------------------------------*/
28637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28638 sizeof(gtkOffloadReqParams),
28639 &pSendBuffer, &usDataOffset, &usSendSize))||
28640 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28641 {
28642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028643 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028644 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28645 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028646 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028647 }
28648
28649 //
28650 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28651 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028652 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28653 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28654 &pBSSSes);
28655 if ( NULL == pBSSSes )
28656 {
28657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028658 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028659 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028660 }
28661
28662 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28663
Jeff Johnson295189b2012-06-20 16:38:30 -070028664 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28665 // Copy KCK
28666 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28667 // Copy KEK
28668 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28669 // Copy KeyReplayCounter
28670 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28671
28672 wpalMemoryCopy( pSendBuffer+usDataOffset,
28673 &gtkOffloadReqParams,
28674 sizeof(gtkOffloadReqParams));
28675
28676 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28677 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28678
28679 /*-------------------------------------------------------------------------
28680 Send Get STA Request to HAL
28681 -------------------------------------------------------------------------*/
28682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28683 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028684
28685fail:
28686 // Release the message buffer so we don't leak
28687 wpalMemoryFree(pSendBuffer);
28688
28689failRequest:
28690 //WDA should have failure check to avoid the memory leak
28691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028692}
28693
28694
28695/**
28696 @brief Process GTK Offload Get Information Request function
28697
28698 @param pWDICtx: pointer to the WLAN DAL context
28699 pEventData: pointer to the event information structure
28700
28701 @see
28702 @return Result of the function call
28703*/
28704WDI_Status
28705WDI_ProcessGTKOffloadGetInfoReq
28706(
28707 WDI_ControlBlockType* pWDICtx,
28708 WDI_EventInfoType* pEventData
28709)
28710{
28711 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28712 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28713 wpt_uint8* pSendBuffer = NULL;
28714 wpt_uint16 usDataOffset = 0;
28715 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028716 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28717 wpt_uint8 ucCurrentSessionId = 0;
28718 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028719
28720 /*-------------------------------------------------------------------------
28721 Sanity check
28722 -------------------------------------------------------------------------*/
28723 if (( NULL == pEventData ) ||
28724 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28725 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28726 {
28727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028729 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028730 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028731 }
28732
28733 /*-----------------------------------------------------------------------
28734 Get message buffer
28735 -----------------------------------------------------------------------*/
28736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028737 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028738 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028739 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028740 {
28741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028742 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028743 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28744 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028745 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028746 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028747 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28748 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28749 &pBSSSes);
28750 if ( NULL == pBSSSes )
28751 {
28752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028753 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028754 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028755 }
28756 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028757
28758 //
28759 // Don't need to fill send buffer other than header
28760 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028761 wpalMemoryCopy( pSendBuffer+usDataOffset,
28762 &halGtkOffloadGetInfoReqParams,
28763 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028764
28765 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28766 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28767
28768 /*-------------------------------------------------------------------------
28769 Send Get STA Request to HAL
28770 -------------------------------------------------------------------------*/
28771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28772 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028773fail:
28774 // Release the message buffer so we don't leak
28775 wpalMemoryFree(pSendBuffer);
28776
28777failRequest:
28778 //WDA should have failure check to avoid the memory leak
28779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028780}
28781
28782/**
28783 @brief Process host offload Rsp function (called when a
28784 response is being received over the bus from HAL)
28785
28786 @param pWDICtx: pointer to the WLAN DAL context
28787 pEventData: pointer to the event information structure
28788
28789 @see
28790 @return Result of the function call
28791*/
28792WDI_Status
28793WDI_ProcessGtkOffloadRsp
28794(
28795 WDI_ControlBlockType* pWDICtx,
28796 WDI_EventInfoType* pEventData
28797)
28798{
Jeff Johnson295189b2012-06-20 16:38:30 -070028799 eHalStatus halStatus;
28800 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028801 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28802 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028803
28804 /*-------------------------------------------------------------------------
28805 Sanity check
28806 -------------------------------------------------------------------------*/
28807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28808 ( NULL == pEventData->pEventData))
28809 {
28810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028812 WDI_ASSERT(0);
28813 return WDI_STATUS_E_FAILURE;
28814 }
28815
Wilson Yang00256342013-10-10 23:13:38 -070028816 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28817
Jeff Johnson295189b2012-06-20 16:38:30 -070028818 /*-------------------------------------------------------------------------
28819 Extract response and send it to UMAC
28820 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028821 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28822 {
28823 wpalMemoryCopy( &halGtkOffloadRspParams,
28824 pEventData->pEventData,
28825 sizeof(halGtkOffloadRspParams));
28826
28827 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028828 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028829 wdiGtkOffloadRsparams.bssIdx =
28830 halGtkOffloadRspParams.bssIdx;
28831 }
28832 else
28833 {
28834 halStatus = *((eHalStatus*)pEventData->pEventData);
28835 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028837
28838 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028839 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028840
28841 return WDI_STATUS_SUCCESS;
28842}
28843
28844/**
28845 @brief Process GTK Offload Get Information Response function
28846
28847 @param pWDICtx: pointer to the WLAN DAL context
28848 pEventData: pointer to the event information structure
28849
28850 @see
28851 @return Result of the function call
28852*/
28853WDI_Status
28854WDI_ProcessGTKOffloadGetInfoRsp
28855(
28856 WDI_ControlBlockType* pWDICtx,
28857 WDI_EventInfoType* pEventData
28858)
28859{
Jeff Johnson295189b2012-06-20 16:38:30 -070028860 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028861 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028862 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28863 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028865
Jeff Johnson295189b2012-06-20 16:38:30 -070028866
28867 /*-------------------------------------------------------------------------
28868 Sanity check
28869 -------------------------------------------------------------------------*/
28870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28871 ( NULL == pEventData->pEventData ))
28872 {
28873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028875 WDI_ASSERT(0);
28876 return WDI_STATUS_E_FAILURE;
28877 }
28878
Wilson Yang00256342013-10-10 23:13:38 -070028879 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28880
28881 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028882 Extract response and send it to UMAC
28883 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028884 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28885 {
28886 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28887 pEventData->pEventData,
28888 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028889
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028890 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028891 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028892 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28893 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28894 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28895 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28896 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28897 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28898 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28899 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028900
28901 wpalMutexAcquire(&pWDICtx->wptMutex);
28902 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28903 &pBSSSes);
28904
28905 if ( NULL == pBSSSes )
28906 {
28907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28908 "Association sequence for this BSS does not exist or "
28909 "association no longer in progress - mysterious HAL response");
28910 wpalMutexRelease(&pWDICtx->wptMutex);
28911 return WDI_STATUS_E_NOT_ALLOWED;
28912 }
28913
28914 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28915 sizeof (wpt_macAddr));
28916 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028917 }
28918 else
28919 {
28920 halStatus = *((eHalStatus*)pEventData->pEventData);
28921 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28922 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028923 /*Notify UMAC*/
28924 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28925 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028926 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028927
28928 return WDI_STATUS_SUCCESS;
28929}
28930#endif // WLAN_FEATURE_GTK_OFFLOAD
28931
28932#ifdef WLAN_WAKEUP_EVENTS
28933WDI_Status
28934WDI_ProcessWakeReasonInd
28935(
28936 WDI_ControlBlockType* pWDICtx,
28937 WDI_EventInfoType* pEventData
28938)
28939{
28940 WDI_LowLevelIndType *pWdiInd;
28941 tpWakeReasonParams pWakeReasonParams;
28942 wpt_uint32 allocSize = 0;
28943
28944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028945 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028946
28947 /*-------------------------------------------------------------------------
28948 Sanity check
28949 -------------------------------------------------------------------------*/
28950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28951 ( NULL == pEventData->pEventData ))
28952 {
28953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028955 WDI_ASSERT( 0 );
28956 return WDI_STATUS_E_FAILURE;
28957 }
28958
28959 /*-------------------------------------------------------------------------
28960 Extract indication and send it to UMAC
28961 -------------------------------------------------------------------------*/
28962 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28963
28964 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28965
28966 //Allocate memory for WDI_WakeReasonIndType structure
28967 pWdiInd = wpalMemoryAllocate(allocSize) ;
28968
28969 if(NULL == pWdiInd)
28970 {
28971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028972 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028973 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028974 WDI_ASSERT(0);
28975 return WDI_STATUS_E_FAILURE;
28976 }
28977
28978 wpalMemoryZero(pWdiInd, allocSize);
28979
28980 /* Fill in the indication parameters*/
28981 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28982 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28983 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28984 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28985 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28986 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28987 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28988 &(pWakeReasonParams->aDataStart[0]),
28989 pWakeReasonParams->ulStoredDataLen);
28990
ltimariub77f24b2013-01-24 18:54:33 -080028991
28992 if ( pWDICtx->wdiLowLevelIndCB )
28993 {
28994 /*Notify UMAC*/
28995 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28996 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028997
28998 //Free memory allocated for WDI_WakeReasonIndType structure
28999 wpalMemoryFree(pWdiInd);
29000
29001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029002 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029003
29004 return WDI_STATUS_SUCCESS;
29005}
29006#endif // WLAN_WAKEUP_EVENTS
29007
29008void WDI_GetWcnssCompiledApiVersion
29009(
29010 WDI_WlanVersionType *pWcnssApiVersion
29011)
29012{
29013 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29014 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29015 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29016 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29017}
29018
29019/**
29020 @brief Process Set TM Level Rsp function (called when a
29021 response is being received over the bus from HAL)
29022
29023 @param pWDICtx: pointer to the WLAN DAL context
29024 pEventData: pointer to the event information structure
29025
29026 @see
29027 @return Result of the function call
29028*/
29029WDI_Status
29030WDI_ProcessSetTmLevelRsp
29031(
29032 WDI_ControlBlockType* pWDICtx,
29033 WDI_EventInfoType* pEventData
29034)
29035{
29036 WDI_Status wdiStatus;
29037 eHalStatus halStatus;
29038 WDI_SetTmLevelCb wdiSetTmLevelCb;
29039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29040
29041 /*-------------------------------------------------------------------------
29042 Sanity check
29043 -------------------------------------------------------------------------*/
29044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29045 ( NULL == pEventData->pEventData ))
29046 {
29047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029049 WDI_ASSERT(0);
29050 return WDI_STATUS_E_FAILURE;
29051 }
29052
29053 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29054
29055 /*-------------------------------------------------------------------------
29056 Extract response and send it to UMAC
29057 -------------------------------------------------------------------------*/
29058 halStatus = *((eHalStatus*)pEventData->pEventData);
29059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29060
29061 /*Notify UMAC*/
29062 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29063
29064 return WDI_STATUS_SUCCESS;
29065}/*WDI_ProcessSetTmLevelRsp*/
29066
29067/**
29068 @brief Process Set Thermal Mitigation level Changed request
29069
29070 @param pWDICtx: pointer to the WLAN DAL context
29071 pEventData: pointer to the event information structure
29072
29073 @see
29074 @return Result of the function call
29075*/
29076WDI_Status
29077WDI_ProcessSetTmLevelReq
29078(
29079 WDI_ControlBlockType* pWDICtx,
29080 WDI_EventInfoType* pEventData
29081)
29082{
29083 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29084 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29085 wpt_uint8* pSendBuffer = NULL;
29086 wpt_uint16 usDataOffset = 0;
29087 wpt_uint16 usSendSize = 0;
29088 tSetThermalMitgationType halTmMsg;
29089
29090 /*-------------------------------------------------------------------------
29091 Sanity check
29092 -------------------------------------------------------------------------*/
29093 if (( NULL == pEventData ) ||
29094 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29095 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29096 {
29097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029099 WDI_ASSERT(0);
29100 return WDI_STATUS_E_FAILURE;
29101 }
29102
29103 /*-----------------------------------------------------------------------
29104 Get message buffer
29105 -----------------------------------------------------------------------*/
29106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29107 sizeof(halTmMsg),
29108 &pSendBuffer, &usDataOffset, &usSendSize))||
29109 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29110 {
29111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029112 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029113 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29114 WDI_ASSERT(0);
29115 return WDI_STATUS_E_FAILURE;
29116 }
29117
29118 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29119 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29120
29121 wpalMemoryCopy( pSendBuffer+usDataOffset,
29122 &halTmMsg,
29123 sizeof(halTmMsg));
29124
29125 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29126 pWDICtx->pfncRspCB = NULL;
29127 /*-------------------------------------------------------------------------
29128 Send Get STA Request to HAL
29129 -------------------------------------------------------------------------*/
29130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29131 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29132}
29133
29134/* Fill the value from the global features enabled array to the global capabilities
29135 * bitmap struct
29136 */
29137static void
29138FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29139{
29140 wpt_int8 i;
29141 for (i=0; i<len; i++)
29142 {
29143 setFeatCaps(fCaps, enabledFeat[i]);
29144 }
29145}
29146
29147/**
29148 @brief WDI_featureCapsExchangeReq
29149 Post feature capability bitmap exchange event.
29150 Host will send its own capability to FW in this req and
29151 expect FW to send its capability back as a bitmap in Response
29152
29153 @param
29154
29155 wdiFeatureCapsExchangeCb: callback called on getting the response.
29156 It is kept to mantain similarity between WDI reqs and if needed, can
29157 be used in future. Currently, It is set to NULL
29158
29159 pUserData: user data will be passed back with the
29160 callback
29161
29162 @see
29163 @return Result of the function call
29164*/
29165WDI_Status
29166WDI_featureCapsExchangeReq
29167(
29168 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29169 void* pUserData
29170)
29171{
29172 WDI_EventInfoType wdiEventData;
29173 wpt_int32 fCapsStructSize;
29174
29175 /*------------------------------------------------------------------------
29176 Sanity Check
29177 ------------------------------------------------------------------------*/
29178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29179 {
29180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29181 "WDI API call before module is initialized - Fail request");
29182
29183 return WDI_STATUS_E_NOT_ALLOWED;
29184 }
29185
29186 /* Allocate memory separately for global variable carrying FW caps */
29187 fCapsStructSize = sizeof(tWlanFeatCaps);
29188 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29189 if ( NULL == gpHostWlanFeatCaps )
29190 {
29191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029192 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029193 WDI_ASSERT(0);
29194 return WDI_STATUS_MEM_FAILURE;
29195 }
29196
29197 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29198
29199 /*------------------------------------------------------------------------
29200 Fill in Event data and post to the Main FSM
29201 ------------------------------------------------------------------------*/
29202 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29203 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029205 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029206 gpHostWlanFeatCaps->featCaps[0],
29207 gpHostWlanFeatCaps->featCaps[1],
29208 gpHostWlanFeatCaps->featCaps[2],
29209 gpHostWlanFeatCaps->featCaps[3]
29210 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29212 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029213 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29214 wdiEventData.pEventData = gpHostWlanFeatCaps;
29215 wdiEventData.uEventDataSize = fCapsStructSize;
29216 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29217 wdiEventData.pUserData = pUserData;
29218
29219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29220}
29221
29222/**
Yathish9f22e662012-12-10 14:21:35 -080029223 @brief Disable Active mode offload in Host
29224
29225 @param void
29226 @see
29227 @return void
29228*/
29229void
29230WDI_disableCapablityFeature(wpt_uint8 feature_index)
29231{
29232 supportEnabledFeatures[feature_index] = 0;
29233 return;
29234}
29235
29236/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029237 @brief Process Host-FW Capability Exchange Request function
29238
29239 @param pWDICtx: pointer to the WLAN DAL context
29240 pEventData: pointer to the event information structure
29241
29242 @see
29243 @return Result of the function call
29244*/
29245WDI_Status
29246WDI_ProcessFeatureCapsExchangeReq
29247(
29248 WDI_ControlBlockType* pWDICtx,
29249 WDI_EventInfoType* pEventData
29250)
29251{
29252 wpt_uint8* pSendBuffer = NULL;
29253 wpt_uint16 usDataOffset = 0;
29254 wpt_uint16 usSendSize = 0;
29255 wpt_uint16 usLen = 0;
29256
29257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29258
29259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029260 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029261
29262 /*-------------------------------------------------------------------------
29263 Sanity check
29264 -------------------------------------------------------------------------*/
29265 /* Call back function is NULL since not required for cap exchange req */
29266 if (( NULL == pEventData ) ||
29267 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29268 {
29269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029271 WDI_ASSERT(0);
29272 return WDI_STATUS_E_FAILURE;
29273 }
29274
29275 /*-----------------------------------------------------------------------
29276 Get message buffer
29277 -----------------------------------------------------------------------*/
29278 usLen = sizeof(tWlanFeatCaps);
29279
29280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29281 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29282 usLen,
29283 &pSendBuffer, &usDataOffset, &usSendSize))||
29284 ( usSendSize < (usDataOffset + usLen )))
29285 {
29286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029287 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029288 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29289 WDI_ASSERT(0);
29290 return WDI_STATUS_E_FAILURE;
29291 }
29292
29293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029294 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029295 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29296 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29297 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29298 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29299 );
29300
29301 /* Copy host caps after the offset in the send buffer */
29302 wpalMemoryCopy( pSendBuffer+usDataOffset,
29303 (tWlanFeatCaps *)pEventData->pEventData,
29304 usLen);
29305
29306 /*-------------------------------------------------------------------------
29307 Send Start Request to HAL
29308 -------------------------------------------------------------------------*/
29309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29310 (WDI_StartRspCb)pEventData->pCBfnc,
29311 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29312
29313}/*WDI_ProcessFeatureCapsExchangeReq*/
29314
29315/**
29316 @brief Process Host-FW Capability Exchange Response function
29317
29318 @param pWDICtx: pointer to the WLAN DAL context
29319 pEventData: pointer to the event information structure
29320
29321 @see
29322 @return Result of the function call
29323*/
29324WDI_Status
29325WDI_ProcessFeatureCapsExchangeRsp
29326(
29327 WDI_ControlBlockType* pWDICtx,
29328 WDI_EventInfoType* pEventData
29329)
29330{
29331 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29332 wpt_int32 fCapsStructSize;
29333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29334
29335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029336 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029337
29338 /*-------------------------------------------------------------------------
29339 Sanity check
29340 -------------------------------------------------------------------------*/
29341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29342 ( NULL == pEventData->pEventData ))
29343 {
29344 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029347 WDI_ASSERT(0);
29348 return WDI_STATUS_E_FAILURE;
29349 }
29350
29351 /* Allocate memory separately for global variable carrying FW caps */
29352 fCapsStructSize = sizeof(tWlanFeatCaps);
29353 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29354 if ( NULL == gpFwWlanFeatCaps )
29355 {
29356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029357 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029358 WDI_ASSERT(0);
29359 return WDI_STATUS_MEM_FAILURE;
29360 }
29361
29362 /*-------------------------------------------------------------------------
29363 Unpack HAL Response Message - the header was already extracted by the
29364 main Response Handling procedure
29365 -------------------------------------------------------------------------*/
29366 /*-------------------------------------------------------------------------
29367 Extract response and send it to UMAC
29368 -------------------------------------------------------------------------*/
29369
29370 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29371 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029373 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029374 gpFwWlanFeatCaps->featCaps[0],
29375 gpFwWlanFeatCaps->featCaps[1],
29376 gpFwWlanFeatCaps->featCaps[2],
29377 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029378 );
29379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29380 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029381 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29382
29383 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29384 if (wdiFeatureCapsExchangeCb != NULL)
29385 wdiFeatureCapsExchangeCb(NULL, NULL);
29386
29387 return WDI_STATUS_SUCCESS;
29388}
29389
Mohit Khanna4a70d262012-09-11 16:30:12 -070029390#ifdef WLAN_FEATURE_11AC
29391WDI_Status
29392WDI_ProcessUpdateVHTOpModeRsp
29393(
29394 WDI_ControlBlockType* pWDICtx,
29395 WDI_EventInfoType* pEventData
29396)
29397{
29398 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29399 WDI_Status wdiStatus;
29400 eHalStatus halStatus;
29401
29402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29403
29404 /*-------------------------------------------------------------------------
29405 Sanity check
29406 -------------------------------------------------------------------------*/
29407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29408 ( NULL == pEventData->pEventData))
29409 {
29410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029411 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029412 WDI_ASSERT(0);
29413 return WDI_STATUS_E_FAILURE;
29414 }
29415 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29416
29417 /*-------------------------------------------------------------------------
29418 Extract response and send it to UMAC
29419 -------------------------------------------------------------------------*/
29420 halStatus = *((eHalStatus*)pEventData->pEventData);
29421 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29422
29423 /*Notify UMAC*/
29424 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29425
29426 return WDI_STATUS_SUCCESS;
29427}
29428#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029429/**
29430 @brief WDI_getHostWlanFeatCaps
29431 WDI API that returns whether the feature passed to it as enum value in
29432 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29433 variable storing host capability bitmap to find this. This can be used by
29434 other moduels to decide certain things like call different APIs based on
29435 whether a particular feature is supported.
29436
29437 @param
29438
29439 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29440
29441 @see
29442 @return
29443 0 - if the feature is NOT supported in host
29444 any non-zero value - if the feature is SUPPORTED in host.
29445*/
29446wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29447{
29448 wpt_uint8 featSupported = 0;
29449 if (gpHostWlanFeatCaps != NULL)
29450 {
29451 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29452 }
29453 else
29454 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029456 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029457 }
29458 return featSupported;
29459}
29460
29461/**
29462 @brief WDI_getFwWlanFeatCaps
29463 WDI API that returns whether the feature passed to it as enum value in
29464 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29465 variable storing host capability bitmap to find this. This can be used by
29466 other moduels to decide certain things like call different APIs based on
29467 whether a particular feature is supported.
29468
29469 @param
29470
29471 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29472 in wlan_hal_msg.h.
29473
29474 @see
29475 @return
29476 0 - if the feature is NOT supported in FW
29477 any non-zero value - if the feature is SUPPORTED in FW.
29478*/
29479wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29480{
29481 wpt_uint8 featSupported = 0;
29482 if (gpFwWlanFeatCaps != NULL)
29483 {
29484 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29485 }
29486 else
29487 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029489 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029490 }
29491 return featSupported;
29492}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029493
29494#ifdef WLAN_FEATURE_11AC
29495WDI_Status
29496WDI_ProcessUpdateVHTOpModeReq
29497(
29498 WDI_ControlBlockType* pWDICtx,
29499 WDI_EventInfoType* pEventData
29500)
29501{
29502 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29503 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29504 wpt_uint8* pSendBuffer = NULL;
29505 wpt_uint16 usDataOffset = 0;
29506 wpt_uint16 usSendSize = 0;
29507
29508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29509
29510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029511 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029512
29513 /*-------------------------------------------------------------------------
29514 Sanity check
29515 -------------------------------------------------------------------------*/
29516 if (( NULL == pEventData ) ||
29517 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29518 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29519 {
29520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029521 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029522 WDI_ASSERT(0);
29523 return WDI_STATUS_E_FAILURE;
29524 }
29525
29526 /*-----------------------------------------------------------------------
29527 Get message buffer
29528 -----------------------------------------------------------------------*/
29529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29530 sizeof(WDI_UpdateVHTOpMode),
29531 &pSendBuffer, &usDataOffset, &usSendSize))||
29532 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29533 {
29534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29535 "Unable to get send buffer in update vht opMode req");
29536 WDI_ASSERT(0);
29537 return WDI_STATUS_E_FAILURE;
29538 }
29539
29540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029541 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029542
29543 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29544 sizeof(WDI_UpdateVHTOpMode));
29545
29546 /*-------------------------------------------------------------------------
29547 Send Start Request to HAL
29548 -------------------------------------------------------------------------*/
29549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29550 wdiVHTOpModeCb,
29551 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29552
29553}
29554
29555WDI_Status
29556WDI_UpdateVHTOpModeReq
29557(
29558 WDI_UpdateVHTOpMode *pData,
29559 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29560 void* pUserData
29561)
29562{
29563 WDI_EventInfoType wdiEventData;
29564
29565 /*------------------------------------------------------------------------
29566 Sanity Check
29567 ------------------------------------------------------------------------*/
29568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29569 {
29570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29571 "WDI API call before module is initialized - Fail request");
29572
29573 return WDI_STATUS_E_NOT_ALLOWED;
29574 }
29575
29576 /*------------------------------------------------------------------------
29577 Fill in Event data and post to the Main FSM
29578 ------------------------------------------------------------------------*/
29579 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29580 wdiEventData.pEventData = pData;
29581 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29582 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29583 wdiEventData.pUserData = pUserData;
29584
29585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029586 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029587
29588 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29589
29590}
29591#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029592
29593/**
29594 @brief WDI_TransportChannelDebug -
29595 Display DXE Channel debugging information
29596 User may request to display DXE channel snapshot
29597 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029598
Jeff Johnsonb88db982012-12-10 13:34:59 -080029599 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029600 @param debugFlags : Enable stall detect features
29601 defined by WPAL_DeviceDebugFlags
29602 These features may effect
29603 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029604 @see
29605 @return none
29606*/
29607void WDI_TransportChannelDebug
29608(
29609 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029610 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029611)
29612{
Mihir Shete40a55652014-03-02 14:14:47 +053029613 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029614 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029615}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029616/**
29617 @brief WDI_SsrTimerCB
29618 Callback function for SSR timer, if this is called then the graceful
29619 shutdown for Riva did not happen.
29620
29621 @param pUserData : user data to timer
29622
29623 @see
29624 @return none
29625*/
29626void
29627WDI_SsrTimerCB
29628(
29629 void *pUserData
29630)
29631{
29632 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29634
29635 if (NULL == pWDICtx )
29636 {
29637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029638 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029639 WDI_ASSERT(0);
29640 return;
29641 }
29642 wpalRivaSubystemRestart();
29643
29644 return;
29645
29646}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029647
29648/**
29649 @brief WDI_SetEnableSSR -
29650 This API is called to enable/disable SSR on WDI timeout.
29651
29652 @param enableSSR : enable/disable SSR
29653
29654 @see
29655 @return none
29656*/
29657void WDI_SetEnableSSR(wpt_boolean enableSSR)
29658{
29659 gWDICb.bEnableSSR = enableSSR;
29660}
Leo Chang9056f462013-08-01 19:21:11 -070029661
29662
29663#ifdef FEATURE_WLAN_LPHB
29664/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029665 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029666 This function will be invoked when FW detects low power
29667 heart beat failure
29668
29669 @param pWDICtx : wdi context
29670 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029671 @see
29672 @return Result of the function call
29673*/
29674WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029675WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029676(
29677 WDI_ControlBlockType* pWDICtx,
29678 WDI_EventInfoType* pEventData
29679)
29680{
29681 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029682 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29684
29685 /*-------------------------------------------------------------------------
29686 Sanity check
29687 -------------------------------------------------------------------------*/
29688 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29689 (NULL == pEventData->pEventData))
29690 {
29691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29692 "%s: Invalid parameters", __func__);
29693 WDI_ASSERT(0);
29694 return WDI_STATUS_E_FAILURE;
29695 }
29696
29697 /*-------------------------------------------------------------------------
29698 Extract indication and send it to UMAC
29699 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029700 wpalMemoryCopy(&lphbIndicationParam,
29701 pEventData->pEventData,
29702 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029703
Leo Changd9df8aa2013-09-26 13:32:26 -070029704 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029705 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029706 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029707 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029708 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029709 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029710 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029711 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029712 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029713 /*Notify UMAC*/
29714 if (pWDICtx->wdiLowLevelIndCB)
29715 {
29716 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29717 }
29718
29719 return WDI_STATUS_SUCCESS;
29720}
29721
29722/**
29723 @brief WDI_ProcessLphbCfgRsp -
29724 LPHB configuration response from FW
29725
29726 @param pWDICtx : wdi context
29727 pEventData : indication data
29728
29729 @see
29730 @return Result of the function call
29731*/
29732WDI_Status WDI_ProcessLphbCfgRsp
29733(
29734 WDI_ControlBlockType* pWDICtx,
29735 WDI_EventInfoType* pEventData
29736)
29737{
29738 WDI_Status wdiStatus;
29739 eHalStatus halStatus;
29740 WDI_LphbCfgCb wdiLphbCfgCb;
29741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29742
29743 /*-------------------------------------------------------------------------
29744 Sanity check
29745 -------------------------------------------------------------------------*/
29746 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29747 (NULL == pEventData->pEventData))
29748 {
29749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29750 "%s: Invalid parameters", __func__);
29751 WDI_ASSERT(0);
29752 return WDI_STATUS_E_FAILURE;
29753 }
29754
29755 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29756
29757 /*-------------------------------------------------------------------------
29758 Extract response and send it to UMAC
29759 -------------------------------------------------------------------------*/
29760 halStatus = *((eHalStatus*)pEventData->pEventData);
29761 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29762
29763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29764 "LPHB Cfg Rsp Return status %d", wdiStatus);
29765 /*Notify UMAC*/
29766 if (NULL != wdiLphbCfgCb)
29767 {
29768 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29769 }
29770
29771 return WDI_STATUS_SUCCESS;
29772}
29773
29774/**
29775 @brief WDI_ProcessLPHBConfReq -
29776 LPHB configuration request to FW
29777
29778 @param pWDICtx : wdi context
29779 pEventData : indication data
29780
29781 @see
29782 @return none
29783*/
29784WDI_Status WDI_ProcessLPHBConfReq
29785(
29786 WDI_ControlBlockType* pWDICtx,
29787 WDI_EventInfoType* pEventData
29788)
29789{
29790 WDI_LPHBReq *pLphbReqParams;
29791 WDI_Status wdiStatus;
29792 wpt_uint8* pSendBuffer = NULL;
29793 wpt_uint16 usDataOffset = 0;
29794 wpt_uint16 usSendSize = 0;
29795 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29797
29798 /*-------------------------------------------------------------------------
29799 Sanity check
29800 -------------------------------------------------------------------------*/
29801 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29802 {
29803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29804 "%s: Invalid parameters in Suspend ind",__func__);
29805 WDI_ASSERT(0);
29806 return WDI_STATUS_E_FAILURE;
29807 }
29808
29809 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29810
29811 /*-----------------------------------------------------------------------
29812 Get message buffer
29813 -----------------------------------------------------------------------*/
29814 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29815 WDI_LPHB_CFG_REQ,
29816 sizeof(tHalLowPowerHeartBeatReqMsg),
29817 &pSendBuffer, &usDataOffset, &usSendSize))||
29818 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29819 {
29820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29821 "Unable to get send buffer in LPHB Ind ");
29822 WDI_ASSERT(0);
29823 return WDI_STATUS_E_FAILURE;
29824 }
29825
29826 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29827 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29828
29829 halLphbReqRarams->lowPowerHeartBeatCmdType =
29830 (tANI_U16)(++pLphbReqParams->cmd);
29831 switch ((tANI_U16)pLphbReqParams->cmd)
29832 {
29833 case WDI_LPHB_SET_EN_PARAMS_INDID:
29834 halLphbReqRarams->sessionIdx =
29835 pLphbReqParams->params.lphbEnableReq.session;
29836 halLphbReqRarams->options.control.heartBeatEnable =
29837 pLphbReqParams->params.lphbEnableReq.enable;
29838 halLphbReqRarams->options.control.heartBeatType =
29839 pLphbReqParams->params.lphbEnableReq.item;
29840 break;
29841
29842 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29843 halLphbReqRarams->sessionIdx =
29844 pLphbReqParams->params.lphbTcpParamReq.session;
29845 halLphbReqRarams->options.tcpParams.timeOutSec =
29846 pLphbReqParams->params.lphbTcpParamReq.timeout;
29847 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29848 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29849 sizeof(v_U32_t));
29850 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29851 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29852 sizeof(v_U32_t));
29853
29854 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29855 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29856 WDI_MAC_ADDR_LEN);
29857
29858 halLphbReqRarams->options.tcpParams.hostPort =
29859 pLphbReqParams->params.lphbTcpParamReq.src_port;
29860 halLphbReqRarams->options.tcpParams.destPort =
29861 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029862 halLphbReqRarams->options.tcpParams.timePeriodSec =
29863 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29864 halLphbReqRarams->options.tcpParams.tcpSn =
29865 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029866 break;
29867
29868 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29869 halLphbReqRarams->sessionIdx =
29870 pLphbReqParams->params.lphbTcpFilterReq.session;
29871 halLphbReqRarams->options.tcpUdpFilter.offset =
29872 pLphbReqParams->params.lphbTcpFilterReq.offset;
29873 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29874 pLphbReqParams->params.lphbTcpFilterReq.length;
29875 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29876 pLphbReqParams->params.lphbTcpFilterReq.filter,
29877 WDI_LPHB_FILTER_LEN);
29878 break;
29879
29880 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29881 halLphbReqRarams->sessionIdx =
29882 pLphbReqParams->params.lphbUdpParamReq.session;
29883 halLphbReqRarams->options.udpParams.timeOutSec =
29884 pLphbReqParams->params.lphbUdpParamReq.timeout;
29885 halLphbReqRarams->options.udpParams.timePeriodSec =
29886 pLphbReqParams->params.lphbUdpParamReq.interval;
29887 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29888 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29889 sizeof(v_U32_t));
29890 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29891 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29892 sizeof(v_U32_t));
29893
29894 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29895 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29896 WDI_MAC_ADDR_LEN);
29897
29898 halLphbReqRarams->options.udpParams.hostPort =
29899 pLphbReqParams->params.lphbUdpParamReq.src_port;
29900 halLphbReqRarams->options.udpParams.destPort =
29901 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29902 break;
29903
29904 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29905 halLphbReqRarams->sessionIdx =
29906 pLphbReqParams->params.lphbUdpFilterReq.session;
29907 halLphbReqRarams->options.tcpUdpFilter.offset =
29908 pLphbReqParams->params.lphbUdpFilterReq.offset;
29909 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29910 pLphbReqParams->params.lphbUdpFilterReq.length;
29911 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29912 pLphbReqParams->params.lphbUdpFilterReq.filter,
29913 WDI_LPHB_FILTER_LEN);
29914 break;
29915
29916 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29917 /* NA */
29918 break;
29919
29920 default:
29921 break;
29922 }
29923
29924 /*-------------------------------------------------------------------------
29925 Send Suspend Request to HAL
29926 -------------------------------------------------------------------------*/
29927 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29928 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29929
29930 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29931 usSendSize, pWDICtx->pfncRspCB,
29932 pWDICtx->pReqStatusUserData,
29933 WDI_LPHB_CFG_RESP);
29934
29935 return wdiStatus;
29936}
29937
29938/**
29939 @brief WDI_LPHBConfReq -
29940 LPHB configuration request API
29941
29942 @param lphbconfParam : configuration parameter
29943 usrData : client context
29944 lphbCfgCb : callback function pointer
29945
29946 @see
29947 @return Success or fail status code
29948*/
29949WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29950 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29951{
29952 WDI_EventInfoType wdiEventData;
29953
29954 /*------------------------------------------------------------------------
29955 Sanity Check
29956 ------------------------------------------------------------------------*/
29957 if (eWLAN_PAL_FALSE == gWDIInitialized)
29958 {
29959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29960 "WDI API call before module is initialized - Fail request");
29961
29962 return WDI_STATUS_E_NOT_ALLOWED;
29963 }
29964
29965 /*------------------------------------------------------------------------
29966 Fill in Event data and post to the Main FSM
29967 ------------------------------------------------------------------------*/
29968 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29969 wdiEventData.pEventData = lphbconfParam;
29970 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29971 wdiEventData.pCBfnc = lphbCfgCb;
29972 wdiEventData.pUserData = usrData;
29973
29974 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29975}
29976#endif /* FEATURE_WLAN_LPHB */
29977
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029978/**
29979 @brief WDI_ProcessIbssPeerInactivityInd
29980 Process peer inactivity indication coming from HAL
29981
29982 @param pWDICtx: pointer to the WLAN DAL context
29983 pEventData: pointer to the event information structure
29984 @see
29985 @return Result of the function call
29986*/
29987WDI_Status
29988WDI_ProcessIbssPeerInactivityInd
29989(
29990 WDI_ControlBlockType* pWDICtx,
29991 WDI_EventInfoType* pEventData
29992)
29993{
29994 WDI_LowLevelIndType wdiInd;
29995 tIbssPeerInactivityIndMsg halIbssIndMsg;
29996
29997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29998
29999 /*-------------------------------------------------------------------------
30000 Sanity check
30001 -------------------------------------------------------------------------*/
30002 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30003 ( NULL == pEventData->pEventData ))
30004 {
30005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30006 "%s: Invalid parameters", __func__);
30007 WDI_ASSERT( 0 );
30008 return WDI_STATUS_E_FAILURE;
30009 }
30010
30011 /*-------------------------------------------------------------------------
30012 Extract indication and send it to UMAC
30013 -------------------------------------------------------------------------*/
30014 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30015 pEventData->pEventData,
30016 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30017
30018 /*Fill in the indication parameters*/
30019 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30020
30021 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30022 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30023
30024 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30025 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30026
30027 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30028 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30029 sizeof(tSirMacAddr));
30030
30031 /*Notify UMAC*/
30032 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30033
30034 return WDI_STATUS_SUCCESS;
30035
30036} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030037
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030038/**
30039*@brief WDI_RateUpdateInd will be called when the upper MAC
30040 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030041
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030042
30043 @param wdiRateUpdateIndParams:
30044
30045
30046 @see
30047 @return Result of the function call
30048*/
30049WDI_Status
30050WDI_RateUpdateInd
30051(
30052 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30053)
30054{
30055 WDI_EventInfoType wdiEventData;
30056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30057
30058 /*------------------------------------------------------------------------
30059 Sanity Check
30060 ------------------------------------------------------------------------*/
30061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30062 {
30063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30064 "WDI API call before module is initialized - Fail request");
30065
30066 return WDI_STATUS_E_NOT_ALLOWED;
30067 }
30068
30069 /*------------------------------------------------------------------------
30070 Fill in Event data and post to the Main FSM
30071 ------------------------------------------------------------------------*/
30072 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30073 wdiEventData.pEventData = wdiRateUpdateIndParams;
30074 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30075 wdiEventData.pCBfnc = NULL;
30076 wdiEventData.pUserData = NULL;
30077
30078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30079
30080}/* WDI_RateUpdateInd */
30081
30082/**
30083 @brief Process Rate Update Indication and post it to HAL
30084
30085 @param pWDICtx: pointer to the WLAN DAL context
30086 pEventData: pointer to the event information structure
30087
30088 @see
30089 @return Result of the function call
30090*/
30091WDI_Status
30092WDI_ProcessRateUpdateInd
30093(
30094 WDI_ControlBlockType* pWDICtx,
30095 WDI_EventInfoType* pEventData
30096)
30097{
30098 wpt_uint8* pSendBuffer = NULL;
30099 wpt_uint16 usDataOffset = 0;
30100 wpt_uint16 usSendSize = 0;
30101 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30102 tHalRateUpdateInd *pRateUpdateInd;
30103 WDI_Status wdiStatus;
30104
30105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30106
30107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30108 "%s", __func__);
30109
30110 /*-------------------------------------------------------------------------
30111 Sanity check
30112 -------------------------------------------------------------------------*/
30113 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30114 {
30115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30116 "%s: Invalid parameters", __func__);
30117 WDI_ASSERT(0);
30118 return WDI_STATUS_E_FAILURE;
30119 }
30120 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30121 /*-----------------------------------------------------------------------
30122 Get message buffer
30123 -----------------------------------------------------------------------*/
30124
30125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30126 WDI_RATE_UPDATE_IND,
30127 sizeof(tHalRateUpdateParams),
30128 &pSendBuffer, &usDataOffset, &usSendSize))||
30129 ( usSendSize < (usDataOffset +
30130 sizeof(tHalRateUpdateParams) )))
30131 {
30132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30133 "Unable to get send buffer in Rate Update Indication %p ",
30134 pEventData);
30135 WDI_ASSERT(0);
30136 return WDI_STATUS_E_FAILURE;
30137 }
30138
30139 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30140
30141 /* Copy the bssid */
30142 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30143 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30144
30145 /* Copy the tx flags */
30146 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30147 pwdiRateUpdateInd->ucastDataRateTxFlag;
30148 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30149 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30150 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30151 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30152 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30153 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30154
30155 /* Copy the tx rates */
30156 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30157 pwdiRateUpdateInd->ucastDataRate;
30158 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30159 pwdiRateUpdateInd->reliableMcastDataRate;
30160 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30161 pwdiRateUpdateInd->mcastDataRate24GHz;
30162 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30163 pwdiRateUpdateInd->mcastDataRate5GHz;
30164
30165 /*-------------------------------------------------------------------------
30166 Send Rate Update Indication to HAL
30167 -------------------------------------------------------------------------*/
30168 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30169 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30170
30171 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30172
30173 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30174 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30175
30176} /* WDI_ProcessRateUpdateInd */
30177
30178#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030179/**
30180 @brief Process stop batch indication from WDA
30181
30182 @param pWDICtx: pointer to the WLAN DAL context
30183 pEventData: pointer to the event information structure
30184
30185 @see
30186 @return Result of the function call
30187*/
30188WDI_Status
30189WDI_ProcessStopBatchScanInd
30190(
30191 WDI_ControlBlockType* pWDICtx,
30192 WDI_EventInfoType* pEventData
30193)
30194{
30195 wpt_uint8* pSendBuffer = NULL;
30196 wpt_uint16 usDataOffset = 0;
30197 wpt_uint16 usSendSize = 0;
30198 WDI_Status wdiStatus;
30199 tHalBatchScanStopIndParam *pHalInd = NULL;
30200 WDI_StopBatchScanIndType *pWdiInd = NULL;
30201
30202
30203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30204
30205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30206 "%s", __func__);
30207
30208 /*-------------------------------------------------------------------------
30209 Sanity check
30210 -------------------------------------------------------------------------*/
30211
30212 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30213 {
30214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30215 "%s: Invalid parameters", __func__);
30216 WDI_ASSERT(0);
30217 return WDI_STATUS_E_FAILURE;
30218 }
30219 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30220 /*-----------------------------------------------------------------------
30221 Get message buffer
30222 -----------------------------------------------------------------------*/
30223
30224 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30225 WDI_STOP_BATCH_SCAN_IND,
30226 sizeof(tHalBatchScanStopIndParam),
30227 &pSendBuffer, &usDataOffset, &usSendSize))||
30228 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30229 {
30230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30231 "Unable to get send buffer in stop batch scan ind %p ",
30232 pEventData);
30233 WDI_ASSERT(0);
30234 return WDI_STATUS_E_FAILURE;
30235 }
30236
30237 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30238 pHalInd->param = pWdiInd->param;
30239
30240 pWDICtx->pReqStatusUserData = NULL;
30241 pWDICtx->pfncRspCB = NULL;
30242 /*-------------------------------------------------------------------------
30243 Send Stop batch scan indication to HAL
30244 -------------------------------------------------------------------------*/
30245 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30246 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30247}
30248
30249/**
30250 @brief This API is called to trigger batch scan results from FW
30251
30252 @param pWDICtx: pointer to the WLAN DAL context
30253 pEventData: pointer to the event information structure
30254
30255 @see
30256 @return Result of the function call
30257*/
30258WDI_Status
30259WDI_ProcessTriggerBatchScanResultInd
30260(
30261 WDI_ControlBlockType* pWDICtx,
30262 WDI_EventInfoType* pEventData
30263)
30264{
30265 WDI_Status wdiStatus;
30266 wpt_uint8* pSendBuffer = NULL;
30267 wpt_uint16 usDataOffset = 0;
30268 wpt_uint16 usSendSize = 0;
30269 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30270 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30271
30272
30273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30274
30275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30276 "%s", __func__);
30277
30278 /*-------------------------------------------------------------------------
30279 Sanity check
30280 -------------------------------------------------------------------------*/
30281
30282 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30283 {
30284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30285 "%s: Invalid parameters", __func__);
30286 WDI_ASSERT(0);
30287 return WDI_STATUS_E_FAILURE;
30288 }
30289 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30290 /*-----------------------------------------------------------------------
30291 Get message buffer
30292 -----------------------------------------------------------------------*/
30293
30294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30295 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30296 sizeof(tHalBatchScanTriggerResultParam),
30297 &pSendBuffer, &usDataOffset, &usSendSize))||
30298 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30299 {
30300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30301 "Unable to get send buffer in stop batch scan ind %p ",
30302 pEventData);
30303 WDI_ASSERT(0);
30304 return WDI_STATUS_E_FAILURE;
30305 }
30306
30307 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30308 pHalInd->param = pWdiInd->param;
30309
30310 pWDICtx->pReqStatusUserData = NULL;
30311 pWDICtx->pfncRspCB = NULL;
30312 /*-------------------------------------------------------------------------
30313 Send trigger batch scan result indication to HAL
30314 -------------------------------------------------------------------------*/
30315 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30316 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30317}
30318
30319
30320/**
30321 @brief Process set batch scan response from FW
30322
30323 @param pWDICtx: pointer to the WLAN DAL context
30324 pEventData: pointer to the event information structure
30325
30326 @see
30327 @return Result of the function call
30328*/
30329WDI_Status
30330WDI_ProcessSetBatchScanRsp
30331(
30332 WDI_ControlBlockType* pWDICtx,
30333 WDI_EventInfoType* pEventData
30334)
30335{
30336 WDI_SetBatchScanCb wdiSetBatchScanCb;
30337 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30338
30339 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30341
30342 /*sanity check*/
30343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30344 ( NULL == pEventData->pEventData))
30345 {
30346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30347 "%s: Invalid parameters", __func__);
30348 WDI_ASSERT(0);
30349 return WDI_STATUS_E_FAILURE;
30350 }
30351
30352 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30353 if ( NULL == wdiSetBatchScanCb)
30354 {
30355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30356 "%s: call back function is NULL", __func__);
30357 WDI_ASSERT(0);
30358 return WDI_STATUS_E_FAILURE;
30359 }
30360
30361 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30362
30363 if (NULL == pSetBatchScanRsp)
30364 {
30365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030366 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030367 pWDICtx, pEventData, pEventData->pEventData);
30368 WDI_ASSERT(0);
30369 return WDI_STATUS_E_FAILURE;
30370 }
30371
Sunil Duttbd736ed2014-05-26 21:19:41 +053030372 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030373 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30374
30375 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30376
Sunil Duttbd736ed2014-05-26 21:19:41 +053030377 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030378 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30379
30380 wpalMemoryFree(pSetBatchScanRsp);
30381
30382 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030383}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030384
30385/**
30386 @brief Process batch scan result indication from FW
30387
30388 @param pWDICtx: pointer to the WLAN DAL context
30389 pEventData: pointer to the event information structure
30390
30391 @see
30392 @return Result of the function call
30393*/
30394WDI_Status
30395WDI_ProcessBatchScanResultInd
30396(
30397 WDI_ControlBlockType* pWDICtx,
30398 WDI_EventInfoType* pEventData
30399)
30400{
30401 void *pBatchScanResultInd;
30402 WDI_LowLevelIndType wdiInd;
30403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30404
Sunil Duttbd736ed2014-05-26 21:19:41 +053030405 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030406 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30407 ( NULL == pEventData->pEventData))
30408 {
30409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30410 "%s: Invalid parameters", __func__);
30411 WDI_ASSERT(0);
30412 return WDI_STATUS_E_FAILURE;
30413 }
30414
Sunil Duttbd736ed2014-05-26 21:19:41 +053030415 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030416 pBatchScanResultInd = (void *)pEventData->pEventData;
30417
Sunil Duttbd736ed2014-05-26 21:19:41 +053030418 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030419 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30420
30421 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30422
Sunil Duttbd736ed2014-05-26 21:19:41 +053030423 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030424 if (pWDICtx->wdiLowLevelIndCB)
30425 {
30426 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30427 }
30428 else
30429 {
30430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30431 "%s: WDILowLevelIndCb is null", __func__);
30432 WDI_ASSERT(0);
30433 return WDI_STATUS_E_FAILURE;
30434 }
30435
30436 return WDI_STATUS_SUCCESS;
30437} /*End of WDI_ProcessBatchScanResultInd*/
30438
Sunil Duttbd736ed2014-05-26 21:19:41 +053030439#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30440/**
30441 @brief Process Link Layer Statistics Result indication from FW
30442
30443 @param pWDICtx: pointer to the WLAN DAL context
30444 pEventData: pointer to the event information structure
30445
30446 @see
30447 @return Result of the function call
30448*/
30449WDI_Status
30450WDI_ProcessLinkLayerStatsResultsInd
30451(
30452 WDI_ControlBlockType* pWDICtx,
30453 WDI_EventInfoType* pEventData
30454)
30455{
30456 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030457 WDI_LLstatsResultsType *halLLStatsResults;
30458 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030459 WDI_LowLevelIndType wdiInd;
30460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30461
30462 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30463 "%s: Event RESULTS Indication", __func__);
30464
30465 /* sanity check */
30466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30467 ( NULL == pEventData->pEventData))
30468 {
30469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30470 "%s: Invalid parameters", __func__);
30471 WDI_ASSERT(0);
30472 return WDI_STATUS_E_FAILURE;
30473 }
30474
30475 /* extract response and send it to UMAC */
30476 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30477
30478 /* Fill in the indication parameters */
30479 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30480
Dino Mycled3d50022014-07-07 12:58:25 +053030481 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30482 = pLinkLayerStatsInd;
30483
30484 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30485
30486
30487 /* Need to fill in the MAC address */
30488 if ( WDI_STATUS_SUCCESS !=
30489 WDI_STATableGetStaMacAddr(pWDICtx,
30490 halLLStatsResults->iface_id,
30491 &macAddr))
30492 {
30493 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30494 " ifaceId: %u does not exist in the WDI Station Table",
30495 halLLStatsResults->iface_id);
30496
30497 return WDI_STATUS_E_FAILURE;
30498 }
30499 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30500 macAddr, WDI_MAC_ADDR_LEN);
30501
30502 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30503 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30504 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030505
30506 /* Notify UMAC */
30507 if (pWDICtx->wdiLowLevelIndCB)
30508 {
30509 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30510 }
30511 else
30512 {
30513 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30514 "%s: WDILowLevelIndCb is null", __func__);
30515 WDI_ASSERT(0);
30516 return WDI_STATUS_E_FAILURE;
30517 }
30518
30519 return WDI_STATUS_SUCCESS;
30520} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30521#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30522
Rajeev79dbe4c2013-10-05 11:03:42 +053030523/**
30524 @brief WDI_ProcessSetBatchScanReq -
30525 Set batch scan request to FW
30526
30527 @param pWDICtx : wdi context
30528 pEventData : indication data
30529
30530 @see
30531 @return none
30532*/
30533WDI_Status WDI_ProcessSetBatchScanReq
30534(
30535 WDI_ControlBlockType* pWDICtx,
30536 WDI_EventInfoType* pEventData
30537)
30538{
30539 WDI_SetBatchScanReqType *pWdiReq;
30540 WDI_Status wdiStatus;
30541 wpt_uint8* pSendBuffer = NULL;
30542 wpt_uint16 usDataOffset = 0;
30543 wpt_uint16 usSendSize = 0;
30544 tHalBatchScanSetParams *pHalReq;
30545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30546
30547 /*sanity check*/
30548 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30549 {
30550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30551 "%s: Invalid parameters in set batch scan request", __func__);
30552 WDI_ASSERT(0);
30553 return WDI_STATUS_E_FAILURE;
30554 }
30555
30556
30557 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30558
30559
30560 /*get message buffer*/
30561 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30562 WDI_SET_BATCH_SCAN_REQ,
30563 sizeof(tHalBatchScanSetParams),
30564 &pSendBuffer, &usDataOffset, &usSendSize))||
30565 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30566 {
30567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30568 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30569 WDI_ASSERT(0);
30570 return WDI_STATUS_E_FAILURE;
30571 }
30572
30573 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30574
30575 pHalReq->rtt = pWdiReq->rtt;
30576 pHalReq->rfBand = pWdiReq->rfBand;
30577 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30578 pHalReq->scanInterval = pWdiReq->scanFrequency;
30579 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30580
30581 /*send set batch scan request to fw*/
30582 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30583 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30584
30585 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30586 usSendSize, pWDICtx->pfncRspCB,
30587 pWDICtx->pReqStatusUserData,
30588 WDI_SET_BATCH_SCAN_RESP);
30589
30590 return wdiStatus;
30591}
30592
30593/**
30594 @brief WDI_SetBatchScanReq
30595 This API is called to set batch scan request in FW
30596
30597 @param pBatchScanReqParam : pointer to set batch scan re param
30598 usrData : Client context
30599 setBatchScanRspCb : set batch scan resp callback
30600 @see
30601 @return SUCCESS or FAIL
30602*/
30603WDI_Status WDI_SetBatchScanReq
30604(
30605 void *pBatchScanReqParam,
30606 void *usrData,
30607 WDI_SetBatchScanCb setBatchScanRspCb
30608)
30609{
30610 WDI_EventInfoType wdiEventData;
30611
30612 /*sanity check*/
30613 if (eWLAN_PAL_FALSE == gWDIInitialized)
30614 {
30615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30616 "WDI API call before module is initialized - Fail request");
30617
30618 return WDI_STATUS_E_NOT_ALLOWED;
30619 }
30620
30621 /* fill in event data and post to the main FSM */
30622 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30623 wdiEventData.pEventData = pBatchScanReqParam;
30624 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30625 wdiEventData.pCBfnc = setBatchScanRspCb;
30626 wdiEventData.pUserData = usrData;
30627
30628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30629}
30630
30631/**
30632 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30633
30634 @param None
30635
30636 @see
30637
30638 @return Status of the request
30639*/
30640WDI_Status
30641WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30642{
30643 WDI_EventInfoType wdiEventData;
30644
30645 /*-------------------------------------------------------------------------
30646 Sanity Check
30647 ------------------------------------------------------------------------*/
30648 if (eWLAN_PAL_FALSE == gWDIInitialized)
30649 {
30650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30651 "WDI API call before module is initialized - Fail request!");
30652
30653 return WDI_STATUS_E_NOT_ALLOWED;
30654 }
30655
30656 /*-------------------------------------------------------------------------
30657 Fill in Event data and post to the Main FSM
30658 ------------------------------------------------------------------------*/
30659 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30660 wdiEventData.pEventData = pWdiReq;
30661 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30662 wdiEventData.pCBfnc = NULL;
30663 wdiEventData.pUserData = NULL;
30664
30665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30666}
30667
30668/**
30669 @brief WDI_TriggerBatchScanResultInd
30670 This API is called to pull batch scan result from FW
30671
30672 @param pWdiReq : pointer to get batch scan ind param
30673 @see
30674 @return SUCCESS or FAIL
30675*/
30676WDI_Status WDI_TriggerBatchScanResultInd
30677(
30678 WDI_TriggerBatchScanResultIndType *pWdiReq
30679)
30680{
30681 WDI_EventInfoType wdiEventData;
30682 /*-------------------------------------------------------------------------
30683 Sanity Check
30684 ------------------------------------------------------------------------*/
30685 if (eWLAN_PAL_FALSE == gWDIInitialized)
30686 {
30687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30688 "WDI API call before module is initialized - Fail request!");
30689
30690 return WDI_STATUS_E_NOT_ALLOWED;
30691 }
30692
30693 /*-------------------------------------------------------------------------
30694 Fill in Event data and post to the Main FSM
30695 ------------------------------------------------------------------------*/
30696 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30697 wdiEventData.pEventData = pWdiReq;
30698 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30699 wdiEventData.pCBfnc = NULL;
30700 wdiEventData.pUserData = NULL;
30701
30702 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30703}
Rajeev79dbe4c2013-10-05 11:03:42 +053030704#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030705
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030706/**
30707 @brief Process Update Channel Rsp function (called when a response is
30708 being received over the bus from HAL)
30709
30710 @param pWDICtx: pointer to the WLAN DAL context
30711 pEventData: pointer to the event information structure
30712
30713 @see
30714 @return Result of the function call
30715*/
30716WDI_Status
30717WDI_ProcessUpdateChanRsp
30718(
30719 WDI_ControlBlockType* pWDICtx,
30720 WDI_EventInfoType* pEventData
30721)
30722{
30723 WDI_Status wdiStatus;
30724 eHalStatus halStatus;
30725 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30727
30728 /*-------------------------------------------------------------------------
30729 Sanity check
30730 -------------------------------------------------------------------------*/
30731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30732 ( NULL == pEventData->pEventData))
30733 {
30734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30735 "%s: Invalid parameters", __func__);
30736 WDI_ASSERT(0);
30737 return WDI_STATUS_E_FAILURE;
30738 }
30739
30740 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30741
30742 /*-------------------------------------------------------------------------
30743 Extract response and send it to UMAC
30744 -------------------------------------------------------------------------*/
30745 halStatus = *((eHalStatus*)pEventData->pEventData);
30746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30747
30748 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30749
30750 return WDI_STATUS_SUCCESS;
30751}/*WDI_ProcessUpdateChanRsp*/
30752
Leo Chang0b0e45a2013-12-15 15:18:55 -080030753#ifdef FEATURE_WLAN_CH_AVOID
30754/**
30755 @brief v -WDI_ProcessChAvoidInd
30756
30757
30758 @param pWDICtx : wdi context
30759 pEventData : indication data
30760 @see
30761 @return Result of the function call
30762*/
30763WDI_Status
30764WDI_ProcessChAvoidInd
30765(
30766 WDI_ControlBlockType* pWDICtx,
30767 WDI_EventInfoType* pEventData
30768)
30769{
30770 WDI_LowLevelIndType wdiInd;
30771 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30772 wpt_uint16 rangeLoop;
30773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30774
30775 /*-------------------------------------------------------------------------
30776 Sanity check
30777 -------------------------------------------------------------------------*/
30778 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30779 (NULL == pEventData->pEventData))
30780 {
30781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30782 "%s: Invalid parameters", __func__);
30783 WDI_ASSERT(0);
30784 return WDI_STATUS_E_FAILURE;
30785 }
30786
30787 /*-------------------------------------------------------------------------
30788 Extract indication and send it to UMAC
30789 -------------------------------------------------------------------------*/
30790 wpalMemoryCopy(&chAvoidIndicationParam,
30791 pEventData->pEventData,
30792 sizeof(tHalAvoidFreqRangeIndParams));
30793
30794 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30795 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30796 chAvoidIndicationParam.avoidCnt;
30797 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30798 (void *)chAvoidIndicationParam.avoidRange,
30799 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30800 sizeof(WDI_ChAvoidFreqType));
30801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30802 "%s: band count %d", __func__,
30803 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30804 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30805 {
30806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30807 "%s: srart freq %d, end freq %d", __func__,
30808 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30809 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30810 }
30811
30812 /*Notify UMAC*/
30813 if (pWDICtx->wdiLowLevelIndCB)
30814 {
30815 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30816 }
30817
30818 return WDI_STATUS_SUCCESS;
30819}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030820
Leo Chang0b0e45a2013-12-15 15:18:55 -080030821#endif /* FEATURE_WLAN_CH_AVOID */
30822
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030823/**
30824 @brief Process OBSS Start scan result indication
30825
30826 @param pWDICtx: pointer to the WLAN DAL context
30827 pEventData: pointer to the event information structure
30828
30829 @see
30830 @return Result of the function call
30831*/
30832WDI_Status
30833WDI_ProcessHT40OBSSScanInd
30834(
30835 WDI_ControlBlockType* pWDICtx,
30836 WDI_EventInfoType* pEventData
30837)
30838{
30839 wpt_uint8* pSendBuffer = NULL;
30840 wpt_uint16 usDataOffset = 0;
30841 wpt_uint16 usSendSize = 0;
30842 wpt_uint16 usLen = 0;
30843 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30844 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30845 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30846 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30847
30848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30849
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030851 "%s", __func__);
30852
30853 /*-------------------------------------------------------------------------
30854 Sanity check
30855 -------------------------------------------------------------------------*/
30856 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30857 {
30858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30859 "%s: Invalid parameters", __func__);
30860 WDI_ASSERT(0);
30861 return WDI_STATUS_E_FAILURE;
30862 }
30863 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30864
30865 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30866 /*-----------------------------------------------------------------------
30867 Get message buffer
30868 -----------------------------------------------------------------------*/
30869
30870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30871 WDI_START_HT40_OBSS_SCAN_IND,
30872 sizeof(tHT40ObssScanIndType),
30873 &pSendBuffer, &usDataOffset, &usSendSize))||
30874 ( usSendSize < (usDataOffset + usLen )))
30875 {
30876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30877 "Unable to get send buffer in HT40 OBSS Start req %p ",
30878 pEventData);
30879 WDI_ASSERT(0);
30880 return WDI_STATUS_E_FAILURE;
30881 }
30882 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30883 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30884 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30885 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30886 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30887 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30888 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30889 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30890 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30891 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30892 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30893 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30894 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30895 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30896 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30897 pHT40ObssScanInd->OBSSScanActivityThreshold =
30898 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30899 pHT40ObssScanInd->selfStaIdx =
30900 pwdiHT40OBSSScanInd->selfStaIdx;
30901 pHT40ObssScanInd->bssIdx =
30902 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030903 pHT40ObssScanInd->currentOperatingClass =
30904 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030905 pHT40ObssScanInd->fortyMHZIntolerent =
30906 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30907 pHT40ObssScanInd->channelCount =
30908 pwdiHT40OBSSScanInd->channelCount;
30909
30910 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30911 WDI_ROAM_SCAN_MAX_CHANNELS);
30912 pHT40ObssScanInd->ieFieldLen =
30913 pwdiHT40OBSSScanInd->ieFieldLen;
30914
30915 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30916 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30917 pWDICtx->pReqStatusUserData = NULL;
30918 pWDICtx->pfncRspCB = NULL;
30919
30920 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30921 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30922
30923 /*-------------------------------------------------------------------------
30924 Send OBSS Start Indication to HAL
30925 -------------------------------------------------------------------------*/
30926 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30927 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30928
30929} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30930
30931
30932/**
30933 @brief wdi_HT40OBSSScanInd
30934 This API is called to start OBSS scan
30935
30936 @param pWdiReq : pointer to get ind param
30937 @see
30938 @return SUCCESS or FAIL
30939*/
30940WDI_Status WDI_HT40OBSSScanInd
30941(
30942 WDI_HT40ObssScanParamsType *pWdiReq
30943)
30944{
30945 WDI_EventInfoType wdiEventData;
30946
30947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30948 "%s", __func__);
30949 /*-------------------------------------------------------------------------
30950 Sanity Check
30951 ------------------------------------------------------------------------*/
30952 if (eWLAN_PAL_FALSE == gWDIInitialized)
30953 {
30954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30955 "WDI API call before module is initialized - Fail request!");
30956
30957 return WDI_STATUS_E_NOT_ALLOWED;
30958 }
30959
30960 /*-------------------------------------------------------------------------
30961 Fill in Event data and post to the Main FSM
30962 ------------------------------------------------------------------------*/
30963 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30964 wdiEventData.pEventData = pWdiReq;
30965 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30966 wdiEventData.pCBfnc = NULL;
30967 wdiEventData.pUserData = NULL;
30968
30969
30970 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30971}
30972
30973/**
30974 @brief Process OBSS Stop scan result
30975
30976 @param pWDICtx: pointer to the WLAN DAL context
30977 pEventData: pointer to the event information structure
30978
30979 @see
30980 @return Result of the function call
30981*/
30982WDI_Status
30983WDI_ProcessHT40OBSSStopScanInd
30984(
30985 WDI_ControlBlockType* pWDICtx,
30986 WDI_EventInfoType* pEventData
30987)
30988{
30989 wpt_uint8* pSendBuffer = NULL;
30990 wpt_uint16 usDataOffset = 0;
30991 wpt_uint16 usSendSize = 0;
30992 wpt_uint16 usLen = 0;
30993 wpt_uint8 *wdiBssIdx = 0;
30994 tANI_U8 *bssIdx = 0;
30995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30996
30997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30998
30999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31000 "%s", __func__);
31001
31002 /*-------------------------------------------------------------------------
31003 Sanity check
31004 -------------------------------------------------------------------------*/
31005 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31006 {
31007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31008 "%s: Invalid parameters", __func__);
31009 WDI_ASSERT(0);
31010 return WDI_STATUS_E_FAILURE;
31011 }
31012 bssIdx = (wpt_uint8*)pEventData->pEventData;
31013 /*-----------------------------------------------------------------------
31014 Get message buffer
31015 -----------------------------------------------------------------------*/
31016
31017 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31018 WDI_STOP_HT40_OBSS_SCAN_IND,
31019 sizeof(tANI_U8),
31020 &pSendBuffer, &usDataOffset, &usSendSize))||
31021 ( usSendSize < (usDataOffset + usLen )))
31022 {
31023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31024 "Unable to get send buffer in HT40 OBSS Start req %p ",
31025 pEventData);
31026 WDI_ASSERT(0);
31027 return WDI_STATUS_E_FAILURE;
31028 }
31029
31030 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31031 bssIdx = wdiBssIdx;
31032
31033 pWDICtx->pReqStatusUserData = NULL;
31034 pWDICtx->pfncRspCB = NULL;
31035
31036 /*-------------------------------------------------------------------------
31037 Send DHCP Start Indication to HAL
31038 -------------------------------------------------------------------------*/
31039 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31040 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31041} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31042
31043/**
31044 @brief WDI_HT40OBSSStopScanInd
31045 This API is called to start OBSS scan
31046 @param pWdiReq : pointer to get ind param
31047 @see
31048 @return SUCCESS or FAIL
31049*/
31050WDI_Status WDI_HT40OBSSStopScanInd
31051(
31052 wpt_uint8 bssIdx
31053)
31054{
31055 WDI_EventInfoType wdiEventData;
31056
31057 /*-------------------------------------------------------------------------
31058 Sanity Check
31059 ------------------------------------------------------------------------*/
31060 if (eWLAN_PAL_FALSE == gWDIInitialized)
31061 {
31062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31063 "WDI API call before module is initialized - Fail request!");
31064
31065 return WDI_STATUS_E_NOT_ALLOWED;
31066 }
31067
31068 /*-------------------------------------------------------------------------
31069 Fill in Event data and post to the Main FSM
31070 ------------------------------------------------------------------------*/
31071 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31072 wdiEventData.pEventData = &bssIdx;
31073 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31074 wdiEventData.pCBfnc = NULL;
31075 wdiEventData.pUserData = NULL;
31076
31077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31078}
31079
c_hpothu86041002014-04-14 19:06:51 +053031080WDI_Status
31081WDI_printRegInfo
31082(
31083 WDI_ControlBlockType* pWDICtx,
31084 WDI_EventInfoType* pEventData
31085)
31086{
31087 tHalRegDebugInfo *pRegTable;
31088 tHalRegDebugInfoParams *pRegParams;
31089 uint32 cnt=0;
31090
31091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31092 "%s: ", __func__);
31093 /*-------------------------------------------------------------------------
31094 Sanity check
31095 -------------------------------------------------------------------------*/
31096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31097 ( NULL == pEventData->pEventData))
31098 {
31099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31100 "%s: Invalid parameters", __func__);
31101 WDI_ASSERT(0);
31102 return WDI_STATUS_E_FAILURE;
31103 }
31104
31105 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31106
31107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31108 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31109 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31110
31111 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31112
31113 if (pRegParams->regCount <= 0)
31114 {
31115 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31116 "%s incorrect parameters passed", __func__);
31117 return WDI_STATUS_E_FAILURE;
31118 }
31119
31120 while(pRegParams->regCount--)
31121 {
31122 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31123 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31124 cnt++;
31125 }
31126
31127 return WDI_STATUS_SUCCESS;
31128}
c_hpothu92367912014-05-01 15:18:17 +053031129
31130/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031131 * FUNCTION: WDI_delBaInd
31132 * send the delBA to peer.
31133 */
31134
31135WDI_Status
31136WDI_delBaInd
31137(
31138 WDI_ControlBlockType* pWDICtx,
31139 WDI_EventInfoType* pEventData
31140
31141)
31142{
31143 tHalWlanDelBaIndMsg halDelBaInd;
31144 WDI_LowLevelIndType wdiInd;
31145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31146
31147 /*-------------------------------------------------------------------------
31148 Sanity check
31149 -------------------------------------------------------------------------*/
31150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31151 ( NULL == pEventData->pEventData))
31152 {
31153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31154 "%s: Invalid parameters", __func__);
31155 WDI_ASSERT(0);
31156 return WDI_STATUS_E_FAILURE;
31157 }
31158
31159 /*-------------------------------------------------------------------------
31160 Extract indication and send it to UMAC
31161 -------------------------------------------------------------------------*/
31162
31163 /* Parameters need to be unpacked according to HAL struct*/
31164 wpalMemoryCopy( &halDelBaInd,
31165 pEventData->pEventData,
31166 sizeof(halDelBaInd));
31167
31168 /*Fill in the indication parameters*/
31169 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31170
31171 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31172 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31173 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31174
31175 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31176 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31177 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31178
31179 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31180 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31181 if ( pWDICtx->wdiLowLevelIndCB )
31182 {
31183 /*Notify UMAC*/
31184 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31185 }
31186
31187 return WDI_STATUS_SUCCESS;
31188
31189
31190}
31191
31192/*
c_hpothu92367912014-05-01 15:18:17 +053031193 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31194 * send the response to PE with beacon miss count
31195 * received from WDI.
31196 */
31197WDI_Status
31198WDI_ProcessGetBcnMissRateRsp
31199(
31200 WDI_ControlBlockType* pWDICtx,
31201 WDI_EventInfoType* pEventData
31202)
31203{
31204 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31205 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31206
31207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31208 "In %s",__func__);
31209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31210
31211 /*-------------------------------------------------------------------------
31212 Sanity check
31213 -------------------------------------------------------------------------*/
31214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31215 ( NULL == pEventData->pEventData))
31216 {
31217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31218 "%s: Invalid parameters", __func__);
31219 WDI_ASSERT(0);
31220 return WDI_STATUS_E_FAILURE;
31221 }
31222
31223 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31224 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31225
31226 /*Notify UMAC*/
31227 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31228 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31229 return WDI_STATUS_SUCCESS;
31230}
31231
31232/*
31233 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31234 * Request to WDI to get missed beacon rate.
31235 */
31236WDI_Status
31237WDI_ProcessGetBcnMissRateReq
31238(
31239 WDI_ControlBlockType* pWDICtx,
31240 WDI_EventInfoType* pEventData
31241)
31242{
31243 wpt_uint8* pSendBuffer = NULL;
31244 wpt_uint16 usDataOffset = 0;
31245 wpt_uint16 usSendSize = 0;
31246 wpt_uint8 ucCurrentBSSSesIdx = 0;
31247 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031248 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31249 tHalBcnMissRateReqParams halBcnMissRateReq;
31250
31251/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31252
31253 /*-------------------------------------------------------------------------
31254 Sanity check
31255 -------------------------------------------------------------------------*/
31256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31257 ( NULL == pEventData->pCBfnc ) )
31258 {
31259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31260 "%s: Invalid parameters", __func__);
31261 WDI_ASSERT(0);
31262 return WDI_STATUS_E_FAILURE;
31263 }
31264
31265 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31266
31267 wpalMutexAcquire(&pWDICtx->wptMutex);
31268
31269 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31270 pEventData->pEventData, &pBSSSes);
31271 if ( NULL == pBSSSes )
31272 {
31273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31274 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031275 MAC_ADDRESS_STR, __func__,
31276 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031277 wpalMutexRelease(&pWDICtx->wptMutex);
31278 return WDI_STATUS_E_NOT_ALLOWED;
31279 }
31280 wpalMutexRelease(&pWDICtx->wptMutex);
31281
31282 /*-----------------------------------------------------------------------
31283 Get message buffer
31284 -----------------------------------------------------------------------*/
31285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31286 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31287 sizeof(tHalBcnMissRateReqParams),
31288 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31289 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31290 {
31291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31292 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31293 pEventData);
31294 WDI_ASSERT(0);
31295 return WDI_STATUS_E_FAILURE;
31296 }
31297
31298 pWDICtx->wdiReqStatusCB = NULL;
31299 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31300
31301 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31302
31303 wpalMemoryCopy( pSendBuffer+usDataOffset,
31304 &halBcnMissRateReq,
31305 sizeof(tHalBcnMissRateReqParams));
31306 /*-------------------------------------------------------------------------
31307 Send Get STA Request to HAL
31308 -------------------------------------------------------------------------*/
31309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31310 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31311}
31312
31313/**
31314 @brief WDI_GetBcnMissRate
31315
31316 @param pUserData: user data will be passed back with the
31317 callback
31318 WDI_GetBcnMissRateCb: callback for passing back the response
31319 of the get stats operation received from the device
31320 bssid: bssid, to send bssIdx to FW
31321
31322 @return SUCCESS or FAIL
31323*/
31324WDI_Status WDI_GetBcnMissRate( void *pUserData,
31325 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31326 tANI_U8 *bssid )
31327{
31328 WDI_EventInfoType wdiEventData;
31329
31330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31331
31332 /*------------------------------------------------------------------------
31333 Sanity Check
31334 ------------------------------------------------------------------------*/
31335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31336 {
31337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31338 "WDI API call before module is initialized - Fail request");
31339
31340 return WDI_STATUS_E_NOT_ALLOWED;
31341 }
31342
31343 /*------------------------------------------------------------------------
31344 Fill in Event data and post to the Main FSM
31345 ------------------------------------------------------------------------*/
31346 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31347 wdiEventData.pEventData = bssid;
31348 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31349 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31350 wdiEventData.pUserData = pUserData;
31351
31352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31353}
Abhishek Singh85b74712014-10-08 11:38:19 +053031354
31355/*
31356 * FUNCTION: WDI_ProcessGetFwStatsRsp
31357 * send the response with FW stats asked.
31358 */
31359WDI_Status
31360 WDI_ProcessGetFwStatsRsp
31361(
31362 WDI_ControlBlockType* pWDICtx,
31363 WDI_EventInfoType* pEventData
31364)
31365{
31366 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31367 tpHalfwStatsRspParams pHalFwstatsRsp;
31368 WDI_FWStatsResults fwStats;
31369
31370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31371
31372 /*-------------------------------------------------------------------------
31373 Sanity check
31374 -------------------------------------------------------------------------*/
31375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31376 ( NULL == pEventData->pEventData))
31377 {
31378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31379 "%s: Invalid parameters", __func__);
31380 WDI_ASSERT(0);
31381 return WDI_STATUS_E_FAILURE;
31382 }
31383 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31384 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31385
31386 if(pHalFwstatsRsp->length)
31387 {
31388 switch( pHalFwstatsRsp->type )
31389 {
31390 case FW_UBSP_STATS:
31391 {
31392 ubspFwStats *ubspStatsfromFw;
31393
31394 fwStats.type = pHalFwstatsRsp->type;
31395 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31396 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31397 ubspStatsfromFw->ubsp_enter_cnt;
31398 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31399 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31400 }
31401 break;
31402 default:
31403 {
31404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31405 "%s: No handling for stats type %d", __func__,
31406 pHalFwstatsRsp->type);
31407 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31408 NULL, pWDICtx->pRspCBUserData);
31409 return WDI_STATUS_E_FAILURE;
31410 }
31411 }
31412 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31413 }
31414 else
31415 {
31416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31417 "%s: Length = 0 for type %d return failure ", __func__,
31418 pHalFwstatsRsp->type);
31419 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31420 NULL, pWDICtx->pRspCBUserData);
31421 return WDI_STATUS_E_FAILURE;
31422 }
31423 return WDI_STATUS_SUCCESS;
31424}
31425
31426/*
31427 * FUNCTION: WDI_ProcessGetFwStatsReq
31428 * Request to WDI to get FW Stats.
31429 */
31430WDI_Status
31431 WDI_ProcessGetFwStatsReq
31432(
31433 WDI_ControlBlockType* pWDICtx,
31434 WDI_EventInfoType* pEventData
31435)
31436{
31437 wpt_uint8* pSendBuffer = NULL;
31438 wpt_uint16 usDataOffset = 0;
31439 wpt_uint16 usSendSize = 0;
31440 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31441 tHalfwStatsReqParams halFwStatsReq;
31442
31443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31444
31445 /*-------------------------------------------------------------------------
31446 Sanity check
31447 -------------------------------------------------------------------------*/
31448 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31449 ( NULL == pEventData->pCBfnc ) )
31450 {
31451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31452 "%s: Invalid parameters", __func__);
31453 WDI_ASSERT(0);
31454 return WDI_STATUS_E_FAILURE;
31455 }
31456
31457 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31458
31459 /*-----------------------------------------------------------------------
31460 Get message buffer
31461 -----------------------------------------------------------------------*/
31462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31463 pWDICtx, WDI_GET_FW_STATS_REQ,
31464 sizeof(tHalfwStatsReqParams),
31465 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31466 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31467 {
31468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31469 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31470 pEventData);
31471 WDI_ASSERT(0);
31472 return WDI_STATUS_E_FAILURE;
31473 }
31474
31475 pWDICtx->wdiReqStatusCB = NULL;
31476 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31477 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31478 wpalMemoryCopy( pSendBuffer+usDataOffset,
31479 &halFwStatsReq,
31480 sizeof(tHalfwStatsReqParams));
31481 /*-------------------------------------------------------------------------
31482 Send Get STA Request to HAL
31483 -------------------------------------------------------------------------*/
31484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31485 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31486}
31487
Sunil Duttbd736ed2014-05-26 21:19:41 +053031488#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31489
31490/**
31491 @brief WDI_LLStatsSetReq
31492 This API is called to set link layer stats request in FW
31493
31494 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31495 wdiLLStatsSetRspCb : set link layer stats resp callback
31496 usrData : Client context
31497 @see
31498 @return SUCCESS or FAIL
31499*/
31500WDI_Status
31501WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31502 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31503 void* pUserData)
31504{
31505 WDI_EventInfoType wdiEventData;
31506
31507 /*------------------------------------------------------------------------
31508 Sanity Check
31509 ------------------------------------------------------------------------*/
31510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31511 {
31512 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31513 "WDI API call before module is initialized - Fail request");
31514
31515 return WDI_STATUS_E_NOT_ALLOWED;
31516 }
31517
31518 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31519 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31520 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31521 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31522 wdiEventData.pUserData = pUserData;
31523
31524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31525}
31526
31527/**
31528 @brief WDI_ProcessLLStatsSetReq -
31529 Set Link Layer Stats request to FW
31530
31531 @param pWDICtx : wdi context
31532 pEventData : indication data
31533
31534 @see
31535 @return none
31536*/
31537WDI_Status
31538WDI_ProcessLLStatsSetReq
31539(
31540 WDI_ControlBlockType* pWDICtx,
31541 WDI_EventInfoType* pEventData
31542)
31543{
31544 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31545 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31546 wpt_uint8* pSendBuffer = NULL;
31547 wpt_uint16 usSendSize = 0;
31548 wpt_uint16 usDataOffset = 0;
31549 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31550
31551 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31552 ( NULL == pEventData->pCBfnc ))
31553 {
31554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31555 "%s: Invalid parameters", __func__);
31556 WDI_ASSERT(0);
31557 return WDI_STATUS_E_FAILURE;
31558 }
31559
31560 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31561 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31562
31563 /*-----------------------------------------------------------------------
31564 Get message buffer
31565 ! TO DO : proper conversion into the HAL Message Request Format
31566 -----------------------------------------------------------------------*/
31567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31568 pWDICtx,
31569 WDI_LL_STATS_SET_REQ,
31570 sizeof(tHalMacLlSetStatsReqParams),
31571 &pSendBuffer, &usDataOffset,
31572 &usSendSize))||
31573 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31574 {
31575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31576 "Unable to get send buffer in %s %p %p %p", __func__,
31577 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31578 WDI_ASSERT(0);
31579 return WDI_STATUS_E_FAILURE;
31580 }
31581
31582
Dino Mycled3d50022014-07-07 12:58:25 +053031583 /* Need to fill in the self STA Index */
31584 if ( WDI_STATUS_SUCCESS !=
31585 WDI_STATableFindStaidByAddr(pWDICtx,
31586 pwdiLLStatsSetReqParams->macAddr,
31587 &halLLStatsSetParams.sta_id))
31588 {
31589 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31590 MAC_ADDRESS_STR
31591 ": This station does not exist in the WDI Station Table",
31592 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31593
31594 wpalMemoryFree(pSendBuffer);
31595 return WDI_STATUS_E_FAILURE;
31596 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031597
31598 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031599 halLLStatsSetParams.mpdu_size_threshold =
31600 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31601 halLLStatsSetParams.aggressive_statistics_gathering =
31602 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31603
31604 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31605 " halLLStatsSetParams.req_id = %u",
31606 halLLStatsSetParams.req_id);
31607 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31608 " halLLStatsSetParams.sta_id = %u",
31609 halLLStatsSetParams.sta_id);
31610 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31611 " halLLStatsSetParams.mpdu_size_threshold = %u",
31612 halLLStatsSetParams.mpdu_size_threshold);
31613 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31614 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31615 halLLStatsSetParams.aggressive_statistics_gathering);
31616
31617 wpalMemoryCopy(pSendBuffer+usDataOffset,
31618 &halLLStatsSetParams,
31619 sizeof(halLLStatsSetParams));
31620
31621 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31622
31623 /*-------------------------------------------------------------------------
31624 Send Clear Link Layer Stats Request to HAL
31625 -------------------------------------------------------------------------*/
31626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31627 wdiLLStatsSetCb, pEventData->pUserData,
31628 WDI_LL_STATS_SET_RSP);
31629}
31630
31631/**
31632 @brief WDI_LLStatsGetReq
31633 This API is called to get link layer stats request in FW
31634
31635 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31636 wdiLLStatsGetRspCb : get link layer stats resp callback
31637 usrData : Client context
31638 @see
31639 @return SUCCESS or FAIL
31640*/
31641WDI_Status
31642WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31643 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31644 void* pUserData)
31645{
31646 WDI_EventInfoType wdiEventData;
31647
31648 /*------------------------------------------------------------------------
31649 Sanity Check
31650 ------------------------------------------------------------------------*/
31651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31652 {
31653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31654 "WDI API call before module is initialized - Fail request");
31655
31656 return WDI_STATUS_E_NOT_ALLOWED;
31657 }
31658
31659 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31660 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31661 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31662 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31663 wdiEventData.pUserData = pUserData;
31664
31665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31666}
31667
31668/**
31669 @brief WDI_ProcessLLStatsGetReq -
31670 Get Link Layer Stats request to FW
31671
31672 @param pWDICtx : wdi context
31673 pEventData : indication data
31674
31675 @see
31676 @return none
31677*/
31678WDI_Status
31679WDI_ProcessLLStatsGetReq
31680(
31681 WDI_ControlBlockType* pWDICtx,
31682 WDI_EventInfoType* pEventData
31683)
31684{
31685 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31686 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31687 wpt_uint8* pSendBuffer = NULL;
31688 wpt_uint16 usSendSize = 0;
31689 wpt_uint16 usDataOffset = 0;
31690 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31691
31692 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31693 ( NULL == pEventData->pCBfnc ))
31694 {
31695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31696 "%s: Invalid parameters", __func__);
31697 WDI_ASSERT(0);
31698 return WDI_STATUS_E_FAILURE;
31699 }
31700
31701 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31702 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31703
31704 /*-----------------------------------------------------------------------
31705 Get message buffer
31706 ! TO DO : proper conversion into the HAL Message Request Format
31707 -----------------------------------------------------------------------*/
31708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31709 pWDICtx,
31710 WDI_LL_STATS_GET_REQ,
31711 sizeof(tHalMacLlGetStatsReqParams),
31712 &pSendBuffer, &usDataOffset,
31713 &usSendSize))||
31714 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31715 {
31716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31717 "Unable to get send buffer in %s %p %p %p", __func__,
31718 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31719 WDI_ASSERT(0);
31720 return WDI_STATUS_E_FAILURE;
31721 }
Dino Mycled3d50022014-07-07 12:58:25 +053031722 /* Need to fill in the self STA Index */
31723 if ( WDI_STATUS_SUCCESS !=
31724 WDI_STATableFindStaidByAddr(pWDICtx,
31725 pwdiLLStatsGetReqParams->macAddr,
31726 &halLLStatsGetParams.sta_id))
31727 {
31728 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31729 MAC_ADDRESS_STR
31730 ": This station does not exist in the WDI Station Table",
31731 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31732
31733 wpalMemoryFree(pSendBuffer);
31734 return WDI_STATUS_E_FAILURE;
31735 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031736
31737 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031738 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31739
31740 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31741 " halLLStatsGetParams.req_id = %u",
31742 halLLStatsGetParams.req_id);
31743 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31744 " halLLStatsGetParams.staId = %u",
31745 halLLStatsGetParams.sta_id);
31746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31747 " halLLStatsGetParams.Mask = %u",
31748 halLLStatsGetParams.param_id_mask);
31749
31750 wpalMemoryCopy(pSendBuffer+usDataOffset,
31751 &halLLStatsGetParams,
31752 sizeof(halLLStatsGetParams));
31753
31754 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31755
31756 /*-------------------------------------------------------------------------
31757 Send Clear Link Layer Stats Request to HAL
31758 -------------------------------------------------------------------------*/
31759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31760 wdiLLStatsGetCb, pEventData->pUserData,
31761 WDI_LL_STATS_GET_RSP);
31762}
31763
31764/**
31765 @brief WDI_LLStatsClearReq
31766 This API is called to clear link layer stats request in FW
31767
31768 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31769 wdiLLStatsSetRspCb : clear link layer stats resp callback
31770 usrData : Client context
31771 @see
31772 @return SUCCESS or FAIL
31773*/
31774WDI_Status
31775WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31776 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31777 void* pUserData)
31778{
31779 WDI_EventInfoType wdiEventData;
31780
31781 /*------------------------------------------------------------------------
31782 Sanity Check
31783 ------------------------------------------------------------------------*/
31784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31785 {
31786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31787 "WDI API call before module is initialized - Fail request");
31788
31789 return WDI_STATUS_E_NOT_ALLOWED;
31790 }
31791
31792 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31793 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31794 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31795 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31796 wdiEventData.pUserData = pUserData;
31797
31798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31799 "%s:%d Enter", __func__, __LINE__);
31800
31801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31802}
31803
31804/**
31805 @brief WDI_ProcessLLStatsClearReq -
31806 Clear Link Layer Stats request to FW
31807
31808 @param pWDICtx : wdi context
31809 pEventData : indication data
31810
31811 @see
31812 @return none
31813*/
31814WDI_Status
31815WDI_ProcessLLStatsClearReq
31816(
31817 WDI_ControlBlockType* pWDICtx,
31818 WDI_EventInfoType* pEventData
31819)
31820{
31821 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31822 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31823 wpt_uint8* pSendBuffer = NULL;
31824 wpt_uint16 usSendSize = 0;
31825 wpt_uint16 usDataOffset = 0;
31826 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31827
31828 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31829 ( NULL == pEventData->pCBfnc ))
31830 {
31831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31832 "%s: Invalid parameters", __func__);
31833 WDI_ASSERT(0);
31834 return WDI_STATUS_E_FAILURE;
31835 }
31836
31837 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31838 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31839
31840 /*-----------------------------------------------------------------------
31841 Get message buffer
31842 ! TO DO : proper conversion into the HAL Message Request Format
31843 -----------------------------------------------------------------------*/
31844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31845 pWDICtx,
31846 WDI_LL_STATS_CLEAR_REQ,
31847 sizeof(tHalMacLlClearStatsReqParams),
31848 &pSendBuffer, &usDataOffset,
31849 &usSendSize))||
31850 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31851 {
31852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31853 "Unable to get send buffer in %s %p %p %p", __func__,
31854 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31855 WDI_ASSERT(0);
31856 return WDI_STATUS_E_FAILURE;
31857 }
Dino Mycled3d50022014-07-07 12:58:25 +053031858 /* Need to fill in the self STA Index */
31859 if ( WDI_STATUS_SUCCESS !=
31860 WDI_STATableFindStaidByAddr(pWDICtx,
31861 pwdiLLStatsClearReqParams->macAddr,
31862 &halLLStatsClearParams.sta_id))
31863 {
31864 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31865 MAC_ADDRESS_STR
31866 ": This station does not exist in the WDI Station Table",
31867 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31868
31869 wpalMemoryFree(pSendBuffer);
31870 return WDI_STATUS_E_FAILURE;
31871 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031872
31873 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031874 halLLStatsClearParams.stats_clear_req_mask =
31875 pwdiLLStatsClearReqParams->statsClearReqMask;
31876 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31877
31878 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31879 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31880 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31881 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31883 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31884 halLLStatsClearParams.stats_clear_req_mask);
31885 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31886 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31887
31888 wpalMemoryCopy(pSendBuffer+usDataOffset,
31889 &halLLStatsClearParams,
31890 sizeof(halLLStatsClearParams));
31891
31892 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31893
31894 /*-------------------------------------------------------------------------
31895 Send Clear Link Layer Stats Request to HAL
31896 -------------------------------------------------------------------------*/
31897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31898 wdiLLStatsClearCb, pEventData->pUserData,
31899 WDI_LL_STATS_CLEAR_RSP);
31900}
31901#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031902
Abhishek Singh85b74712014-10-08 11:38:19 +053031903WDI_Status WDI_FWStatsGetReq( void* pUserData,
31904 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31905 wpt_uint32 stats)
31906{
31907 WDI_EventInfoType wdiEventData;
31908
31909 /*------------------------------------------------------------------------
31910 Sanity Check
31911 ------------------------------------------------------------------------*/
31912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31913 {
31914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31915 "WDI API call before module is initialized - Fail request");
31916 return WDI_STATUS_E_NOT_ALLOWED;
31917 }
31918 /*------------------------------------------------------------------------
31919 Fill in Event data and post to the Main FSM
31920 ------------------------------------------------------------------------*/
31921 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31922 wdiEventData.pEventData = (void *)&stats;
31923 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31924 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31925 wdiEventData.pUserData = pUserData;
31926
31927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31928
31929}
31930
Dino Mycle41bdc942014-06-10 11:30:24 +053031931#ifdef WLAN_FEATURE_EXTSCAN
31932
31933/**
31934 @brief Process EXTSCAN BUffer full indication from FW
31935
31936 @param pWDICtx: pointer to the WLAN DAL context
31937 pEventData: pointer to the event information structure
31938
31939 @see
31940 @return Result of the function call
31941*/
31942WDI_Status
31943WDI_ProcessEXTScanProgressInd
31944(
31945 WDI_ControlBlockType* pWDICtx,
31946 WDI_EventInfoType* pEventData
31947)
31948{
31949 WDI_LowLevelIndType wdiInd;
31950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31951
31952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31953 "%s: ", __func__);
31954
31955 /* sanity check */
31956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31957 ( NULL == pEventData->pEventData))
31958 {
31959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31960 "%s: Invalid parameters", __func__);
31961 WDI_ASSERT(0);
31962 return WDI_STATUS_E_FAILURE;
31963 }
31964
31965 /* Fill in the indication parameters */
31966 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31967
31968 /* extract response and send it to UMAC */
31969 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31970
31971 /* Notify UMAC */
31972 if (pWDICtx->wdiLowLevelIndCB)
31973 {
31974 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31975 }
31976 else
31977 {
Dino Mycled3d50022014-07-07 12:58:25 +053031978 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031979 "%s: WDILowLevelIndCb is null", __func__);
31980 WDI_ASSERT(0);
31981 return WDI_STATUS_E_FAILURE;
31982 }
31983 return WDI_STATUS_SUCCESS;
31984
31985} /* End of WDI_ProcessEXTScanProgressInd */
31986
31987
31988/**
31989 @brief Process EXTScan Scan Available indication from FW
31990
31991 @param pWDICtx: pointer to the WLAN DAL context
31992 pEventData: pointer to the event information structure
31993
31994 @see
31995 @return Result of the function call
31996*/
31997WDI_Status
31998WDI_ProcessEXTScanScanAvailableInd
31999(
32000 WDI_ControlBlockType* pWDICtx,
32001 WDI_EventInfoType* pEventData
32002)
32003{
32004 WDI_LowLevelIndType wdiInd;
32005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32006
32007 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32008 "%s: ", __func__);
32009
32010 /* sanity check */
32011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32012 ( NULL == pEventData->pEventData))
32013 {
32014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32015 "%s: Invalid parameters", __func__);
32016 WDI_ASSERT(0);
32017 return WDI_STATUS_E_FAILURE;
32018 }
32019
32020
32021
32022 /* Fill in the indication parameters */
32023 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32024
32025 /* extract response and send it to UMAC */
32026 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32027
32028 /* Notify UMAC */
32029 if (pWDICtx->wdiLowLevelIndCB)
32030 {
32031 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32032 }
32033 else
32034 {
32035 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32036 "%s: WDILowLevelIndCb is null", __func__);
32037 WDI_ASSERT(0);
32038 return WDI_STATUS_E_FAILURE;
32039 }
32040 return WDI_STATUS_SUCCESS;
32041} /* End of WDI_ProcessEXTScanScanDoneInd */
32042
32043/**
32044 @brief Process EXTScan Result Indication indication from FW
32045
32046 @param pWDICtx: pointer to the WLAN DAL context
32047 pEventData: pointer to the event information structure
32048
32049 @see
32050 @return Result of the function call
32051*/
32052WDI_Status
32053WDI_ProcessEXTScanResultInd
32054(
32055 WDI_ControlBlockType* pWDICtx,
32056 WDI_EventInfoType* pEventData
32057)
32058{
32059 WDI_LowLevelIndType wdiInd;
32060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32061
32062 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32063 "%s: ", __func__);
32064
32065 /* sanity check */
32066 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32067 ( NULL == pEventData->pEventData))
32068 {
32069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32070 "%s: Invalid parameters", __func__);
32071 WDI_ASSERT(0);
32072 return WDI_STATUS_E_FAILURE;
32073 }
32074
32075 /* Fill in the indication parameters */
32076 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32077
32078 /* extract response and send it to UMAC */
32079 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32080
32081 /* Notify UMAC */
32082 if (pWDICtx->wdiLowLevelIndCB)
32083 {
32084 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32085 }
32086 else
32087 {
32088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32089 "%s: WDILowLevelIndCb is null", __func__);
32090 WDI_ASSERT(0);
32091 return WDI_STATUS_E_FAILURE;
32092 }
32093 return WDI_STATUS_SUCCESS;
32094} /* End of WDI_ProcessEXTScanResultInd */
32095
32096/**
32097 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32098
32099 @param pWDICtx: pointer to the WLAN DAL context
32100 pEventData: pointer to the event information structure
32101
32102 @see
32103 @return Result of the function call
32104*/
32105WDI_Status
32106WDI_ProcessEXTScanBssidHotListResultInd
32107(
32108 WDI_ControlBlockType* pWDICtx,
32109 WDI_EventInfoType* pEventData
32110)
32111{
32112 WDI_LowLevelIndType wdiInd;
32113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32114
32115 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32116 "%s: ", __func__);
32117
32118 /* sanity check */
32119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32120 ( NULL == pEventData->pEventData))
32121 {
32122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32123 "%s: Invalid parameters", __func__);
32124 WDI_ASSERT(0);
32125 return WDI_STATUS_E_FAILURE;
32126 }
32127
32128 /* Fill in the indication parameters */
32129 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32130
32131 /* extract response and send it to UMAC */
32132 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32133
32134 /* Notify UMAC */
32135 if (pWDICtx->wdiLowLevelIndCB)
32136 {
32137 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32138 }
32139 else
32140 {
32141 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32142 "%s: WDILowLevelIndCb is null", __func__);
32143 WDI_ASSERT(0);
32144 return WDI_STATUS_E_FAILURE;
32145 }
32146 return WDI_STATUS_SUCCESS;
32147} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32148
32149/**
32150 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32151
32152 @param pWDICtx: pointer to the WLAN DAL context
32153 pEventData: pointer to the event information structure
32154
32155 @see
32156 @return Result of the function call
32157*/
32158WDI_Status
32159WDI_ProcessEXTScanSignfRssiResultInd
32160(
32161 WDI_ControlBlockType* pWDICtx,
32162 WDI_EventInfoType* pEventData
32163)
32164{
32165 WDI_LowLevelIndType wdiInd;
32166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32167
32168 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32169 "%s: ", __func__);
32170
32171 /* sanity check */
32172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32173 ( NULL == pEventData->pEventData))
32174 {
32175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32176 "%s: Invalid parameters", __func__);
32177 WDI_ASSERT(0);
32178 return WDI_STATUS_E_FAILURE;
32179 }
32180
32181 /* Fill in the indication parameters */
32182 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32183
32184 /* extract response and send it to UMAC */
32185 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32186
32187 /* Notify UMAC */
32188 if (pWDICtx->wdiLowLevelIndCB)
32189 {
32190 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32191 }
32192 else
32193 {
32194 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32195 "%s: WDILowLevelIndCb is null", __func__);
32196 WDI_ASSERT(0);
32197 return WDI_STATUS_E_FAILURE;
32198 }
32199 return WDI_STATUS_SUCCESS;
32200} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32201
32202/**
32203 @brief WDI_EXTScanGetCapabilitiesReq
32204
32205 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32206 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32207 of the Req operation received from the device
32208 pUserData: user data will be passed back with the callback
32209
32210 @return SUCCESS or FAIL
32211*/
32212WDI_Status
32213WDI_EXTScanGetCapabilitiesReq(
32214 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32215 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32216 void* pUserData)
32217{
32218 WDI_EventInfoType wdiEventData;
32219
32220 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32221 "%s: %d ",__func__, __LINE__);
32222 /*------------------------------------------------------------------------
32223 Sanity Check
32224 ------------------------------------------------------------------------*/
32225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32226 {
32227 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32228 "WDI API call before module is initialized - Fail request");
32229
32230 return WDI_STATUS_E_NOT_ALLOWED;
32231 }
32232
32233 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32234 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32235 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32236 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32237 wdiEventData.pUserData = pUserData;
32238
32239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32240}
32241
32242/**
32243 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32244 Extended Scan Get Capability request to FW
32245
32246 @param pWDICtx : wdi context
32247 pEventData : indication data
32248
32249 @see
32250 @return none
32251*/
32252WDI_Status
32253WDI_ProcessEXTScanGetCapabilitiesReq
32254(
32255 WDI_ControlBlockType* pWDICtx,
32256 WDI_EventInfoType* pEventData
32257)
32258{
32259 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32260 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32261 wpt_uint8* pSendBuffer = NULL;
32262 wpt_uint16 usSendSize = 0;
32263 wpt_uint16 usDataOffset = 0;
32264 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32265
32266 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32267 "%s: %d Enter",__func__, __LINE__);
32268
32269 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32270 ( NULL == pEventData->pCBfnc ))
32271 {
32272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32273 "%s: Invalid parameters", __func__);
32274 WDI_ASSERT(0);
32275 return WDI_STATUS_E_FAILURE;
32276 }
32277
32278 pwdiEXTScanGetCapabilitiesReqParams =
32279 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32280 wdiEXTScanGetCapabilitiesRspCb =
32281 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32282
32283 /*-----------------------------------------------------------------------
32284 Get message buffer
32285 ! TO DO : proper conversion into the HAL Message Request Format
32286 -----------------------------------------------------------------------*/
32287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32288 pWDICtx,
32289 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32290 sizeof(halEXTScanGetCapReqParams),
32291 &pSendBuffer, &usDataOffset,
32292 &usSendSize))||
32293 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32294 {
32295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32296 "Unable to get send buffer in %s %p %p %p", __func__,
32297 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32298 wdiEXTScanGetCapabilitiesRspCb);
32299 WDI_ASSERT(0);
32300 return WDI_STATUS_E_FAILURE;
32301 }
32302
32303 halEXTScanGetCapReqParams.requestId =
32304 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32305 halEXTScanGetCapReqParams.sessionId =
32306 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32307
32308 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32309 " requestId %u "
32310 " sessionId %u ",
32311 halEXTScanGetCapReqParams.requestId,
32312 halEXTScanGetCapReqParams.sessionId);
32313
32314 wpalMemoryCopy(pSendBuffer+usDataOffset,
32315 &halEXTScanGetCapReqParams,
32316 sizeof(halEXTScanGetCapReqParams));
32317
32318 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32319
32320
32321 /*-------------------------------------------------------------------------
32322 Send EXTScan Stop Request to HAL
32323 -------------------------------------------------------------------------*/
32324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32325 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32326 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32327}
32328
32329/**
32330 @brief WDI_EXTScanGetCachedResultsReq
32331
32332 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32333 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32334 of the Req operation received from the device
32335 pUserData: user data will be passed back with the callback
32336
32337 @return SUCCESS or FAIL
32338*/
32339
32340WDI_Status
32341WDI_EXTScanGetCachedResultsReq(
32342 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32343 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32344 void* pUserData)
32345{
32346 WDI_EventInfoType wdiEventData;
32347
32348 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32349 "%s: %d Enter",__func__, __LINE__);
32350 /*------------------------------------------------------------------------
32351 Sanity Check
32352 ------------------------------------------------------------------------*/
32353 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32354 {
32355 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32356 "WDI API call before module is initialized - Fail request");
32357
32358 return WDI_STATUS_E_NOT_ALLOWED;
32359 }
32360
32361 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32362 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32363 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32364 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32365 wdiEventData.pUserData = pUserData;
32366
32367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32368}
32369
32370/**
32371 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32372 Extended Scan Get Cached Result request to FW
32373
32374 @param pWDICtx : wdi context
32375 pEventData : indication data
32376
32377 @see
32378 @return none
32379*/
32380WDI_Status
32381WDI_ProcessEXTScanGetCachedResultsReq
32382(
32383 WDI_ControlBlockType* pWDICtx,
32384 WDI_EventInfoType* pEventData
32385)
32386{
32387 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32388 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32389 wpt_uint8* pSendBuffer = NULL;
32390 wpt_uint16 usSendSize = 0;
32391 wpt_uint16 usDataOffset = 0;
32392 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32393
32394 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32395 "%s: %d Enter",__func__, __LINE__);
32396
32397 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32398 ( NULL == pEventData->pCBfnc ))
32399 {
32400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32401 "%s: Invalid parameters", __func__);
32402 WDI_ASSERT(0);
32403 return WDI_STATUS_E_FAILURE;
32404 }
32405
32406 pwdiEXTScanGetCachedResultsReqParams =
32407 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32408 wdiEXTScanGetCachedResultsCb =
32409 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32410
32411 /*-----------------------------------------------------------------------
32412 Get message buffer
32413 ! TO DO : proper conversion into the HAL Message Request Format
32414 -----------------------------------------------------------------------*/
32415 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32416 pWDICtx,
32417 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32418 sizeof(tHalExtScanGetScanReq),
32419 &pSendBuffer, &usDataOffset,
32420 &usSendSize))||
32421 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32422 {
32423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32424 "Unable to get send buffer in %s %p %p %p", __func__,
32425 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32426 wdiEXTScanGetCachedResultsCb);
32427 WDI_ASSERT(0);
32428 return WDI_STATUS_E_FAILURE;
32429 }
32430
32431 halEXTScanGetScanReqParams.requestId =
32432 pwdiEXTScanGetCachedResultsReqParams->requestId;
32433 halEXTScanGetScanReqParams.sessionId =
32434 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32435 halEXTScanGetScanReqParams.flush =
32436 pwdiEXTScanGetCachedResultsReqParams->flush;
32437
32438 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32439 " requestId %u "
32440 " sessionId %u "
32441 " flush %u ",
32442 halEXTScanGetScanReqParams.requestId,
32443 halEXTScanGetScanReqParams.sessionId,
32444 halEXTScanGetScanReqParams.flush);
32445
32446 wpalMemoryCopy(pSendBuffer+usDataOffset,
32447 &halEXTScanGetScanReqParams,
32448 sizeof(halEXTScanGetScanReqParams));
32449
32450 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32451
32452
32453 /*-------------------------------------------------------------------------
32454 Send EXTScan Stop Request to HAL
32455 -------------------------------------------------------------------------*/
32456 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32457 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32458 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32459}
32460
32461/**
32462 @brief WDI_EXTScanStopReq
32463
32464 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32465 WDI_EXTScanStopRspCb: callback for passing back the response
32466 of the Req operation received from the device
32467 pUserData: user data will be passed back with the callback
32468
32469 @return SUCCESS or FAIL
32470*/
32471WDI_Status
32472WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32473 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32474 void* pUserData)
32475{
32476 WDI_EventInfoType wdiEventData;
32477
32478 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32479 "%s: %d ",__func__, __LINE__);
32480 /*------------------------------------------------------------------------
32481 Sanity Check
32482 ------------------------------------------------------------------------*/
32483 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32484 {
32485 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32486 "WDI API call before module is initialized - Fail request");
32487
32488 return WDI_STATUS_E_NOT_ALLOWED;
32489 }
32490
32491 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32492 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32493 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32494 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32495 wdiEventData.pUserData = pUserData;
32496
32497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32498}
32499
32500/**
32501 @brief WDI_ProcessEXTScanStopReq -
32502 Extended Scan Stop request to FW
32503
32504 @param pWDICtx : wdi context
32505 pEventData : indication data
32506
32507 @see
32508 @return none
32509*/
32510WDI_Status
32511WDI_ProcessEXTScanStopReq
32512(
32513 WDI_ControlBlockType* pWDICtx,
32514 WDI_EventInfoType* pEventData
32515)
32516{
32517 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32518 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32519 wpt_uint8* pSendBuffer = NULL;
32520 wpt_uint16 usSendSize = 0;
32521 wpt_uint16 usDataOffset = 0;
32522 tHalExtScanStopReq halEXTScanStopReqParams;
32523
32524 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32525 "%s: %d ",__func__, __LINE__);
32526
32527 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32528 ( NULL == pEventData->pCBfnc ))
32529 {
32530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32531 "%s: Invalid parameters", __func__);
32532 WDI_ASSERT(0);
32533 return WDI_STATUS_E_FAILURE;
32534 }
32535
32536 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32537 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32538
32539 /*-----------------------------------------------------------------------
32540 Get message buffer
32541 ! TO DO : proper conversion into the HAL Message Request Format
32542 -----------------------------------------------------------------------*/
32543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32544 pWDICtx,
32545 WDI_EXTSCAN_STOP_REQ,
32546 sizeof(tHalExtScanStopReq),
32547 &pSendBuffer, &usDataOffset,
32548 &usSendSize))||
32549 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32550 {
32551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32552 "Unable to get send buffer in %s %p %p %p", __func__,
32553 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32554 WDI_ASSERT(0);
32555 return WDI_STATUS_E_FAILURE;
32556 }
32557
32558 halEXTScanStopReqParams.requestId =
32559 pwdiEXTScanStopReqParams->requestId;
32560 halEXTScanStopReqParams.sessionId =
32561 pwdiEXTScanStopReqParams->sessionId;
32562
32563 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32564 " halEXTScanStopReqParams.requestId %u "
32565 " halEXTScanStopReqParams.sessionId %u ",
32566 halEXTScanStopReqParams.requestId,
32567 halEXTScanStopReqParams.sessionId);
32568
32569 wpalMemoryCopy(pSendBuffer+usDataOffset,
32570 &halEXTScanStopReqParams,
32571 sizeof(halEXTScanStopReqParams));
32572
32573 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32574
32575
32576 /*-------------------------------------------------------------------------
32577 Send EXTScan Stop Request to HAL
32578 -------------------------------------------------------------------------*/
32579 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32580 wdiEXTScanStopCb, pEventData->pUserData,
32581 WDI_EXTSCAN_STOP_RSP);
32582}
32583
32584/**
32585 @brief WDI_EXTScanStartReq
32586
32587 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32588 WDI_EXTScanStartRspCb: callback for passing back the response
32589 of the Req operation received from the device
32590 pUserData: user data will be passed back with the callback
32591
32592 @return SUCCESS or FAIL
32593*/
32594WDI_Status
32595WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32596 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32597 void* pUserData)
32598{
32599 WDI_EventInfoType wdiEventData;
32600
32601 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32602 "%s: %d Enter",__func__, __LINE__);
32603 /*------------------------------------------------------------------------
32604 Sanity Check
32605 ------------------------------------------------------------------------*/
32606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32607 {
32608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32609 "WDI API call before module is initialized - Fail request");
32610
32611 return WDI_STATUS_E_NOT_ALLOWED;
32612 }
32613
32614 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32615 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32616 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32617 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32618 wdiEventData.pUserData = pUserData;
32619
32620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32621}
32622
32623/**
32624 @brief WDI_ProcessEXTScanStartReq -
32625 Extended Scan Start Request to FW
32626
32627 @param pWDICtx : wdi context
32628 pEventData : indication data
32629
32630 @see
32631 @return none
32632*/
32633WDI_Status
32634WDI_ProcessEXTScanStartReq
32635(
32636 WDI_ControlBlockType* pWDICtx,
32637 WDI_EventInfoType* pEventData
32638)
32639{
32640 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32641 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32642 wpt_uint8* pSendBuffer = NULL;
32643 wpt_uint16 usSendSize = 0;
32644 wpt_uint16 usDataOffset = 0;
32645 tpHalExtScanStartReq pHalExtScanStartReqParams;
32646 int i = 0;
32647 int j = 0;
32648
32649 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32650 "%s: %d Enter",__func__, __LINE__);
32651
32652 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32653 ( NULL == pEventData->pCBfnc ))
32654 {
32655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32656 "%s: Invalid parameters", __func__);
32657 WDI_ASSERT(0);
32658 return WDI_STATUS_E_FAILURE;
32659 }
32660
32661 pwdiEXTScanStartReqParams =
32662 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32663 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32664
32665 /*-----------------------------------------------------------------------
32666 Get message buffer
32667 ! TO DO : proper conversion into the HAL Message Request Format
32668 -----------------------------------------------------------------------*/
32669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32670 pWDICtx,
32671 WDI_EXTSCAN_START_REQ,
32672 sizeof(tHalExtScanStartReq),
32673 &pSendBuffer, &usDataOffset,
32674 &usSendSize))||
32675 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32676 {
32677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32678 "Unable to get send buffer in %s %p %p %p", __func__,
32679 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32680 WDI_ASSERT(0);
32681 return WDI_STATUS_E_FAILURE;
32682 }
32683
32684 pHalExtScanStartReqParams =
32685 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32686
32687 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32688 pHalExtScanStartReqParams->maxApPerScan =
32689 pwdiEXTScanStartReqParams->maxAPperScan;
32690 pHalExtScanStartReqParams->reportThreshold =
32691 pwdiEXTScanStartReqParams->reportThreshold;
32692 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32693 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32694 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32695
32696 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32697 {
32698 pHalExtScanStartReqParams->bucketData[i].bucketId =
32699 pwdiEXTScanStartReqParams->buckets[i].bucket;
32700 pHalExtScanStartReqParams->bucketData[i].channelBand =
32701 pwdiEXTScanStartReqParams->buckets[i].band;
32702 pHalExtScanStartReqParams->bucketData[i].period =
32703 pwdiEXTScanStartReqParams->buckets[i].period;
32704 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32705 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32706 pHalExtScanStartReqParams->bucketData[i].numChannels =
32707 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32708
32709 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32710 {
32711 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32712 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32713 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32714 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32715 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32716 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32717 }
32718
32719 }
32720
32721
32722 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32723 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32724 " sessionId %u numBuckets%u ",
32725 pHalExtScanStartReqParams->basePeriod,
32726 pHalExtScanStartReqParams->maxApPerScan,
32727 pHalExtScanStartReqParams->reportThreshold,
32728 pHalExtScanStartReqParams->requestId,
32729 pHalExtScanStartReqParams->sessionId,
32730 pHalExtScanStartReqParams->numBuckets);
32731
32732 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32733 {
32734 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32735 " %d) bucketId %u channelBand %u period %u "
32736 " reportEvents %u numChannels %u ",i,
32737 pHalExtScanStartReqParams->bucketData[i].bucketId,
32738 pHalExtScanStartReqParams->bucketData[i].channelBand,
32739 pHalExtScanStartReqParams->bucketData[i].period,
32740 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32741 pHalExtScanStartReqParams->bucketData[i].numChannels);
32742
32743 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32744 {
32745 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32746 "%d) channel %u dwellTimeMs %u passive %u ",j,
32747 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32748 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32749 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32750 }
32751
32752 }
32753
Dino Mycle41bdc942014-06-10 11:30:24 +053032754 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32755
32756 /*-------------------------------------------------------------------------
32757 Send EXTSCAN Start Request to HAL
32758 -------------------------------------------------------------------------*/
32759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32760 wdiEXTScanStartCb, pEventData->pUserData,
32761 WDI_EXTSCAN_START_RSP);
32762}
32763
32764/**
32765 @brief WDI_EXTScanSetBSSIDHotlistReq
32766
32767 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32768 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32769 of the Req operation received from the device
32770 pUserData: user data will be passed back with the callback
32771
32772 @return SUCCESS or FAIL
32773*/
32774WDI_Status
32775WDI_EXTScanSetBSSIDHotlistReq(
32776 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32777 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32778 void* pUserData)
32779{
32780 WDI_EventInfoType wdiEventData;
32781
32782 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32783 "%s: %d Enter ",__func__, __LINE__);
32784 /*------------------------------------------------------------------------
32785 Sanity Check
32786 ------------------------------------------------------------------------*/
32787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32788 {
32789 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32790 "WDI API call before module is initialized - Fail request");
32791
32792 return WDI_STATUS_E_NOT_ALLOWED;
32793 }
32794
32795 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32796 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32797 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32798 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32799 wdiEventData.pUserData = pUserData;
32800
32801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32802}
32803
32804/**
32805 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32806 Extended Scan Set BSSSID Hotlist Request to FW
32807
32808 @param pWDICtx : wdi context
32809 pEventData : indication data
32810
32811 @see
32812 @return none
32813*/
32814WDI_Status
32815WDI_ProcessEXTScanSetBSSIDHotlistReq
32816(
32817 WDI_ControlBlockType* pWDICtx,
32818 WDI_EventInfoType* pEventData
32819)
32820{
32821 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32822 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32823 wpt_uint8* pSendBuffer = NULL;
32824 wpt_uint16 usSendSize = 0;
32825 wpt_uint16 usDataOffset = 0;
32826 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32827 int i;
32828
32829 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32830 "%s: %d Enter",__func__, __LINE__);
32831
32832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32833 ( NULL == pEventData->pCBfnc ))
32834 {
32835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32836 "%s: Invalid parameters", __func__);
32837 WDI_ASSERT(0);
32838 return WDI_STATUS_E_FAILURE;
32839 }
32840
32841 pwdiEXTScanSetBSSIDHotlistReqParams =
32842 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32843 wdiEXTScanSetBSSIDHotlistRspCb =
32844 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32845
32846 /*-----------------------------------------------------------------------
32847 Get message buffer
32848 ! TO DO : proper conversion into the HAL Message Request Format
32849 -----------------------------------------------------------------------*/
32850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32851 pWDICtx,
32852 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32853 sizeof(tHalBssidHotlistSetReq),
32854 &pSendBuffer, &usDataOffset,
32855 &usSendSize))||
32856 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32857 {
32858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32859 "Unable to get send buffer in %s %p %p %p", __func__,
32860 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32861 wdiEXTScanSetBSSIDHotlistRspCb);
32862 WDI_ASSERT(0);
32863 return WDI_STATUS_E_FAILURE;
32864 }
32865 pHalBssidHotlistSetReqParams =
32866 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32867
32868 pHalBssidHotlistSetReqParams->requestId =
32869 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32870
32871 pHalBssidHotlistSetReqParams->sessionId =
32872 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32873
32874 pHalBssidHotlistSetReqParams->numAp =
32875 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32876
32877 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32878
32879 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32880 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32881 WDI_MAC_ADDR_LEN);
32882
32883 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32884 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32885
32886 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32887 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32888
32889 pHalBssidHotlistSetReqParams->ap[i].channel =
32890 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32891
32892 }
32893
32894 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32895 "ReqID %u sessionId %u numAp %u ",
32896 pHalBssidHotlistSetReqParams->requestId,
32897 pHalBssidHotlistSetReqParams->sessionId,
32898 pHalBssidHotlistSetReqParams->numAp);
32899
32900 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32901
32902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32903 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32904 __func__, __LINE__, i,
32905 pHalBssidHotlistSetReqParams->ap[i].bssid,
32906 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32907 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32908 pHalBssidHotlistSetReqParams->ap[i].channel);
32909
32910 }
32911
32912 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32913
32914
32915 /*-------------------------------------------------------------------------
32916 Send EXTScan Stop Request to HAL
32917 -------------------------------------------------------------------------*/
32918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32919 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32920 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32921}
32922
32923/**
32924 @brief WDI_EXTScanResetBSSIDHotlistReq
32925
32926 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32927 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32928 of the Req operation received from the device
32929 pUserData: user data will be passed back with the callback
32930
32931 @return SUCCESS or FAIL
32932*/
32933WDI_Status
32934WDI_EXTScanResetBSSIDHotlistReq(
32935 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32936 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32937 void* pUserData)
32938{
32939 WDI_EventInfoType wdiEventData;
32940
32941 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32942 "%s: %d",__func__, __LINE__);
32943 /*------------------------------------------------------------------------
32944 Sanity Check
32945 ------------------------------------------------------------------------*/
32946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32947 {
32948 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32949 "WDI API call before module is initialized - Fail request");
32950
32951 return WDI_STATUS_E_NOT_ALLOWED;
32952 }
32953
32954 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32955 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32956 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32957 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32958 wdiEventData.pUserData = pUserData;
32959
32960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32961}
32962
32963/**
32964 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32965 Extended Scan reset BSSID hotlist Request to FW
32966
32967 @param pWDICtx : wdi context
32968 pEventData : indication data
32969
32970 @see
32971 @return none
32972*/
32973WDI_Status
32974WDI_ProcessEXTScanResetBSSIDHotlistReq
32975(
32976 WDI_ControlBlockType* pWDICtx,
32977 WDI_EventInfoType* pEventData
32978)
32979{
32980 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32981 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32982 wpt_uint8* pSendBuffer = NULL;
32983 wpt_uint16 usSendSize = 0;
32984 wpt_uint16 usDataOffset = 0;
32985 tpHalHotlistResetReq pHalHotlistResetReqParams;
32986
32987 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32988 "%s: %d",__func__, __LINE__);
32989
32990 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32991 ( NULL == pEventData->pCBfnc ))
32992 {
32993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32994 "%s: Invalid parameters", __func__);
32995 WDI_ASSERT(0);
32996 return WDI_STATUS_E_FAILURE;
32997 }
32998
32999 pwdiEXTScanResetBSSIDHotlistReqParams =
33000 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33001 wdiEXTScanResetBSSIDHotlistRspCb =
33002 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33003
33004 /*-----------------------------------------------------------------------
33005 Get message buffer
33006 ! TO DO : proper conversion into the HAL Message Request Format
33007 -----------------------------------------------------------------------*/
33008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33009 pWDICtx,
33010 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33011 sizeof(tHalHotlistResetReq),
33012 &pSendBuffer, &usDataOffset,
33013 &usSendSize))||
33014 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33015 {
33016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33017 "Unable to get send buffer in %s %p %p %p", __func__,
33018 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33019 wdiEXTScanResetBSSIDHotlistRspCb);
33020 WDI_ASSERT(0);
33021 return WDI_STATUS_E_FAILURE;
33022 }
33023 pHalHotlistResetReqParams =
33024 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33025
33026 pHalHotlistResetReqParams->requestId =
33027 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33028
33029 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33030
33031 /*-------------------------------------------------------------------------
33032 Send EXTScan Stop Request to HAL
33033 -------------------------------------------------------------------------*/
33034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33035 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33036 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33037}
33038
33039/**
33040 @brief WDI_EXTScanSetSignfRSSIChangeReq
33041
33042 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33043 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33044 of the Req operation received from the device
33045 pUserData: user data will be passed back with the callback
33046
33047 @return SUCCESS or FAIL
33048*/
33049WDI_Status
33050WDI_EXTScanSetSignfRSSIChangeReq(
33051 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33052 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33053 void* pUserData)
33054{
33055 WDI_EventInfoType wdiEventData;
33056
33057 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33058 "%s: %d ",__func__, __LINE__);
33059 /*------------------------------------------------------------------------
33060 Sanity Check
33061 ------------------------------------------------------------------------*/
33062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33063 {
33064 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33065 "WDI API call before module is initialized - Fail request");
33066
33067 return WDI_STATUS_E_NOT_ALLOWED;
33068 }
33069
33070 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33071 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33072 wdiEventData.uEventDataSize =
33073 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33074 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33075 wdiEventData.pUserData = pUserData;
33076
33077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33078}
33079
33080/**
33081 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33082 Extended Scan set Significant RSSI change Request to FW
33083
33084 @param pWDICtx : wdi context
33085 pEventData : indication data
33086
33087 @see
33088 @return none
33089*/
33090WDI_Status
33091WDI_ProcessEXTScanSetSignifRSSIChangeReq
33092(
33093 WDI_ControlBlockType* pWDICtx,
33094 WDI_EventInfoType* pEventData
33095)
33096{
33097 WDI_EXTScanSetSignfRSSIChangeReqParams*
33098 pwdiEXTScanSetSignfRSSIChangeReqParams;
33099 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33100 wpt_uint8* pSendBuffer = NULL;
33101 wpt_uint16 usSendSize = 0;
33102 wpt_uint16 usDataOffset = 0;
33103 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33104 int i;
33105
33106 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33107 "%s: %d Enter",__func__, __LINE__);
33108
33109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33110 ( NULL == pEventData->pCBfnc ))
33111 {
33112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33113 "%s: Invalid parameters", __func__);
33114 WDI_ASSERT(0);
33115 return WDI_STATUS_E_FAILURE;
33116 }
33117
33118 pwdiEXTScanSetSignfRSSIChangeReqParams =
33119 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33120 wdiEXTScanSetSignfRSSIChangeRspCb =
33121 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33122
33123 /*-----------------------------------------------------------------------
33124 Get message buffer
33125 ! TO DO : proper conversion into the HAL Message Request Format
33126 -----------------------------------------------------------------------*/
33127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33128 pWDICtx,
33129 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33130 sizeof(tHalSigRssiSetReq),
33131 &pSendBuffer, &usDataOffset,
33132 &usSendSize))||
33133 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33134 {
33135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33136 "Unable to get send buffer in %s %p %p %p", __func__,
33137 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33138 wdiEXTScanSetSignfRSSIChangeRspCb);
33139 WDI_ASSERT(0);
33140 return WDI_STATUS_E_FAILURE;
33141 }
33142
33143 pHalSigRssiSetReqParams =
33144 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33145
33146 pHalSigRssiSetReqParams->requestId =
33147 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33148 pHalSigRssiSetReqParams->sessionId =
33149 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33150 pHalSigRssiSetReqParams->rssiSampleSize =
33151 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33152 pHalSigRssiSetReqParams->lostApSampleSize =
33153 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33154 pHalSigRssiSetReqParams->minBreaching =
33155 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33156 pHalSigRssiSetReqParams->numAp =
33157 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33158
33159
33160 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33161
33162 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33163 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33164 WDI_MAC_ADDR_LEN);
33165
33166 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33167 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33168
33169 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33170 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33171
33172 pHalSigRssiSetReqParams->ap[i].channel =
33173 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33174
33175 }
33176
33177
33178 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33179 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33180 " minBreaching %u numAp %u ",
33181 pHalSigRssiSetReqParams->requestId,
33182 pHalSigRssiSetReqParams->sessionId,
33183 pHalSigRssiSetReqParams->rssiSampleSize,
33184 pHalSigRssiSetReqParams->lostApSampleSize,
33185 pHalSigRssiSetReqParams->minBreaching,
33186 pHalSigRssiSetReqParams->numAp);
33187
33188 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33189
33190 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33191 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33192 i,
33193 pHalSigRssiSetReqParams->ap[i].bssid,
33194 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33195 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33196 pHalSigRssiSetReqParams->ap[i].channel);
33197
33198 }
33199
33200 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33201
33202
33203 /*-------------------------------------------------------------------------
33204 Send EXTScan Stop Request to HAL
33205 -------------------------------------------------------------------------*/
33206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33207 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33208 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33209}
33210
33211/**
33212 @brief WDI_EXTScanResetSignfRSSIChangeReq
33213
33214 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33215 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33216 of the Req operation received from the device
33217 pUserData: user data will be passed back with the callback
33218
33219 @return SUCCESS or FAIL
33220*/
33221WDI_Status
33222WDI_EXTScanResetSignfRSSIChangeReq(
33223 WDI_EXTScanResetSignfRSSIChangeReqParams*
33224 pwdiEXTScanResetSignfRSSIChangeReqParams,
33225 WDI_EXTScanResetSignfRSSIChangeRspCb
33226 wdiEXTScanResetSignfRSSIChangeRspCb,
33227 void* pUserData)
33228{
33229 WDI_EventInfoType wdiEventData;
33230
33231 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33232 "%s: %d ",__func__, __LINE__);
33233 /*------------------------------------------------------------------------
33234 Sanity Check
33235 ------------------------------------------------------------------------*/
33236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33237 {
33238 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33239 "WDI API call before module is initialized - Fail request");
33240
33241 return WDI_STATUS_E_NOT_ALLOWED;
33242 }
33243
33244 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33245 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33246 wdiEventData.uEventDataSize =
33247 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33248 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33249 wdiEventData.pUserData = pUserData;
33250
33251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33252}
33253
33254/**
33255 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33256 Extended Scana reset Significant RSSI change Request to FW
33257
33258 @param pWDICtx : wdi context
33259 pEventData : indication data
33260
33261 @see
33262 @return none
33263*/
33264WDI_Status
33265WDI_ProcessEXTScanResetSignfRSSIChangeReq
33266(
33267 WDI_ControlBlockType* pWDICtx,
33268 WDI_EventInfoType* pEventData
33269)
33270{
33271 WDI_EXTScanResetSignfRSSIChangeReqParams*
33272 pwdiEXTScanResetSignfRSSIChangeReqParams;
33273 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33274 wpt_uint8* pSendBuffer = NULL;
33275 wpt_uint16 usSendSize = 0;
33276 wpt_uint16 usDataOffset = 0;
33277 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33278
33279 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33280 "%s: %d ",__func__, __LINE__);
33281
33282 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33283 ( NULL == pEventData->pCBfnc ))
33284 {
33285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33286 "%s: Invalid parameters", __func__);
33287 WDI_ASSERT(0);
33288 return WDI_STATUS_E_FAILURE;
33289 }
33290
33291 pwdiEXTScanResetSignfRSSIChangeReqParams =
33292 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33293 wdiEXTScanResetSignfRSSIChangeRspCb =
33294 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33295
33296 /*-----------------------------------------------------------------------
33297 Get message buffer
33298 ! TO DO : proper conversion into the HAL Message Request Format
33299 -----------------------------------------------------------------------*/
33300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33301 pWDICtx,
33302 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33303 sizeof(tHalSigRssiResetReq),
33304 &pSendBuffer, &usDataOffset,
33305 &usSendSize))||
33306 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33307 {
33308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33309 "Unable to get send buffer in %s %p %p %p", __func__,
33310 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33311 wdiEXTScanResetSignfRSSIChangeRspCb);
33312 WDI_ASSERT(0);
33313 return WDI_STATUS_E_FAILURE;
33314 }
33315 pHalSigRssiResetReqParams =
33316 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33317
33318 pHalSigRssiResetReqParams->requestId =
33319 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33320
33321 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33322
33323
33324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33325 wdiEXTScanResetSignfRSSIChangeRspCb,
33326 pEventData->pUserData,
33327 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33328}
33329
33330/**
33331 @brief Process Extended Scan Start Rsp function (called when a response
33332 is being received over the bus from HAL)
33333
33334 @param pWDICtx: pointer to the WLAN DAL context
33335 pEventData: pointer to the event information structure
33336
33337 @see
33338 @return Result of the function call
33339*/
33340WDI_Status
33341WDI_ProcessEXTScanStartRsp
33342(
33343 WDI_ControlBlockType* pWDICtx,
33344 WDI_EventInfoType* pEventData
33345)
33346{
33347 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33348
33349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33350 "%s: %d",__func__, __LINE__);
33351 /*-------------------------------------------------------------------------
33352 Sanity check
33353 -------------------------------------------------------------------------*/
33354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33355 ( NULL == pEventData->pEventData))
33356 {
33357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33358 "%s: Invalid parameters", __func__);
33359 WDI_ASSERT(0);
33360 return WDI_STATUS_E_FAILURE;
33361 }
33362
33363 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33364 if ( NULL == wdiEXTScanStartRspCb)
33365 {
33366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33367 "%s: Callback function Invalid", __func__);
33368 WDI_ASSERT(0);
33369 return WDI_STATUS_E_FAILURE;
33370 }
33371
33372 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33373
33374 return WDI_STATUS_SUCCESS;
33375}
33376
33377
33378/**
33379 @brief Process Extended Scan Stop Rsp function (called when a response
33380 is being received over the bus from HAL)
33381
33382 @param pWDICtx: pointer to the WLAN DAL context
33383 pEventData: pointer to the event information structure
33384
33385 @see
33386 @return Result of the function call
33387*/
33388WDI_Status
33389WDI_ProcessEXTScanStopRsp
33390(
33391 WDI_ControlBlockType* pWDICtx,
33392 WDI_EventInfoType* pEventData
33393)
33394{
33395 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33396
33397 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33398 "%s: %d",__func__, __LINE__);
33399
33400
33401 /*-------------------------------------------------------------------------
33402 Sanity check
33403 -------------------------------------------------------------------------*/
33404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33405 ( NULL == pEventData->pEventData))
33406 {
33407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33408 "%s: Invalid parameters", __func__);
33409 WDI_ASSERT(0);
33410 return WDI_STATUS_E_FAILURE;
33411 }
33412
33413 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33414 if ( NULL == wdiEXTScanStopRspCb)
33415 {
33416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33417 "%s: Callback function Invalid", __func__);
33418 WDI_ASSERT(0);
33419 return WDI_STATUS_E_FAILURE;
33420 }
33421
33422 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33423
33424 return WDI_STATUS_SUCCESS;
33425}
33426
33427/**
33428 @brief Process Extended Scan Get Cached Rsp function (called when a response
33429 is being received over the bus from HAL)
33430
33431 @param pWDICtx: pointer to the WLAN DAL context
33432 pEventData: pointer to the event information structure
33433
33434 @see
33435 @return Result of the function call
33436*/
33437WDI_Status
33438WDI_ProcessEXTScanGetCachedResultsRsp
33439(
33440 WDI_ControlBlockType* pWDICtx,
33441 WDI_EventInfoType* pEventData
33442)
33443{
33444 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33445
33446 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33447 "%s: %d Enter",__func__, __LINE__);
33448
33449
33450 /*-------------------------------------------------------------------------
33451 Sanity check
33452 -------------------------------------------------------------------------*/
33453 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33454 ( NULL == pEventData->pEventData))
33455 {
33456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33457 "%s: Invalid parameters", __func__);
33458 WDI_ASSERT(0);
33459 return WDI_STATUS_E_FAILURE;
33460 }
33461
33462 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33463 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33464 {
33465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33466 "%s: Callback function Invalid", __func__);
33467 WDI_ASSERT(0);
33468 return WDI_STATUS_E_FAILURE;
33469 }
33470
33471 wdiEXTScanGetCachedResultsRspCb(
33472 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33473
33474 return WDI_STATUS_SUCCESS;
33475}
33476
33477/**
33478 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33479 is being received over the bus from HAL)
33480
33481 @param pWDICtx: pointer to the WLAN DAL context
33482 pEventData: pointer to the event information structure
33483
33484 @see
33485 @return Result of the function call
33486*/
33487WDI_Status
33488WDI_ProcessEXTScanGetCapabilitiesRsp
33489(
33490 WDI_ControlBlockType* pWDICtx,
33491 WDI_EventInfoType* pEventData
33492)
33493{
33494 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33495
33496 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33497 "%s: %d ",__func__, __LINE__);
33498
33499
33500 /*-------------------------------------------------------------------------
33501 Sanity check
33502 -------------------------------------------------------------------------*/
33503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33504 ( NULL == pEventData->pEventData))
33505 {
33506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33507 "%s: Invalid parameters", __func__);
33508 WDI_ASSERT(0);
33509 return WDI_STATUS_E_FAILURE;
33510 }
33511
33512 wdiEXTScanGetCapabilitiesRspCb =
33513 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33514 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33515 {
33516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33517 "%s: Callback function Invalid", __func__);
33518 WDI_ASSERT(0);
33519 return WDI_STATUS_E_FAILURE;
33520 }
33521
33522 wdiEXTScanGetCapabilitiesRspCb(
33523 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33524
33525 return WDI_STATUS_SUCCESS;
33526}
33527
33528/**
33529 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33530 response is being received over the bus from HAL)
33531
33532 @param pWDICtx: pointer to the WLAN DAL context
33533 pEventData: pointer to the event information structure
33534
33535 @see
33536 @return Result of the function call
33537*/
33538WDI_Status
33539WDI_ProcessEXTScanSetHotlistBSSIDRsp
33540(
33541 WDI_ControlBlockType* pWDICtx,
33542 WDI_EventInfoType* pEventData
33543)
33544{
33545 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33546
33547 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33548 "%s: %d ",__func__, __LINE__);
33549
33550
33551 /*-------------------------------------------------------------------------
33552 Sanity check
33553 -------------------------------------------------------------------------*/
33554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33555 ( NULL == pEventData->pEventData))
33556 {
33557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33558 "%s: Invalid parameters", __func__);
33559 WDI_ASSERT(0);
33560 return WDI_STATUS_E_FAILURE;
33561 }
33562
33563 wdiEXTScanSetBSSIDHotlistRspCb =
33564 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33565 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33566 {
33567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33568 "%s: Callback function Invalid", __func__);
33569 WDI_ASSERT(0);
33570 return WDI_STATUS_E_FAILURE;
33571 }
33572
33573 wdiEXTScanSetBSSIDHotlistRspCb(
33574 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33575
33576 return WDI_STATUS_SUCCESS;
33577}
33578
33579/**
33580 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33581 when a response is being received over the bus from HAL)
33582
33583 @param pWDICtx: pointer to the WLAN DAL context
33584 pEventData: pointer to the event information structure
33585
33586 @see
33587 @return Result of the function call
33588*/
33589WDI_Status
33590WDI_ProcessEXTScanResetHotlistBSSIDRsp
33591(
33592 WDI_ControlBlockType* pWDICtx,
33593 WDI_EventInfoType* pEventData
33594)
33595{
33596 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33597
33598 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33599 "%s: %d ",__func__, __LINE__);
33600
33601
33602 /*-------------------------------------------------------------------------
33603 Sanity check
33604 -------------------------------------------------------------------------*/
33605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33606 ( NULL == pEventData->pEventData))
33607 {
33608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33609 "%s: Invalid parameters", __func__);
33610 WDI_ASSERT(0);
33611 return WDI_STATUS_E_FAILURE;
33612 }
33613
33614 wdiEXTScanResetBSSIDHotlistRspCb =
33615 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33616 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33617 {
33618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33619 "%s: Callback function Invalid", __func__);
33620 WDI_ASSERT(0);
33621 return WDI_STATUS_E_FAILURE;
33622 }
33623
33624 wdiEXTScanResetBSSIDHotlistRspCb(
33625 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33626
33627 return WDI_STATUS_SUCCESS;
33628}
33629
33630/**
33631 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33632 when a response is being received over the bus from HAL)
33633
33634 @param pWDICtx: pointer to the WLAN DAL context
33635 pEventData: pointer to the event information structure
33636
33637 @see
33638 @return Result of the function call
33639*/
33640WDI_Status
33641WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33642(
33643 WDI_ControlBlockType* pWDICtx,
33644 WDI_EventInfoType* pEventData
33645)
33646{
33647 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33648
33649 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33650 "%s: %d",__func__, __LINE__);
33651
33652
33653 /*-------------------------------------------------------------------------
33654 Sanity check
33655 -------------------------------------------------------------------------*/
33656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33657 ( NULL == pEventData->pEventData))
33658 {
33659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33660 "%s: Invalid parameters", __func__);
33661 WDI_ASSERT(0);
33662 return WDI_STATUS_E_FAILURE;
33663 }
33664
33665 wdiEXTScanSetSignfRSSIChangeRspCb =
33666 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33667 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33668 {
33669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33670 "%s: Callback function Invalid", __func__);
33671 WDI_ASSERT(0);
33672 return WDI_STATUS_E_FAILURE;
33673 }
33674
33675 wdiEXTScanSetSignfRSSIChangeRspCb(
33676 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33677
33678 return WDI_STATUS_SUCCESS;
33679}
33680
33681/**
33682 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33683 (called when a response is being received over the bus from HAL)
33684
33685 @param pWDICtx: pointer to the WLAN DAL context
33686 pEventData: pointer to the event information structure
33687
33688 @see
33689 @return Result of the function call
33690*/
33691WDI_Status
33692WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33693(
33694 WDI_ControlBlockType* pWDICtx,
33695 WDI_EventInfoType* pEventData
33696)
33697{
33698 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33699
33700 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33701 "%s: %d Enter",__func__, __LINE__);
33702
33703
33704 /*-------------------------------------------------------------------------
33705 Sanity check
33706 -------------------------------------------------------------------------*/
33707 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33708 ( NULL == pEventData->pEventData))
33709 {
33710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33711 "%s: Invalid parameters", __func__);
33712 WDI_ASSERT(0);
33713 return WDI_STATUS_E_FAILURE;
33714 }
33715
33716 wdiEXTScanResetSignfRSSIChangeRspCb =
33717 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33718 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33719 {
33720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33721 "%s: Callback function Invalid", __func__);
33722 WDI_ASSERT(0);
33723 return WDI_STATUS_E_FAILURE;
33724 }
33725
33726 wdiEXTScanResetSignfRSSIChangeRspCb(
33727 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33728
33729 return WDI_STATUS_SUCCESS;
33730}
33731#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033732
33733/**
33734 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33735
33736 @param None
33737
33738 @see
33739
33740 @return Status of the request
33741*/
33742WDI_Status
33743WDI_SetSpoofMacAddrReq
33744(
33745 WDI_SpoofMacAddrInfoType* pWdiReq,
33746 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33747 void* pUserData)
33748{
33749 WDI_EventInfoType wdiEventData;
33750
33751 /*-------------------------------------------------------------------------
33752 Sanity Check
33753 ------------------------------------------------------------------------*/
33754 if (eWLAN_PAL_FALSE == gWDIInitialized)
33755 {
33756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33757 "WDI API call before module is initialized - Fail request!");
33758
33759 return WDI_STATUS_E_NOT_ALLOWED;
33760 }
33761
33762 /*-------------------------------------------------------------------------
33763 Fill in Event data and post to the Main FSM
33764 ------------------------------------------------------------------------*/
33765 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33766 wdiEventData.pEventData = pWdiReq;
33767 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33768 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33769 wdiEventData.pUserData = pUserData;
33770
33771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33772}
33773
33774/**
33775 @brief Process SpoofMacAddr Request
33776
33777 @param pWDICtx: pointer to the WLAN DAL context
33778 pEventData: pointer to the event information structure
33779
33780 @see
33781 @return Result of the function call
33782*/
33783WDI_Status
33784WDI_ProcessSpoofMacAddrReq
33785(
33786 WDI_ControlBlockType* pWDICtx,
33787 WDI_EventInfoType* pEventData
33788)
33789{
33790 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33791 wpt_uint8* pSendBuffer = NULL;
33792 wpt_uint16 usDataOffset = 0;
33793 wpt_uint16 usSendSize = 0;
33794 WDI_Status wdiStatus;
33795 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33796 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33797
33798
33799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33800 "%s: %d Enter",__func__, __LINE__);
33801
33802 /*-------------------------------------------------------------------------
33803 Sanity check
33804 -------------------------------------------------------------------------*/
33805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33806 ( NULL == pEventData->pEventData))
33807 {
33808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33809 "%s: Invalid parameters", __func__);
33810 WDI_ASSERT(0);
33811 return WDI_STATUS_E_FAILURE;
33812 }
33813 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33814
33815 /*-----------------------------------------------------------------------
33816 Get message buffer
33817 -----------------------------------------------------------------------*/
33818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33819 WDI_SPOOF_MAC_ADDR_REQ,
33820 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33821 &pSendBuffer, &usDataOffset, &usSendSize))||
33822 (usSendSize < (usDataOffset +
33823 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33824 {
33825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33826 "Unable to get send buffer in Process Spoof Mac Addr Req");
33827 WDI_ASSERT(0);
33828 return WDI_STATUS_E_FAILURE;
33829 }
33830
33831 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33832 wdiSpoofMacAddr->macAddr,
33833 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33834
33835 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33836
33837 wpalMemoryCopy( pSendBuffer+usDataOffset,
33838 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33839 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33840
33841 /*-------------------------------------------------------------------------
33842 Send Suspend Request to HAL
33843 -------------------------------------------------------------------------*/
33844 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33845 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33846
33847 return wdiStatus;
33848}
33849
33850/**
33851 @brief Process Spoof Mac Address Rsp function
33852 (called when a response is being received over the bus from HAL)
33853
33854 @param pWDICtx: pointer to the WLAN DAL context
33855 pEventData: pointer to the event information structure
33856
33857 @see
33858 @return Result of the function call
33859*/
33860WDI_Status
33861WDI_ProcessSpoofMacAddrRsp
33862(
33863 WDI_ControlBlockType* pWDICtx,
33864 WDI_EventInfoType* pEventData
33865)
33866{
33867 tMacSpoofedScanResp halRsp;
33868 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33869 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33870
33871 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33872 "%s: %d Enter",__func__, __LINE__);
33873
33874 /*-------------------------------------------------------------------------
33875 Sanity check
33876 -------------------------------------------------------------------------*/
33877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33878 ( NULL == pEventData->pEventData))
33879 {
33880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33881 "%s: Invalid parameters", __func__);
33882 WDI_ASSERT(0);
33883 return WDI_STATUS_E_FAILURE;
33884 }
33885 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33886
33887 /*-------------------------------------------------------------------------
33888 Extract response and send it to UMAC
33889 -------------------------------------------------------------------------*/
33890 wpalMemoryCopy( &halRsp,
33891 pEventData->pEventData, sizeof(halRsp));
33892
33893 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33894
33895 /*Notify UMAC*/
33896 wdiSpoofMacAddrRspCb(
33897 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33898
33899 return WDI_STATUS_SUCCESS;
33900}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033901
33902/**
Siddharth Bhal64246172015-02-27 01:04:37 +053033903 @brief Process Get Frame Log Rsp function
33904 (called when a response is being received over the bus from HAL)
33905
33906 @param pWDICtx: pointer to the WLAN DAL context
33907 pEventData: pointer to the event information structure
33908
33909 @see
33910 @return Result of the function call
33911*/
33912WDI_Status
33913WDI_ProcessGetFrameLogRsp
33914(
33915 WDI_ControlBlockType* pWDICtx,
33916 WDI_EventInfoType* pEventData
33917)
33918{
33919 tGetFrameLogResp halRsp;
33920 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
33921 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
33922
33923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33924 "%s: %d Enter",__func__, __LINE__);
33925
33926 /*-------------------------------------------------------------------------
33927 Sanity check
33928 -------------------------------------------------------------------------*/
33929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33930 ( NULL == pEventData->pEventData))
33931 {
33932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33933 "%s: Invalid parameters", __func__);
33934 WDI_ASSERT(0);
33935 return WDI_STATUS_E_FAILURE;
33936 }
33937
33938 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
33939
33940 /*-------------------------------------------------------------------------
33941 Extract response and send it to UMAC
33942 -------------------------------------------------------------------------*/
33943 wpalMemoryCopy( &halRsp,
33944 pEventData->pEventData, sizeof(halRsp));
33945
33946 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33947
33948 /*Notify UMAC*/
33949 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
33950
33951 return WDI_STATUS_SUCCESS;
33952}
33953/**
33954 @brief Process MgmtLoggingInit Request
33955
33956 @param pWDICtx: pointer to the WLAN DAL context
33957 pEventData: pointer to the event information structure
33958
33959 @see
33960 @return Result of the function call
33961*/
33962WDI_Status
33963WDI_ProcessGetFrameLogReq
33964(
33965 WDI_ControlBlockType* pWDICtx,
33966 WDI_EventInfoType* pEventData
33967)
33968{
33969 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
33970 wpt_uint8* pSendBuffer = NULL;
33971 wpt_uint16 usDataOffset = 0;
33972 wpt_uint16 usSendSize = 0;
33973 WDI_Status wdiStatus;
33974 tGetFrameLogReqMsg halGetFrameLogReq;
33975 WDI_MgmtLoggingInitRspCb wdiGetFrameLogRspCb;
33976
33977
33978 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33979 "%s: %d Enter",__func__, __LINE__);
33980
33981 /*-------------------------------------------------------------------------
33982 Sanity check
33983 ------------------------------------------------------------------------*/
33984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33985 ( NULL == pEventData->pEventData))
33986 {
33987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33988 "%s: Invalid parameters", __func__);
33989 WDI_ASSERT(0);
33990 return WDI_STATUS_E_FAILURE;
33991 }
33992
33993 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
33994
33995 /*-----------------------------------------------------------------------
33996 Get message buffer
33997 -----------------------------------------------------------------------*/
33998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33999 WDI_GET_FRAME_LOG_REQ,
34000 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34001 &pSendBuffer, &usDataOffset, &usSendSize))||
34002 (usSendSize < (usDataOffset +
34003 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34004 {
34005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34006 "Unable to get send buffer in GetFrameLog Req");
34007 WDI_ASSERT(0);
34008 return WDI_STATUS_E_FAILURE;
34009 }
34010
34011 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34012 wdiGetFrameLogReq->flags;
34013
34014 wdiGetFrameLogRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34015
34016 wpalMemoryCopy( pSendBuffer+usDataOffset,
34017 &halGetFrameLogReq.tGetFrameLogReqParams,
34018 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34019
34020 /*-------------------------------------------------------------------------
34021 Send Suspend Request to HAL
34022 ------------------------------------------------------------------------*/
34023 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34024 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34025
34026 return wdiStatus;
34027}
34028/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034029 @brief Process MgmtFrame Logging Init Rsp function
34030 (called when a response is being received over the bus from HAL)
34031
34032 @param pWDICtx: pointer to the WLAN DAL context
34033 pEventData: pointer to the event information structure
34034
34035 @see
34036 @return Result of the function call
34037*/
34038WDI_Status
34039WDI_ProcessMgmtFrameLoggingInitRsp
34040(
34041 WDI_ControlBlockType* pWDICtx,
34042 WDI_EventInfoType* pEventData
34043)
34044{
34045 tMgmtLoggingInitResp halRsp;
34046 WDI_MgmtLoggingInitRspCb wdiMgmtFrameLoggingInitRspCb;
34047 WDI_MgmtLoggingRspParamType wdiMgmtFrameLoggingRsp;
34048
34049 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34050 "%s: %d Enter",__func__, __LINE__);
34051
34052 /*-------------------------------------------------------------------------
34053 Sanity check
34054 -------------------------------------------------------------------------*/
34055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34056 ( NULL == pEventData->pEventData))
34057 {
34058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34059 "%s: Invalid parameters", __func__);
34060 WDI_ASSERT(0);
34061 return WDI_STATUS_E_FAILURE;
34062 }
34063 wdiMgmtFrameLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pWDICtx->pfncRspCB;
34064
34065 /*-------------------------------------------------------------------------
34066 Extract response and send it to UMAC
34067 -------------------------------------------------------------------------*/
34068 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34069
34070 wdiMgmtFrameLoggingRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34071
34072 /*Notify UMAC*/
34073 wdiMgmtFrameLoggingInitRspCb( &wdiMgmtFrameLoggingRsp,
34074 pWDICtx->pRspCBUserData);
34075
34076 return WDI_STATUS_SUCCESS;
34077}
34078
34079/**
34080 @brief Process MgmtLoggingInit Request
34081
34082 @param pWDICtx: pointer to the WLAN DAL context
34083 pEventData: pointer to the event information structure
34084
34085 @see
34086 @return Result of the function call
34087*/
34088WDI_Status
34089WDI_ProcessMgmtLoggingInitReq
34090(
34091 WDI_ControlBlockType* pWDICtx,
34092 WDI_EventInfoType* pEventData
34093)
34094{
34095 WDI_MgmtLoggingInitReqInfoType* wdiMgmtLoggingInitReq;
34096 wpt_uint8* pSendBuffer = NULL;
34097 wpt_uint16 usDataOffset = 0;
34098 wpt_uint16 usSendSize = 0;
34099 WDI_Status wdiStatus;
34100 tHalMgmtLoggingInitReqMsg halMgmtLoggingInitReq;
34101 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb;
34102
34103
34104 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34105 "%s: %d Enter",__func__, __LINE__);
34106
34107 /*-------------------------------------------------------------------------
34108 Sanity check
34109 ------------------------------------------------------------------------*/
34110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34111 ( NULL == pEventData->pEventData))
34112 {
34113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34114 "%s: Invalid parameters", __func__);
34115 WDI_ASSERT(0);
34116 return WDI_STATUS_E_FAILURE;
34117 }
34118 wdiMgmtLoggingInitReq =
34119 (WDI_MgmtLoggingInitReqInfoType *)pEventData->pEventData;
34120
34121 /*-----------------------------------------------------------------------
34122 Get message buffer
34123 -----------------------------------------------------------------------*/
34124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34125 WDI_MGMT_LOGGING_INIT_REQ,
34126 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams),
34127 &pSendBuffer, &usDataOffset, &usSendSize))||
34128 (usSendSize < (usDataOffset +
34129 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams))))
34130 {
34131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34132 "Unable to get send buffer in Process Mgmt Logging Init Req");
34133 WDI_ASSERT(0);
34134 return WDI_STATUS_E_FAILURE;
34135 }
34136
34137 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.enableFlag=
34138 wdiMgmtLoggingInitReq->enableFlag;
34139 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameSize=
34140 wdiMgmtLoggingInitReq->frameSize;
34141 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameType=
34142 wdiMgmtLoggingInitReq->frameType;
34143 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.bufferMode=
34144 wdiMgmtLoggingInitReq->bufferMode;
34145
34146 wdiMgmtLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34147
34148 wpalMemoryCopy( pSendBuffer+usDataOffset,
34149 &halMgmtLoggingInitReq.tMgmtLoggingInitReqParams,
34150 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams));
34151
34152 /*-------------------------------------------------------------------------
34153 Send Mgmt Logging Init Request to HAL
34154 ------------------------------------------------------------------------*/
34155 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34156 wdiMgmtLoggingInitRspCb, pEventData->pUserData,
34157 WDI_MGMT_LOGGING_INIT_RSP);
34158
34159 return wdiStatus;
34160}
34161
34162/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034163 @brief WDI_EncryptMsgReq
34164
34165 @param pwdiEncryptMsgParams: Req parameter for the FW
34166 wdiEncryptMsgCbRsp: callback for passing back the response
34167 of the Req operation received from the device
34168 pUserData: user data will be passed back with the callback
34169
34170 @return SUCCESS or FAIL
34171*/
34172WDI_Status
34173WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34174 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34175 void* pUserData)
34176{
34177 WDI_EventInfoType wdiEventData;
34178
34179 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34180 "%s: %d Enter" ,__func__, __LINE__);
34181 /*------------------------------------------------------------------------
34182 Sanity Check
34183 ------------------------------------------------------------------------*/
34184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34185 {
34186 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34187 "WDI API call before module is initialized - Fail request");
34188
34189 return WDI_STATUS_E_NOT_ALLOWED;
34190 }
34191
34192 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34193 wdiEventData.pEventData = pwdiEncryptMsgParams;
34194 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34195 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34196 wdiEventData.pUserData = pUserData;
34197
34198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34199}
34200
34201/*
34202 * FUNCTION: WDI_ProcessEncryptMsgReq
34203 * Request to WDI to encrypt the given message.
34204 *
34205 * @param pWDICtx: pointer to the WLAN DAL context
34206 * pEventData: pointer to the event information structure
34207 *
34208 * @return Result of the function call
34209 */
34210
34211WDI_Status
34212WDI_ProcessEncryptMsgReq
34213(
34214 WDI_ControlBlockType* pWDICtx,
34215 WDI_EventInfoType* pEventData
34216)
34217{
34218 wpt_uint8* pSendBuffer = NULL;
34219 wpt_uint16 usDataOffset = 0;
34220 wpt_uint16 usSendSize = 0;
34221 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34222 tSetEncryptedDataParams *pHalEncryptDataReq;
34223 wpt_pkt80211 *pkt = NULL;
34224
34225 /*-------------------------------------------------------------------------
34226 Sanity check
34227 -------------------------------------------------------------------------*/
34228 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34229 ( NULL == pEventData->pCBfnc ) )
34230 {
34231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34232 "%s: Invalid parameters", __func__);
34233 WDI_ASSERT(0);
34234 return WDI_STATUS_E_FAILURE;
34235 }
34236
34237 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34238
34239 /*-----------------------------------------------------------------------
34240 Get message buffer
34241 -----------------------------------------------------------------------*/
34242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34243 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34244 sizeof(tSetEncryptedDataReqMsg),
34245 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34246 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34247 {
34248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34249 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34250 pEventData);
34251 WDI_ASSERT(0);
34252 return WDI_STATUS_E_FAILURE;
34253 }
34254
34255 pWDICtx->wdiReqStatusCB = NULL;
34256 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34257 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34258
34259 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34260 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34261
34262 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34263
34264 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34265 pkt->encParams.keyParams.key[0].keyId;
34266
34267 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34268 &pkt->encParams.keyParams.key[0].key[0], 16);
34269
34270 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34271
34272 pHalEncryptDataReq->data.length = pkt->data.length;
34273 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34274
34275 /*-------------------------------------------------------------------------
34276 Send Get STA Request to HAL
34277 -------------------------------------------------------------------------*/
34278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34279 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34280}
34281
34282/*
34283 * FUNCTION: WDI_ProcessEncryptMsgRsp
34284 * Receives the encrypted message from the firmware
34285 * @param pWDICtx: pointer to the WLAN DAL context
34286 * pEventData: pointer to the event information structure
34287 *
34288 * @return Result of the function call
34289 */
34290WDI_Status
34291WDI_ProcessEncryptMsgRsp
34292(
34293 WDI_ControlBlockType* pWDICtx,
34294 WDI_EventInfoType* pEventData
34295)
34296{
34297 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34298 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34299
34300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34301 "In %s",__func__);
34302
34303 /*-------------------------------------------------------------------------
34304 Sanity check
34305 -------------------------------------------------------------------------*/
34306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34307 ( NULL == pEventData->pEventData))
34308 {
34309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34310 "%s: Invalid parameters", __func__);
34311 WDI_ASSERT(0);
34312 return WDI_STATUS_E_FAILURE;
34313 }
34314
34315 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34316
34317 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34318
34319 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34320 pEventData->pEventData,
34321 pWDICtx->pRspCBUserData);
34322 return WDI_STATUS_SUCCESS;
34323}
Srinivas Dasari32a79262015-02-19 13:04:49 +053034324
34325WDI_Status
34326WDI_NanRequest
34327(
34328 WDI_NanRequestType *pwdiNanRequest,
34329 void *usrData
34330)
34331{
34332 WDI_EventInfoType wdiEventData;
34333
34334 /*------------------------------------------------------------------------
34335 Sanity Check
34336 ------------------------------------------------------------------------*/
34337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34338 {
34339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34340 "WDI API call before module is initialized - Fail request");
34341
34342 return WDI_STATUS_E_NOT_ALLOWED;
34343 }
34344
34345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34346 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
34347 pwdiNanRequest->request_data_len);
34348
34349 /*------------------------------------------------------------------------
34350 Fill in Event data and post to the Main FSM
34351 ------------------------------------------------------------------------*/
34352 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
34353 wdiEventData.pEventData = pwdiNanRequest;
34354 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
34355 + pwdiNanRequest->request_data_len;
34356 wdiEventData.pUserData = usrData;
34357 wdiEventData.pCBfnc = NULL;
34358
34359
34360 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34361}
34362
34363WDI_Status
34364WDI_ProcessNanRequest
34365(
34366 WDI_ControlBlockType* pWDICtx,
34367 WDI_EventInfoType* pEventData
34368)
34369{
34370 WDI_NanRequestType *pwdiNanRequest = NULL;
34371 wpt_uint8* pSendBuffer = NULL;
34372 wpt_uint16 usDataOffset = 0;
34373 wpt_uint16 usSendSize = 0;
34374
34375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34376 "WDI_ProcessNanRequest");
34377
34378 /*-------------------------------------------------------------------------
34379 Sanity check
34380 -------------------------------------------------------------------------*/
34381 if (( NULL == pEventData ) ||
34382 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
34383 {
34384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34385 "%s: Invalid parameters", __FUNCTION__);
34386 WDI_ASSERT(0);
34387 return WDI_STATUS_E_FAILURE;
34388 }
34389
34390 /*-----------------------------------------------------------------------
34391 Get message buffer
34392 -----------------------------------------------------------------------*/
34393 if (( WDI_STATUS_SUCCESS
34394 != WDI_GetMessageBuffer( pWDICtx,
34395 WDI_NAN_REQUEST,
34396 pwdiNanRequest->request_data_len,
34397 &pSendBuffer,
34398 &usDataOffset,
34399 &usSendSize))||
34400 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
34401 {
34402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34403 "Unable to get send buffer in NAN request %p %p",
34404 pEventData, pwdiNanRequest);
34405 WDI_ASSERT(0);
34406 return WDI_STATUS_E_FAILURE;
34407 }
34408
34409 wpalMemoryCopy( pSendBuffer+usDataOffset,
34410 pwdiNanRequest->request_data,
34411 pwdiNanRequest->request_data_len);
34412
34413 pWDICtx->pReqStatusUserData = NULL;
34414 pWDICtx->pfncRspCB = NULL;
34415 vos_mem_free( pEventData->pUserData);
34416
34417 /*-------------------------------------------------------------------------
34418 Send NAN Request to HAL
34419 -------------------------------------------------------------------------*/
34420 return WDI_SendMsg( pWDICtx,
34421 pSendBuffer,
34422 usSendSize,
34423 NULL,
34424 NULL,
34425 WDI_NAN_RESPONSE);
34426}
34427
34428/**
34429 @brief Process NAN Response function (called when a
34430 response is being received over the bus from HAL)
34431
34432 @param pWDICtx: pointer to the WLAN DAL context
34433 pEventData: pointer to the event information structure
34434
34435 @see
34436 @return Result of the function call
34437*/
34438WDI_Status
34439WDI_ProcessNanResponse
34440(
34441 WDI_ControlBlockType* pWDICtx,
34442 WDI_EventInfoType* pEventData
34443)
34444{
34445 WDI_Status wdiStatus;
34446 eHalStatus halStatus;
34447
34448 /*-------------------------------------------------------------------------
34449 Sanity check
34450 -------------------------------------------------------------------------*/
34451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34452 ( NULL == pEventData->pEventData))
34453 {
34454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34455 "%s: Invalid parameters", __func__);
34456 WDI_ASSERT(0);
34457 return WDI_STATUS_E_FAILURE;
34458 }
34459
34460 halStatus = *((eHalStatus*)pEventData->pEventData);
34461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
34462
34463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34464 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
34465
34466 return WDI_STATUS_SUCCESS;
34467}/*WDI_ProcessNanResponse*/
34468
34469
34470/**
34471 @brief Process NAN Event function (called when
34472 an indication is being received over the
34473 bus from HAL)
34474
34475 @param pWDICtx: pointer to the WLAN DAL context
34476 pEventData: pointer to the event information structure
34477
34478 @see
34479 @return Result of the function call
34480*/
34481WDI_Status
34482WDI_ProcessNanEvent
34483(
34484 WDI_ControlBlockType* pWDICtx,
34485 WDI_EventInfoType* pEventData
34486)
34487{
34488 WDI_LowLevelIndType wdiInd;
34489
34490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34491
34492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34493 ( NULL == pEventData->pEventData ))
34494 {
34495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34496 "%s: Invalid parameters", __func__);
34497 WDI_ASSERT( 0 );
34498 return WDI_STATUS_E_FAILURE;
34499 }
34500
34501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34502 "%s: Received NAN event", __func__);
34503 /*-------------------------------------------------------------------------
34504 Extract indication and send it to UMAC
34505 -------------------------------------------------------------------------*/
34506 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
34507 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
34508 pEventData->uEventDataSize;
34509 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
34510 pEventData->pEventData;
34511
34512 /*Notify UMAC*/
34513 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34514
34515 return WDI_STATUS_SUCCESS;
34516}/*WDI_ProcessNanEvent*/
34517