blob: 404c69c4749cc6f7fe9a411e2445bc085efa5941 [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
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530105#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700106#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
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530206};
Jeff Johnson295189b2012-06-20 16:38:30 -0700207
208/*--------------------------------------------------------------------------
209 WLAN DAL State Machine
210 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700211WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700212{
213 /*WDI_INIT_ST*/
214 {{
215 WDI_MainStart, /*WDI_START_EVENT*/
216 NULL, /*WDI_STOP_EVENT*/
217 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
218 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
219 WDI_MainClose, /*WDI_CLOSE_EVENT*/
220 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
221 }},
222
223 /*WDI_STARTED_ST*/
224 {{
225 WDI_MainStartStarted, /*WDI_START_EVENT*/
226 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
227 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
228 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
229 NULL, /*WDI_CLOSE_EVENT*/
230 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
231 }},
232
233 /*WDI_STOPPED_ST*/
234 {{
235 WDI_MainStart, /*WDI_START_EVENT*/
236 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
237 NULL, /*WDI_REQUEST_EVENT*/
238 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
239 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700240 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700241 }},
242
243 /*WDI_BUSY_ST*/
244 {{
245 WDI_MainStartBusy, /*WDI_START_EVENT*/
246 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
247 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
248 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
249 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
250 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
251 }}
252};
253
Jeff Johnsone7245742012-09-05 17:12:55 -0700254/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700255 DAL Request Processing Array - the functions in this table will only be
256 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700257 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700258 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700259WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700260{
261 /*INIT*/
262 WDI_ProcessStartReq, /* WDI_START_REQ */
263 WDI_ProcessStopReq, /* WDI_STOP_REQ */
264 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
265
266 /*SCAN*/
267 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
268 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
269 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
270 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
271
272 /*ASSOCIATION*/
273 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
274 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
275 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
276 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
277 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
278
279 /* Security */
280 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
281 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
282 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
283 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
284
285 /* QoS and BA APIs */
286 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
287 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
288 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
289 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
290 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
291
292 /* Miscellaneous Control APIs */
293 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
294 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
295 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
296 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
297 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
298
299 /*BA APIs*/
300 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
301 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
302
303 /*Beacon processing APIs*/
304 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
305 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
306
307 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
308 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
309 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
310 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 /* PowerSave APIs */
313 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
314 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
315 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
316 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
317 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
318 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
319 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
320 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
321 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
322 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
323 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
324 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
325 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
326 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
327 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
328 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
329 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
330 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
331 /*NV Download APIs*/
332 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
333 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
334 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
335#ifdef WLAN_FEATURE_VOWIFI_11R
336 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
337#else
338 NULL,
339#endif /* WLAN_FEATURE_VOWIFI_11R */
340 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
341 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700343
344#ifdef FEATURE_OEM_DATA_SUPPORT
345 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
346#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700347 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700348#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700349 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700350
351 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700352
353#ifdef FEATURE_WLAN_SCAN_PNO
354 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
355 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
356 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
357#else
358 NULL,
359 NULL,
360 NULL,
361#endif /* FEATURE_WLAN_SCAN_PNO */
362
363 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700364
Jeff Johnson295189b2012-06-20 16:38:30 -0700365#ifdef WLAN_FEATURE_PACKET_FILTERING
366 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700367 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700368 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700369 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700371 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700372 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700373 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700374#else
375 NULL,
376 NULL,
377 NULL,
378 NULL,
379#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700380 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700381 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
382 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
383
384 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800385#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700386 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
387#else
388 NULL,
389#endif
390
391#ifdef WLAN_FEATURE_GTK_OFFLOAD
392 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
393 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
394#else
395 NULL,
396 NULL,
397#endif // WLAN_FEATURE_GTK_OFFLOAD
398
399 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
400 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700401#ifdef WLAN_FEATURE_11AC
402 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800403#else
404 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700405#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800406#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800407 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
408#else
schang86c22c42013-03-13 18:41:24 -0700409 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800410#endif
schang86c22c42013-03-13 18:41:24 -0700411 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700412#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700413 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700414#else
415 NULL,
416#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530417#ifdef FEATURE_WLAN_TDLS
418 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
419#else
420 NULL,
421#endif
Leo Chang9056f462013-08-01 19:21:11 -0700422#ifdef FEATURE_WLAN_LPHB
423 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
424#else
425 NULL,
426#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530427
428#ifdef FEATURE_WLAN_BATCH_SCAN
429 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
430#else
431 NULL,
432#endif /* FEATURE_WLAN_BATCH_SCAN */
433
Arif Hussaina5ebce02013-08-09 15:09:58 -0700434 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800435
436 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530437
438 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530439
440#ifdef WLAN_FEATURE_LINK_LAYER_STATS
441 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
442 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
443 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
444#else
445 NULL,
446 NULL,
447 NULL,
448#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530449#ifdef WLAN_FEATURE_EXTSCAN
450 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
451 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
452 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
453 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
454 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
455 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
456 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
457 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
458#else
459 NULL,
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530468 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530469
470 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530471
472 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530473
474 WDI_ProcessMgmtLoggingInitReq, /* WDI_MGMT_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530475 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530476
477 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
478
schang86c22c42013-03-13 18:41:24 -0700479 /*-------------------------------------------------------------------------
480 Indications
481 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800483 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530484 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
485 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700486#ifdef WLAN_FEATURE_11W
487 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
488#else
489 NULL,
490#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700491 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
492 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530493#ifdef FEATURE_WLAN_BATCH_SCAN
494 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
495 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
496#else
497 NULL,
498 NULL,
499#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700500 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800501
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530502 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800503 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
504
505 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530506#ifdef FEATURE_WLAN_TDLS
507 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
508#else
509 NULL,
510#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530511 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530512
Jeff Johnson295189b2012-06-20 16:38:30 -0700513};
514
515
Jeff Johnsone7245742012-09-05 17:12:55 -0700516/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700517 DAL Request Processing Array - the functions in this table will only be
518 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700519 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700520 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700521WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700522{
523 /*INIT*/
524 WDI_ProcessStartRsp, /* WDI_START_RESP */
525 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
526 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
527
528 /*SCAN*/
529 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
530 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
531 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
532 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
533
534 /* ASSOCIATION*/
535 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
536 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
537 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
538 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
539 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
540
541 /* Security */
542 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
543 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
544 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
545 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
546
547 /* QoS and BA APIs */
548 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
549 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
550 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
551 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
552 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
553
554 /* Miscellaneous Control APIs */
555 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
556 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
557 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
558 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
559 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
560
561 /* BA APIs*/
562 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
563 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700564
Jeff Johnson295189b2012-06-20 16:38:30 -0700565 /* IBSS APIs*/
566 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
567 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
568
569 /*Soft AP APIs*/
570 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
571 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
572 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
573 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
574
575 /* PowerSave APIs */
576 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
577 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
578 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
579 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
580 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
581 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
582 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
583 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
584 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
585 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
586 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
587 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
588 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
589 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
590 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
591 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
592 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
593 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700594
Jeff Johnson295189b2012-06-20 16:38:30 -0700595
596 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
597
598 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
599 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
600#ifdef WLAN_FEATURE_VOWIFI_11R
601 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
602#else
603 NULL,
604#endif /* WLAN_FEATURE_VOWIFI_11R */
605 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
606 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700607#ifdef FEATURE_OEM_DATA_SUPPORT
608 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
609#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700610 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700611#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
613
Jeff Johnson295189b2012-06-20 16:38:30 -0700614 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700615
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700617
Jeff Johnsone7245742012-09-05 17:12:55 -0700618 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
619
Jeff Johnson295189b2012-06-20 16:38:30 -0700620#ifdef FEATURE_WLAN_SCAN_PNO
621 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
622 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
623 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
624#else
625 NULL,
626 NULL,
627 NULL,
628#endif // FEATURE_WLAN_SCAN_PNO
629
630 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700631 /*---------------------------------------------------------------------
632 Indications
633 ---------------------------------------------------------------------*/
634#ifdef WLAN_FEATURE_PACKET_FILTERING
635 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700636 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700637 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700638 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700639 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700640 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700641 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700642 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700643#else
644 NULL,
645 NULL,
646 NULL,
647 NULL,
648#endif // WLAN_FEATURE_PACKET_FILTERING
649
650 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
651 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
652
653 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800654#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700655 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
656#else
657 NULL,
658#endif
659
660#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700661 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
662 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700663#else
664 NULL,
665 NULL,
666#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700667 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
668 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700669#ifdef WLAN_FEATURE_11AC
670 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700671#else
672 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700673#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800674#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800675 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
676#else
677 NULL,
678#endif
schang86c22c42013-03-13 18:41:24 -0700679 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700680#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700681 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700682#else
683 NULL,
684#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530685#ifdef FEATURE_WLAN_TDLS
686 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
687#else
688 NULL,
689#endif
Leo Chang9056f462013-08-01 19:21:11 -0700690#ifdef FEATURE_WLAN_LPHB
691 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
692#else
693 NULL,
694#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530695
696#ifdef FEATURE_WLAN_BATCH_SCAN
697 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
698#else
699 NULL,
700#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800701 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530702
c_hpothu92367912014-05-01 15:18:17 +0530703 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800704
c_hpothu92367912014-05-01 15:18:17 +0530705 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
706
707 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800708
Sunil Duttbd736ed2014-05-26 21:19:41 +0530709
710#ifdef WLAN_FEATURE_LINK_LAYER_STATS
711 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
712 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
713 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
714#else
715 NULL,
716 NULL,
717 NULL,
718#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530719#ifdef WLAN_FEATURE_EXTSCAN
720 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
721 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
722 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
723 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
724 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
725 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
726 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
727 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
728#else
729 NULL,
730 NULL,
731 NULL,
732 NULL,
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530738 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530739
740 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530741
742 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530743 WDI_ProcessMgmtFrameLoggingInitRsp, /* WDI_MGMT_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530744 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530745
Srinivas Dasari32a79262015-02-19 13:04:49 +0530746 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
747
Jeff Johnson295189b2012-06-20 16:38:30 -0700748 /*---------------------------------------------------------------------
749 Indications
750 ---------------------------------------------------------------------*/
751 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
752 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
753 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
754 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
755 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
756 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
757
758 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
759
760 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
761
Jeff Johnson295189b2012-06-20 16:38:30 -0700762 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700763
764#ifdef FEATURE_WLAN_SCAN_PNO
765 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
766#else
767 NULL,
768#endif // FEATURE_WLAN_SCAN_PNO
769
770#ifdef WLAN_WAKEUP_EVENTS
771 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
772#else // WLAN_WAKEUP_EVENTS
773 NULL,
774#endif // WLAN_WAKEUP_EVENTS
775
776 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800777
Viral Modid86bde22012-12-10 13:09:21 -0800778 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530779#ifdef FEATURE_WLAN_TDLS
780 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
781#else
782 NULL,
783#endif
Leo Chang9056f462013-08-01 19:21:11 -0700784
785#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700786 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700787#else
788 NULL,
789#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700790
791 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700792
793 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530794
795#ifdef FEATURE_WLAN_BATCH_SCAN
796 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
797#else
798 NULL,
799#endif
800
Leo Chang0b0e45a2013-12-15 15:18:55 -0800801#ifdef FEATURE_WLAN_CH_AVOID
802 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
803#else
804 NULL,
805#endif /* FEATURE_WLAN_CH_AVOID */
806
Sunil Duttbd736ed2014-05-26 21:19:41 +0530807 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
808#ifdef WLAN_FEATURE_LINK_LAYER_STATS
809 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
810#else
811 NULL,
812#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530813#ifdef WLAN_FEATURE_EXTSCAN
814 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
815 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
816 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
817 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
818 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
819#else
820 NULL,
821 NULL,
822 NULL,
823 NULL,
824 NULL,
825#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530826#ifdef FEATURE_WLAN_TDLS
827 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
828#else
829 NULL,
830#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530831 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530832 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700833};
834
835
Jeff Johnsone7245742012-09-05 17:12:55 -0700836/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700837 WLAN DAL Global Control Block
838 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700839WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700840static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
841
Jeff Johnsone7245742012-09-05 17:12:55 -0700842const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700843
844/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700845WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700846void* WDI_GET_PAL_CTX( void )
847{
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700849}/*WDI_GET_PAL_CTX*/
850
Jeff Johnsone7245742012-09-05 17:12:55 -0700851/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700852 Helper inline converters
853 ============================================================================*/
854/*Convert WDI driver type into HAL driver type*/
855WPT_STATIC WPT_INLINE WDI_Status
856WDI_HAL_2_WDI_STATUS
857(
858 eHalStatus halStatus
859);
860
861/*Convert WDI request type into HAL request type*/
862WPT_STATIC WPT_INLINE tHalHostMsgType
863WDI_2_HAL_REQ_TYPE
864(
865 WDI_RequestEnumType wdiReqType
866);
867
868/*Convert WDI response type into HAL response type*/
869WPT_STATIC WPT_INLINE WDI_ResponseEnumType
870HAL_2_WDI_RSP_TYPE
871(
872 tHalHostMsgType halMsg
873);
874
875/*Convert WDI driver type into HAL driver type*/
876WPT_STATIC WPT_INLINE tDriverType
877WDI_2_HAL_DRV_TYPE
878(
879 WDI_DriverType wdiDriverType
880);
881
882/*Convert WDI stop reason into HAL stop reason*/
883WPT_STATIC WPT_INLINE tHalStopType
884WDI_2_HAL_STOP_REASON
885(
886 WDI_StopType wdiStopType
887);
888
889/*Convert WDI scan mode type into HAL scan mode type*/
890WPT_STATIC WPT_INLINE eHalSysMode
891WDI_2_HAL_SCAN_MODE
892(
893 WDI_ScanMode wdiScanMode
894);
895
896/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700897WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700898WDI_2_HAL_SEC_CH_OFFSET
899(
900 WDI_HTSecondaryChannelOffset wdiSecChOffset
901);
902
903/*Convert WDI BSS type into HAL BSS type*/
904WPT_STATIC WPT_INLINE tSirBssType
905WDI_2_HAL_BSS_TYPE
906(
907 WDI_BssType wdiBSSType
908);
909
910/*Convert WDI NW type into HAL NW type*/
911WPT_STATIC WPT_INLINE tSirNwType
912WDI_2_HAL_NW_TYPE
913(
914 WDI_NwType wdiNWType
915);
916
917/*Convert WDI chanel bonding type into HAL cb type*/
918WPT_STATIC WPT_INLINE ePhyChanBondState
919WDI_2_HAL_CB_STATE
920(
921 WDI_PhyChanBondState wdiCbState
922);
923
924/*Convert WDI chanel bonding type into HAL cb type*/
925WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
926WDI_2_HAL_HT_OPER_MODE
927(
928 WDI_HTOperatingMode wdiHTOperMode
929);
930
931/*Convert WDI mimo PS type into HAL mimo PS type*/
932WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
933WDI_2_HAL_MIMO_PS
934(
935 WDI_HTMIMOPowerSaveState wdiHTOperMode
936);
937
938/*Convert WDI ENC type into HAL ENC type*/
939WPT_STATIC WPT_INLINE tAniEdType
940WDI_2_HAL_ENC_TYPE
941(
942 WDI_EncryptType wdiEncType
943);
944
945/*Convert WDI WEP type into HAL WEP type*/
946WPT_STATIC WPT_INLINE tAniWepType
947WDI_2_HAL_WEP_TYPE
948(
949 WDI_WepType wdiWEPType
950);
951
952/*Convert WDI Link State into HAL Link State*/
953WPT_STATIC WPT_INLINE tSirLinkState
954WDI_2_HAL_LINK_STATE
955(
956 WDI_LinkStateType wdiLinkState
957);
958
Jeff Johnsone7245742012-09-05 17:12:55 -0700959/*Translate a STA Context from WDI into HAL*/
960WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700961void
962WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700963(
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 tConfigStaParams* phalConfigSta,
965 WDI_ConfigStaReqInfoType* pwdiConfigSta
966);
Jeff Johnsone7245742012-09-05 17:12:55 -0700967
968/*Translate a Rate set info from WDI into HAL*/
969WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700970WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700971(
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 tSirMacRateSet* pHalRateSet,
973 WDI_RateSet* pwdiRateSet
974);
975
976/*Translate an EDCA Parameter Record from WDI into HAL*/
977WPT_STATIC WPT_INLINE void
978WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700979(
Jeff Johnson295189b2012-06-20 16:38:30 -0700980 tSirMacEdcaParamRecord* phalEdcaParam,
981 WDI_EdcaParamRecord* pWDIEdcaParam
982);
983
984/*Copy a management frame header from WDI fmt into HAL fmt*/
985WPT_STATIC WPT_INLINE void
986WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
987(
988 tSirMacMgmtHdr* pmacMgmtHdr,
989 WDI_MacMgmtHdr* pwdiMacMgmtHdr
990);
991
992/*Copy config bss parameters from WDI fmt into HAL fmt*/
993WPT_STATIC WPT_INLINE void
994WDI_CopyWDIConfigBSSToHALConfigBSS
995(
996 tConfigBssParams* phalConfigBSS,
997 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
998);
999
Jeff Johnsone7245742012-09-05 17:12:55 -07001000/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001001 pointed to by user data */
1002WPT_STATIC WPT_INLINE void
1003WDI_ExtractRequestCBFromEvent
1004(
1005 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001006 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001007 void** ppUserData
1008);
1009
1010wpt_uint8
1011WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001012(
Jeff Johnson295189b2012-06-20 16:38:30 -07001013 WDI_ControlBlockType* pWDICtx,
1014 WDI_BSSSessionType** ppSession
1015);
1016
1017void
1018WDI_AddBcastSTAtoSTATable
1019(
1020 WDI_ControlBlockType* pWDICtx,
1021 WDI_AddStaParams * staParams,
1022 wpt_uint16 usBcastStaIdx
1023);
1024
1025WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001026(
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 WDI_ControlBlockType* pWDICtx,
1028 WDI_EventInfoType* pEventData
1029);
1030
1031void
1032WDI_SetPowerStateCb
1033(
1034 wpt_status status,
1035 unsigned int dxePhyAddr,
1036 void *pContext
1037);
1038
Jeff Johnson295189b2012-06-20 16:38:30 -07001039/**
1040 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001041
1042 @param wdiReqMsgId: WDI Message request Id
1043
1044 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001045 @return Result of the function call
1046*/
1047static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1048{
1049 switch (wdiReqMsgId)
1050 {
1051 CASE_RETURN_STRING( WDI_START_REQ );
1052 CASE_RETURN_STRING( WDI_STOP_REQ );
1053 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1054 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1055 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1056 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1057 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1058 CASE_RETURN_STRING( WDI_JOIN_REQ );
1059 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1060 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1061 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1062 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1063 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1064 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1065 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1066 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1067 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1068 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1069 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1070 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1071 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1072 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001073 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1075 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1076 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1077 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1078 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1079 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1080 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1081 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1082 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1083 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1084 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1085 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001086 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001087 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301088#ifdef FEATURE_WLAN_TDLS
1089 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301090 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301091#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001092 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1093 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1094 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1095 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1096 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1097 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1098 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1099 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1100 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1101 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1102 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1103 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1104 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1105 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1106 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1107 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1108 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1109 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1110 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1111 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1112 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1113 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1114 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1115 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1116 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001117 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001118 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1119 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1120 #ifdef FEATURE_WLAN_SCAN_PNO
1121 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1122 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1123 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1124 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001125#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001126 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001127#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001128 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1129 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1130 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1131 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1132 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1133 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1134 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1135 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1136 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301137 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001138 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001139 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001140#ifdef WLAN_FEATURE_11W
1141 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1142#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301143#ifdef FEATURE_WLAN_BATCH_SCAN
1144 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1145 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1146 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1147#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301148 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1149 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001150 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301151#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1152 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1153 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1154 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1155#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301156#ifdef WLAN_FEATURE_EXTSCAN
1157 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1158 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1159 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1160 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1161 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1162 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1163 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1164 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1165#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301166 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301167 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301168 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301169 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301170 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301171 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301172 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -07001173 default:
1174 return "Unknown WDI MessageId";
1175 }
1176}
1177
1178
1179
1180/**
1181 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001182
1183 @param wdiRespMsgId: WDI Message response Id
1184
1185 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 @return Result of the function call
1187*/
1188static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1189{
1190 switch (wdiRespMsgId)
1191 {
1192 CASE_RETURN_STRING( WDI_START_RESP );
1193 CASE_RETURN_STRING( WDI_STOP_RESP );
1194 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1195 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1196 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1197 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1198 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1199 CASE_RETURN_STRING( WDI_JOIN_RESP );
1200 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1201 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1202 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1203 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1204 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1205 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1206 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1207 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1208 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1209 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1210 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1211 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1212 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1213 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1214 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1215 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1216 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1217 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1219 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1220 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1221 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1222 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1223 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1224 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1225 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1226 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301227#ifdef FEATURE_WLAN_TDLS
1228 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301229 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301230 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1231#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001232 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1233 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1234 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1235 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1236 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1237 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1238 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1239 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1240 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1241 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1242 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1243 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1244 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1245 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1246 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1247 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1248 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1249 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1250 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1251 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1252 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1253 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1254 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1255 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1256 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001257 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1259 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1260 #ifdef FEATURE_WLAN_SCAN_PNO
1261 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1262 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1263 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1264 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001265#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001266 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001267#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1269 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1270 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1271 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1272 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1273 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1274 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1275 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001276 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301277#ifdef FEATURE_WLAN_BATCH_SCAN
1278 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1279#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001280 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301281 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301282 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301283#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1284 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1285 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1286 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1287#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301288#ifdef WLAN_FEATURE_EXTSCAN
1289 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1290 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1291 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1292 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1293 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1294 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1295 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1296 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1297 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1298 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1299 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1300 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1301 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1302
1303#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301304 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301305 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301306 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301307 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 default:
1309 return "Unknown WDI MessageId";
1310 }
1311}
1312
1313/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301314 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1315 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301316 @param capabilityBitmap - Base address of a 4 element Bitmap array
1317 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301318 @see
1319 @returns None
1320 */
1321void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1322{
Abhishek Singh08b60122014-02-04 18:05:23 +05301323 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301324 char *pTempCapStr = NULL;
1325 char *pCapStr = NULL;
1326 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1327 if (NULL == pTempCapStr)
1328 {
1329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1330 "Memory allocation failed for CapStr");
1331 return;
1332 }
1333
1334 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301335 for (j = 0; j < 4; j++) {
1336 for (i = 0; i < 32; i++) {
1337 if ((*(capabilityBitmap + j) & (1 << i))) {
1338 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301339 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1340 pCapStr += strlen("MCC");
1341 break;
1342 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1343 pCapStr += strlen("P2P");
1344 break;
1345 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1346 pCapStr += strlen("DOT11AC");
1347 break;
1348 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1349 pCapStr += strlen("SLM_SESSIONIZATION");
1350 break;
1351 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1352 pCapStr += strlen("DOT11AC_OPMODE");
1353 break;
1354 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1355 pCapStr += strlen("SAP32STA");
1356 break;
1357 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1358 pCapStr += strlen("TDLS");
1359 break;
1360 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1361 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1362 break;
1363 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1364 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1365 break;
1366 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1367 pCapStr += strlen("BEACON_OFFLOAD");
1368 break;
1369 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1370 pCapStr += strlen("SCAN_OFFLOAD");
1371 break;
1372 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1373 pCapStr += strlen("ROAM_OFFLOAD");
1374 break;
1375 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1376 pCapStr += strlen("BCN_MISS_OFFLOAD");
1377 break;
1378 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1379 pCapStr += strlen("STA_POWERSAVE");
1380 break;
1381 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1382 pCapStr += strlen("AP_UAPSD");
1383 break;
1384 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1385 pCapStr += strlen("AP_DFS");
1386 break;
1387 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1388 pCapStr += strlen("BLOCKACK");
1389 break;
1390 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1391 pCapStr += strlen("PHY_ERR");
1392 break;
1393 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1394 pCapStr += strlen("BCN_FILTER");
1395 break;
1396 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1397 pCapStr += strlen("RTT");
1398 break;
1399 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1400 pCapStr += strlen("RATECTRL");
1401 break;
1402 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1403 pCapStr += strlen("WOW");
1404 break;
1405 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1406 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1407 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301408 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1409 pCapStr += strlen("FW_IN_TX_PATH");
1410 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301411 case HT40_OBSS_SCAN:
1412 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1413 "%s", "HT40_OBSS_SCAN");
1414 pCapStr += strlen("HT40_OBSS_SCAN");
1415 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301416 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1417 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1418 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1419 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1420 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301421 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1422 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1423 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301424 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1425 pCapStr += strlen("CH_SWITCH_V1");
1426 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301427#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1428 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1429 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1430 break;
1431#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301432#ifdef WLAN_FEATURE_EXTSCAN
1433 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1434 pCapStr += strlen("EXTENDED_SCAN");
1435 break;
1436#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301437 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1438 pCapStr += strlen("MU_MIMO");
1439 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301440
Mihir Shetec34258c2014-07-30 17:50:27 +05301441 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1442 pCapStr += strlen("DYNAMIC_WMM_PS");
1443 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301444 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1445 pCapStr += strlen("FW_STATS");
1446 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301447 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1448 pCapStr += strlen("MAC_SPOOFED_SCAN");
1449 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301450 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1451 pCapStr += strlen("WPS_PRBRSP_TMPL");
1452 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301453 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1454 pCapStr += strlen("BCN_IE_FLT_DELTA");
1455 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301456 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1457 pCapStr += strlen("MGMT_FRAME_LOGGING");
1458 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301459 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1460 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1461 break;
1462
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301463 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1464 pCapStr += strlen("DISA");
1465 break;
1466
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301467 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1468 pCapStr += strlen("TDLS_OFF_CHANNEL");
1469 break;
1470
Abhishek Singh08b60122014-02-04 18:05:23 +05301471 }
1472 *pCapStr++ = ',';
1473 *pCapStr++ = ' ';
1474 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301475 }
1476 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301477 pCapStr -= 2;
1478 *pCapStr = '\0';
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pTempCapStr);
1480 if (pTempCapStr)
1481 {
1482 vos_mem_free(pTempCapStr);
1483 pTempCapStr = NULL;
1484 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301485}
1486
1487/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001488 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001489
1490 @param halStatusId: HAL status Id
1491
1492 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001493 @return Result of the function call
1494*/
1495static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1496{
1497 switch (halStatusId)
1498 {
1499 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1500 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1501 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1502 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1503 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1504 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1505 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1506 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1507 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1508 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1509 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1510 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1511 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1512 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1513 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1514 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1515 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1516 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1517 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1518 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1519 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1520 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1521 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1522 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1523 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1524 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1525 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1526 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1527 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1528 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1529 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1530 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1531 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1532 default:
1533 return "Unknown HAL status";
1534 }
1535}
1536
Jeff Johnsone7245742012-09-05 17:12:55 -07001537/*========================================================================
1538
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001540
Jeff Johnson295189b2012-06-20 16:38:30 -07001541==========================================================================*/
1542
1543/**
1544 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001545
Jeff Johnson295189b2012-06-20 16:38:30 -07001546 DAL will allocate all the resources it needs. It will open PAL, it will also
1547 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001548 DXE/SMD or any other drivers that they need.
1549
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301550 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001551 ppWDIGlobalCtx: output pointer of Global Context
1552 pWdiDevCapability: output pointer of device capability
1553
1554 @return Result of the function call
1555*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001556WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001557WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001558(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301559 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 void** ppWDIGlobalCtx,
1561 WDI_DeviceCapabilityType* pWdiDevCapability,
1562 unsigned int driverType
1563)
1564{
1565 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001566 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001568 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1570
1571 /*---------------------------------------------------------------------
1572 Sanity check
1573 ---------------------------------------------------------------------*/
1574 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1575 {
1576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1577 "Invalid input parameters in WDI_Init");
1578
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 }
1581
1582 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001583 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 ---------------------------------------------------------------------*/
1585 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1588 "WDI module already initialized - return");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*Module is now initialized - this flag is to ensure the fact that multiple
1594 init will not happen on WDI
1595 !! - potential race does exist because read and set are not atomic,
1596 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598
1599 /*Setup the control block */
1600 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301601 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001602
1603 /*Setup the STA Table*/
1604 wdiStatus = WDI_STATableInit(&gWDICb);
1605 if ( WDI_STATUS_SUCCESS != wdiStatus )
1606 {
1607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1608 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001609 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 goto fail_STATableInit;
1611 }
1612
1613 /*------------------------------------------------------------------------
1614 Open the PAL
1615 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301616 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1618 {
1619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1620 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001621 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001622 goto fail_wpalOpen;
1623 }
1624
1625 /*Initialize main synchro mutex - it will be used to ensure integrity of
1626 the main WDI Control Block*/
1627 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1628 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1629 {
1630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1631 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001632 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 goto fail_mutex;
1634 }
1635
1636 /*Initialize the response timer - it will be used to time all messages
1637 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001638 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1639 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 &gWDICb);
1641 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1642 {
1643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1644 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001645 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 goto fail_timer;
1647 }
1648
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001649 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1650 WDI_SsrTimerCB,
1651 &gWDICb);
1652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1655 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001656 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001657 goto fail_timer2;
1658 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 /* Initialize the WDI Pending Request Queue*/
1660 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1661 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1662 {
1663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1664 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001665 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 goto fail_pend_queue;
1667 }
1668
1669 /*Init WDI Pending Assoc Id Queue */
1670 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1671 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1672 {
1673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1674 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001675 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001676 goto fail_assoc_queue;
1677 }
1678
1679 /*Initialize the BSS sessions pending Queue */
1680 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1681 {
1682 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1683 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1684 {
1685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1686 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001687 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 goto fail_bss_queue;
1689 }
1690 }
1691
1692 /*Indicate the control block is sufficiently initialized for callbacks*/
1693 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1694
1695 /*------------------------------------------------------------------------
1696 Initialize the Data Path Utility Module
1697 ------------------------------------------------------------------------*/
1698 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1699 if ( WDI_STATUS_SUCCESS != wdiStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1702 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001703 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 goto fail_dp_util_init;
1705 }
1706
1707 /* Init Set power state event */
1708 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001709 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001710 {
1711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1712 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001713 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 goto fail_power_event;
1715 }
1716
1717 /* Init WCTS action event */
1718 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 {
1721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1722 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001723 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 goto fail_wcts_event;
1725 }
1726
1727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001728 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 ------------------------------------------------------------------------*/
1730 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1731 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001732 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 wctsCBs.wctsRxMsgCBData = &gWDICb;
1734
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001737 WDI_CT_CHANNEL_SIZE,
1738 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001739
1740 if ( NULL == gWDICb.wctsHandle )
1741 {
1742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001743 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 goto fail_wcts_open;
1745 }
1746
1747 gWDICb.driverMode = (tDriverType)driverType;
1748 /* FTM mode not need to open Transport Driver */
1749 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 /*------------------------------------------------------------------------
1752 Open the Data Transport
1753 ------------------------------------------------------------------------*/
1754 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1755 {
1756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001757 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 goto fail_wdts_open;
1759 }
1760 }
1761
1762 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001763 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301764 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 /*Send the context as a ptr to the global WDI Control Block*/
1766 *ppWDIGlobalCtx = &gWDICb;
1767
1768 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1771 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1772 return WDI_STATUS_SUCCESS;
1773
1774 /* ERROR handlers
1775 Undo everything that completed successfully */
1776
1777 fail_wdts_open:
1778 {
1779 wpt_status eventStatus;
1780
1781 /* Closing WCTS in this scenario is tricky since it has to close
1782 the SMD channel and then we get notified asynchronously when
1783 the channel has been closed. So we take some of the logic from
1784 the "normal" close procedure in WDI_Close()
1785 */
1786
1787 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001788 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001789 {
1790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001791 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 }
1793
1794 WCTS_CloseTransport(gWDICb.wctsHandle);
1795
1796 /* Wait for WCTS to close the control transport. If we were able
1797 to reset the event flag, then we'll wait for the event,
1798 otherwise we'll wait for a maximum amount of time required for
1799 the channel to be closed */
1800 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1801 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001802 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 WDI_WCTS_ACTION_TIMEOUT);
1804 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1805 {
1806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001807 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 }
1809 }
1810 else
1811 {
1812 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1813 }
1814 }
1815 fail_wcts_open:
1816 wpalEventDelete(&gWDICb.wctsActionEvent);
1817 fail_wcts_event:
1818 wpalEventDelete(&gWDICb.setPowerStateEvent);
1819 fail_power_event:
1820 WDI_DP_UtilsExit(&gWDICb);
1821 fail_dp_util_init:
1822 gWDICb.magic = 0;
1823 fail_bss_queue:
1824 /* entries 0 thru i-1 were successfully initialized */
1825 while (0 < i)
1826 {
1827 i--;
1828 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1829 }
1830 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1831 fail_assoc_queue:
1832 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1833 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001834 wpalTimerDelete(&gWDICb.ssrTimer);
1835 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001836 wpalTimerDelete(&gWDICb.wptResponseTimer);
1837 fail_timer:
1838 wpalMutexDelete(&gWDICb.wptMutex);
1839 fail_mutex:
1840 wpalClose(gWDICb.pPALContext);
1841 fail_wpalOpen:
1842 WDI_STATableClose(&gWDICb);
1843 fail_STATableInit:
1844 gWDIInitialized = eWLAN_PAL_FALSE;
1845
1846 return WDI_STATUS_E_FAILURE;
1847
1848}/*WDI_Init*/;
1849
1850/**
1851 @brief WDI_Start will be called when the upper MAC is ready to
1852 commence operation with the WLAN Device. Upon the call
1853 of this API the WLAN DAL will pack and send a HAL Start
1854 message to the lower RIVA sub-system if the SMD channel
1855 has been fully opened and the RIVA subsystem is up.
1856
1857 If the RIVA sub-system is not yet up and running DAL
1858 will queue the request for Open and will wait for the
1859 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001860 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001861
1862 WDI_Init must have been called.
1863
Jeff Johnsone7245742012-09-05 17:12:55 -07001864 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001865 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001866
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 wdiStartRspCb: callback for passing back the response of
1868 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001869
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 callback
1872
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 @see WDI_Start
1874 @return Result of the function call
1875*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001877WDI_Start
1878(
1879 WDI_StartReqParamsType* pwdiStartParams,
1880 WDI_StartRspCb wdiStartRspCb,
1881 void* pUserData
1882)
1883{
1884 WDI_EventInfoType wdiEventData;
1885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1886
1887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001888 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 ------------------------------------------------------------------------*/
1890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1893 "WDI API call before module is initialized - Fail request");
1894
Jeff Johnsone7245742012-09-05 17:12:55 -07001895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001896 }
1897
1898 /*------------------------------------------------------------------------
1899 Fill in Event data and post to the Main FSM
1900 ------------------------------------------------------------------------*/
1901 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001902 wdiEventData.pEventData = pwdiStartParams;
1903 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1904 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 wdiEventData.pUserData = pUserData;
1906
1907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1908
1909}/*WDI_Start*/
1910
1911/**
1912 @brief WDI_Stop will be called when the upper MAC is ready to
1913 stop any operation with the WLAN Device. Upon the call
1914 of this API the WLAN DAL will pack and send a HAL Stop
1915 message to the lower RIVA sub-system if the DAL Core is
1916 in started state.
1917
1918 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001919
1920 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001921
1922 WDI_Start must have been called.
1923
Jeff Johnsone7245742012-09-05 17:12:55 -07001924 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001926
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 wdiStopRspCb: callback for passing back the response of
1928 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001931 callback
1932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 @see WDI_Start
1934 @return Result of the function call
1935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001937WDI_Stop
1938(
1939 WDI_StopReqParamsType* pwdiStopParams,
1940 WDI_StopRspCb wdiStopRspCb,
1941 void* pUserData
1942)
1943{
1944 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001945 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1947
1948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 ------------------------------------------------------------------------*/
1951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1952 {
1953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1954 "WDI API call before module is initialized - Fail request");
1955
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 }
1958
Jeff Johnson43971f52012-07-17 12:26:56 -07001959 /*Access to the global state must be locked before cleaning */
1960 wpalMutexAcquire(&pWDICtx->wptMutex);
1961
1962 /*Clear all pending request*/
1963 WDI_ClearPendingRequests(pWDICtx);
1964
1965 /*We have completed cleaning unlock now*/
1966 wpalMutexRelease(&pWDICtx->wptMutex);
1967
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 /* Free the global variables */
1969 wpalMemoryFree(gpHostWlanFeatCaps);
1970 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001971 gpHostWlanFeatCaps = NULL;
1972 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001973
1974 /*------------------------------------------------------------------------
1975 Fill in Event data and post to the Main FSM
1976 ------------------------------------------------------------------------*/
1977 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 wdiEventData.pEventData = pwdiStopParams;
1979 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1980 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 wdiEventData.pUserData = pUserData;
1982
1983 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1984
1985}/*WDI_Stop*/
1986
1987
1988
1989/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001990 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 needs to interact with DAL. DAL will free its control
1992 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001993
1994 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001995
1996 WDI_Stop must have been called.
1997
1998 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 @see WDI_Stop
2001 @return Result of the function call
2002*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002003WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002004WDI_Close
2005(
2006 void
2007)
2008{
2009 wpt_uint8 i;
2010 WDI_EventInfoType wdiEventData;
2011 wpt_status wptStatus;
2012 wpt_status eventStatus;
2013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2014
2015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 ------------------------------------------------------------------------*/
2018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2019 {
2020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2021 "WDI API call before module is initialized - Fail request");
2022
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002024 }
2025
2026 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2027 (the control transport will be closed by the FSM and we'll want
2028 to wait until that completes)*/
2029 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002030 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 {
2032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002033 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 /* fall through and try to finish closing via the FSM */
2035 }
2036
2037 /*------------------------------------------------------------------------
2038 Fill in Event data and post to the Main FSM
2039 ------------------------------------------------------------------------*/
2040 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 wdiEventData.pEventData = NULL;
2042 wdiEventData.uEventDataSize = 0;
2043 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 wdiEventData.pUserData = NULL;
2045
2046 gWDIInitialized = eWLAN_PAL_FALSE;
2047
2048 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2049
2050 /*Wait for WCTS to close the control transport
2051 (but only if we were able to reset the event flag*/
2052 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2053 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002054 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 WDI_WCTS_ACTION_TIMEOUT);
2056 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2057 {
2058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002059 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 }
2061 }
2062
2063 /* Destroy the WCTS action event */
2064 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2065 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2068 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 }
2071
2072 /* Destroy the Set Power State event */
2073 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2074 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2077 "WDI Close failed to destroy an event");
2078
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 }
2081
2082 /*------------------------------------------------------------------------
2083 Closes the Data Path Utility Module
2084 ------------------------------------------------------------------------*/
2085 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2086 {
2087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2088 "WDI Init failed to close the DP Util Module");
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 }
2092
2093 /*destroy the BSS sessions pending Queue */
2094 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2095 {
2096 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2097 }
2098
2099 /* destroy the WDI Pending Assoc Id Request Queue*/
2100 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2101
2102 /* destroy the WDI Pending Request Queue*/
2103 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002104
Jeff Johnson295189b2012-06-20 16:38:30 -07002105 /*destroy the response timer */
2106 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2107
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002108 /*destroy the SSR timer */
2109 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 /*invalidate the main synchro mutex */
2112 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2113 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2114 {
2115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2116 "Failed to delete mutex %d", wptStatus);
2117 WDI_ASSERT(0);
2118 }
2119
2120 /*Clear control block. note that this will clear the "magic"
2121 which will inhibit all asynchronous callbacks*/
2122 WDI_CleanCB(&gWDICb);
2123
2124 return wptStatus;
2125
2126}/*WDI_Close*/
2127
2128/**
2129 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2130 This will do most of the WDI stop & close
2131 operations without doing any handshake with Riva
2132
2133 This will also make sure that the control transport
2134 will NOT be closed.
2135
2136 This request will not be queued.
2137
2138
2139 WDI_Start must have been called.
2140
2141 @param closeTransport: Close control channel if this is set
2142
2143 @return Result of the function call
2144*/
2145WDI_Status
2146WDI_Shutdown
2147(
2148 wpt_boolean closeTransport
2149)
2150{
2151 WDI_EventInfoType wdiEventData;
2152 wpt_status wptStatus;
2153 int i = 0;
2154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2155
2156 /*------------------------------------------------------------------------
2157 Sanity Check
2158 ------------------------------------------------------------------------*/
2159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2160 {
2161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2162 "WDI API call before module is initialized - Fail request");
2163
2164 return WDI_STATUS_E_NOT_ALLOWED;
2165 }
2166
2167 /*------------------------------------------------------------------------
2168 Fill in Event data and post to the Main FSM
2169 ------------------------------------------------------------------------*/
2170 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2171 wdiEventData.pEventData = NULL;
2172 wdiEventData.uEventDataSize = 0;
2173
2174 /* Shutdown will not be queued, if the state is busy timer will be
2175 * stopped & this message will be processed.*/
2176 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2177 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002180 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 }
2182 /* Destroy the Set Power State event */
2183 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2184 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2185 {
2186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2187 "WDI Close failed to destroy an event");
2188
2189 WDI_ASSERT(0);
2190 }
2191 /*------------------------------------------------------------------------
2192 Closes the Data Path Utility Module
2193 ------------------------------------------------------------------------*/
2194 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2195 {
2196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2197 "WDI Init failed to close the DP Util Module");
2198
2199 WDI_ASSERT(0);
2200 }
2201 if ( closeTransport )
2202 {
2203 /* Close control transport, called from module unload */
2204 WCTS_CloseTransport(gWDICb.wctsHandle);
2205 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002206 else
2207 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002208 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002209 the pending messages in the transport queue */
2210 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2211 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 /*destroy the BSS sessions pending Queue */
2213 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2214 {
2215 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2216 }
2217
2218 /* destroy the WDI Pending Assoc Id Request Queue*/
2219 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2220 /* destroy the WDI Pending Request Queue*/
2221 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2222 /*destroy the response timer */
2223 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002224 /*destroy the SSR timer */
2225 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002226
2227 /*invalidate the main synchro mutex */
2228 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2229 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2230 {
2231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002232 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 WDI_ASSERT(0);
2234 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002235 /* Free the global variables */
2236 wpalMemoryFree(gpHostWlanFeatCaps);
2237 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002238 gpHostWlanFeatCaps = NULL;
2239 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 /*Clear control block. note that this will clear the "magic"
2241 which will inhibit all asynchronous callbacks*/
2242 WDI_CleanCB(&gWDICb);
2243 return wptStatus;
2244
2245}/*WDI_Shutdown*/
2246
2247
Jeff Johnsone7245742012-09-05 17:12:55 -07002248/*========================================================================
2249
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002251
Jeff Johnson295189b2012-06-20 16:38:30 -07002252==========================================================================*/
2253
2254/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 the WLAN Device to get ready for a scan procedure. Upon
2257 the call of this API the WLAN DAL will pack and send a
2258 HAL Init Scan request message to the lower RIVA
2259 sub-system if DAL is in state STARTED.
2260
2261 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002263
2264 WDI_Start must have been called.
2265
2266 @param wdiInitScanParams: the init scan parameters as specified
2267 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002268
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 wdiInitScanRspCb: callback for passing back the response
2270 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002271
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 callback
2274
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 @see WDI_Start
2276 @return Result of the function call
2277*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002278WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002279WDI_InitScanReq
2280(
2281 WDI_InitScanReqParamsType* pwdiInitScanParams,
2282 WDI_InitScanRspCb wdiInitScanRspCb,
2283 void* pUserData
2284)
2285{
2286 WDI_EventInfoType wdiEventData;
2287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2288
2289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 ------------------------------------------------------------------------*/
2292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2293 {
2294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2295 "WDI API call before module is initialized - Fail request");
2296
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 }
2299
2300 /*------------------------------------------------------------------------
2301 Fill in Event data and post to the Main FSM
2302 ------------------------------------------------------------------------*/
2303 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 wdiEventData.pEventData = pwdiInitScanParams;
2305 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2306 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 wdiEventData.pUserData = pUserData;
2308
2309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2310
2311}/*WDI_InitScanReq*/
2312
2313/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 wishes to change the Scan channel on the WLAN Device.
2316 Upon the call of this API the WLAN DAL will pack and
2317 send a HAL Start Scan request message to the lower RIVA
2318 sub-system if DAL is in state STARTED.
2319
2320 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002322
2323 WDI_InitScanReq must have been called.
2324
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002327
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiStartScanRspCb: callback for passing back the
2329 response of the start scan operation received from the
2330 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002331
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002333 callback
2334
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 @see WDI_InitScanReq
2336 @return Result of the function call
2337*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002339WDI_StartScanReq
2340(
2341 WDI_StartScanReqParamsType* pwdiStartScanParams,
2342 WDI_StartScanRspCb wdiStartScanRspCb,
2343 void* pUserData
2344)
2345{
2346 WDI_EventInfoType wdiEventData;
2347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2348
2349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 ------------------------------------------------------------------------*/
2352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2353 {
2354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2355 "WDI API call before module is initialized - Fail request");
2356
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 }
2359
2360 /*------------------------------------------------------------------------
2361 Fill in Event data and post to the Main FSM
2362 ------------------------------------------------------------------------*/
2363 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 wdiEventData.pEventData = pwdiStartScanParams;
2365 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2366 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 wdiEventData.pUserData = pUserData;
2368
2369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2370
2371}/*WDI_StartScanReq*/
2372
2373
2374/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 wants to end scanning for a particular channel that it
2377 had set before by calling Scan Start on the WLAN Device.
2378 Upon the call of this API the WLAN DAL will pack and
2379 send a HAL End Scan request message to the lower RIVA
2380 sub-system if DAL is in state STARTED.
2381
2382 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002384
2385 WDI_StartScanReq must have been called.
2386
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002389
Jeff Johnson295189b2012-06-20 16:38:30 -07002390 wdiEndScanRspCb: callback for passing back the response
2391 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002392
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 callback
2395
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 @see WDI_StartScanReq
2397 @return Result of the function call
2398*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002399WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002400WDI_EndScanReq
2401(
2402 WDI_EndScanReqParamsType* pwdiEndScanParams,
2403 WDI_EndScanRspCb wdiEndScanRspCb,
2404 void* pUserData
2405)
2406{
2407 WDI_EventInfoType wdiEventData;
2408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2409
2410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002411 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 ------------------------------------------------------------------------*/
2413 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2414 {
2415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2416 "WDI API call before module is initialized - Fail request");
2417
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 }
2420
2421 /*------------------------------------------------------------------------
2422 Fill in Event data and post to the Main FSM
2423 ------------------------------------------------------------------------*/
2424 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 wdiEventData.pEventData = pwdiEndScanParams;
2426 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2427 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 wdiEventData.pUserData = pUserData;
2429
2430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2431
2432}/*WDI_EndScanReq*/
2433
2434
2435/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 completed the scan process on the WLAN Device. Upon the
2438 call of this API the WLAN DAL will pack and send a HAL
2439 Finish Scan Request request message to the lower RIVA
2440 sub-system if DAL is in state STARTED.
2441
2442 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002444
2445 WDI_InitScanReq must have been called.
2446
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002449
Jeff Johnson295189b2012-06-20 16:38:30 -07002450 wdiFinishScanRspCb: callback for passing back the
2451 response of the finish scan operation received from the
2452 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002453
Jeff Johnson295189b2012-06-20 16:38:30 -07002454 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 callback
2456
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 @see WDI_InitScanReq
2458 @return Result of the function call
2459*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002460WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002461WDI_FinishScanReq
2462(
2463 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2464 WDI_FinishScanRspCb wdiFinishScanRspCb,
2465 void* pUserData
2466)
2467{
2468 WDI_EventInfoType wdiEventData;
2469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2470
2471 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 ------------------------------------------------------------------------*/
2474 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2475 {
2476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2477 "WDI API call before module is initialized - Fail request");
2478
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 }
2481
2482 /*------------------------------------------------------------------------
2483 Fill in Event data and post to the Main FSM
2484 ------------------------------------------------------------------------*/
2485 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 wdiEventData.pEventData = pwdiFinishScanParams;
2487 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2488 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 wdiEventData.pUserData = pUserData;
2490
2491 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2492
2493}/*WDI_FinishScanReq*/
2494
Jeff Johnsone7245742012-09-05 17:12:55 -07002495/*========================================================================
2496
Jeff Johnson295189b2012-06-20 16:38:30 -07002497 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002498
Jeff Johnson295189b2012-06-20 16:38:30 -07002499==========================================================================*/
2500
2501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 to start an association procedure to a BSS. Upon the
2504 call of this API the WLAN DAL will pack and send a HAL
2505 Join request message to the lower RIVA sub-system if
2506 DAL is in state STARTED.
2507
2508 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002510
2511 WDI_Start must have been called.
2512
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002515
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 wdiJoinRspCb: callback for passing back the response of
2517 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002518
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 callback
2521
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 @see WDI_Start
2523 @return Result of the function call
2524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002526WDI_JoinReq
2527(
2528 WDI_JoinReqParamsType* pwdiJoinParams,
2529 WDI_JoinRspCb wdiJoinRspCb,
2530 void* pUserData
2531)
2532{
2533 WDI_EventInfoType wdiEventData;
2534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2535
2536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 ------------------------------------------------------------------------*/
2539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2540 {
2541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2542 "WDI API call before module is initialized - Fail request");
2543
Jeff Johnsone7245742012-09-05 17:12:55 -07002544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002545 }
2546
2547 /*------------------------------------------------------------------------
2548 Fill in Event data and post to the Main FSM
2549 ------------------------------------------------------------------------*/
2550 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002551 wdiEventData.pEventData = pwdiJoinParams;
2552 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2553 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 wdiEventData.pUserData = pUserData;
2555
2556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2557
2558}/*WDI_JoinReq*/
2559
2560/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 wishes to configure the newly acquired or in process of
2563 being acquired BSS to the HW . Upon the call of this API
2564 the WLAN DAL will pack and send a HAL Config BSS request
2565 message to the lower RIVA sub-system if DAL is in state
2566 STARTED.
2567
2568 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002570
2571 WDI_JoinReq must have been called.
2572
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002575
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 wdiConfigBSSRspCb: callback for passing back the
2577 response of the config BSS operation received from the
2578 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002579
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 callback
2582
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 @see WDI_JoinReq
2584 @return Result of the function call
2585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002587WDI_ConfigBSSReq
2588(
2589 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2590 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2591 void* pUserData
2592)
2593{
2594 WDI_EventInfoType wdiEventData;
2595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2596
2597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 ------------------------------------------------------------------------*/
2600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2601 {
2602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2603 "WDI API call before module is initialized - Fail request");
2604
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 }
2607
2608 /*------------------------------------------------------------------------
2609 Fill in Event data and post to the Main FSM
2610 ------------------------------------------------------------------------*/
2611 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 wdiEventData.pEventData = pwdiConfigBSSParams;
2613 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2614 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 wdiEventData.pUserData = pUserData;
2616
2617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2618
2619}/*WDI_ConfigBSSReq*/
2620
2621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 disassociating from the BSS and wishes to notify HW.
2624 Upon the call of this API the WLAN DAL will pack and
2625 send a HAL Del BSS request message to the lower RIVA
2626 sub-system if DAL is in state STARTED.
2627
2628 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002630
2631 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2632
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002635
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 wdiDelBSSRspCb: callback for passing back the response
2637 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002638
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 callback
2641
2642 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 @return Result of the function call
2644*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002645WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002646WDI_DelBSSReq
2647(
2648 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2649 WDI_DelBSSRspCb wdiDelBSSRspCb,
2650 void* pUserData
2651)
2652{
2653 WDI_EventInfoType wdiEventData;
2654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2655
2656 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002657 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 ------------------------------------------------------------------------*/
2659 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2660 {
2661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2662 "WDI API call before module is initialized - Fail request");
2663
Jeff Johnsone7245742012-09-05 17:12:55 -07002664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 }
2666
2667 /*------------------------------------------------------------------------
2668 Fill in Event data and post to the Main FSM
2669 ------------------------------------------------------------------------*/
2670 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002671 wdiEventData.pEventData = pwdiDelBSSParams;
2672 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2673 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 wdiEventData.pUserData = pUserData;
2675
2676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2677
2678}/*WDI_DelBSSReq*/
2679
2680/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002682 associated to a BSS and wishes to configure HW for
2683 associated state. Upon the call of this API the WLAN DAL
2684 will pack and send a HAL Post Assoc request message to
2685 the lower RIVA sub-system if DAL is in state STARTED.
2686
2687 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002688 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002689
2690 WDI_JoinReq must have been called.
2691
2692 @param wdiPostAssocReqParams: the assoc parameters as specified
2693 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002694
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 wdiPostAssocRspCb: callback for passing back the
2696 response of the post assoc operation received from the
2697 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002698
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002700 callback
2701
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 @see WDI_JoinReq
2703 @return Result of the function call
2704*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002705WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002706WDI_PostAssocReq
2707(
2708 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2709 WDI_PostAssocRspCb wdiPostAssocRspCb,
2710 void* pUserData
2711)
2712{
2713 WDI_EventInfoType wdiEventData;
2714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2715
2716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002717 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 ------------------------------------------------------------------------*/
2719 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2720 {
2721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2722 "WDI API call before module is initialized - Fail request");
2723
Jeff Johnsone7245742012-09-05 17:12:55 -07002724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 }
2726
2727 /*------------------------------------------------------------------------
2728 Fill in Event data and post to the Main FSM
2729 ------------------------------------------------------------------------*/
2730 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 wdiEventData.pEventData = pwdiPostAssocReqParams;
2732 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2733 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 wdiEventData.pUserData = pUserData;
2735
2736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2737
2738}/*WDI_PostAssocReq*/
2739
2740/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002742 association with another STA has ended and the station
2743 must be deleted from HW. Upon the call of this API the
2744 WLAN DAL will pack and send a HAL Del STA request
2745 message to the lower RIVA sub-system if DAL is in state
2746 STARTED.
2747
2748 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002750
2751 WDI_PostAssocReq must have been called.
2752
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002755
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 wdiDelSTARspCb: callback for passing back the response
2757 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002758
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 callback
2761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 @see WDI_PostAssocReq
2763 @return Result of the function call
2764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002766WDI_DelSTAReq
2767(
2768 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2769 WDI_DelSTARspCb wdiDelSTARspCb,
2770 void* pUserData
2771)
2772{
2773 WDI_EventInfoType wdiEventData;
2774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2775
2776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 ------------------------------------------------------------------------*/
2779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2780 {
2781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2782 "WDI API call before module is initialized - Fail request");
2783
Jeff Johnsone7245742012-09-05 17:12:55 -07002784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 }
2786
2787 /*------------------------------------------------------------------------
2788 Fill in Event data and post to the Main FSM
2789 ------------------------------------------------------------------------*/
2790 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 wdiEventData.pEventData = pwdiDelSTAParams;
2792 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2793 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002794 wdiEventData.pUserData = pUserData;
2795
2796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2797
2798}/*WDI_DelSTAReq*/
2799
Jeff Johnsone7245742012-09-05 17:12:55 -07002800/*========================================================================
2801
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804==========================================================================*/
2805
2806/**
2807 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2808 install a BSS encryption key on the HW. Upon the call of this
2809 API the WLAN DAL will pack and send a Set BSS Key request
2810 message to the lower RIVA sub-system if DAL is in state
2811 STARTED.
2812
2813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002815
2816 WDI_PostAssocReq must have been called.
2817
Jeff Johnsone7245742012-09-05 17:12:55 -07002818 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002820
Jeff Johnson295189b2012-06-20 16:38:30 -07002821 wdiSetBSSKeyRspCb: callback for passing back the
2822 response of the set BSS Key operation received from the
2823 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002824
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 callback
2827
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 @see WDI_PostAssocReq
2829 @return Result of the function call
2830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002832WDI_SetBSSKeyReq
2833(
2834 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2835 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2836 void* pUserData
2837)
2838{
2839 WDI_EventInfoType wdiEventData;
2840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2841
2842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 ------------------------------------------------------------------------*/
2845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2846 {
2847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2848 "WDI API call before module is initialized - Fail request");
2849
Jeff Johnsone7245742012-09-05 17:12:55 -07002850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 }
2852
2853 /*------------------------------------------------------------------------
2854 Fill in Event data and post to the Main FSM
2855 ------------------------------------------------------------------------*/
2856 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002857 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2858 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2859 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 wdiEventData.pUserData = pUserData;
2861
2862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2863
2864}/*WDI_SetBSSKeyReq*/
2865
2866/**
2867 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2868 uninstall a BSS key from HW. Upon the call of this API the
2869 WLAN DAL will pack and send a HAL Remove BSS Key request
2870 message to the lower RIVA sub-system if DAL is in state
2871 STARTED.
2872
2873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002875
2876 WDI_SetBSSKeyReq must have been called.
2877
Jeff Johnsone7245742012-09-05 17:12:55 -07002878 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002880
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 wdiRemoveBSSKeyRspCb: callback for passing back the
2882 response of the remove BSS key operation received from
2883 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002884
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 callback
2887
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 @see WDI_SetBSSKeyReq
2889 @return Result of the function call
2890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002892WDI_RemoveBSSKeyReq
2893(
2894 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2895 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2896 void* pUserData
2897)
2898{
2899 WDI_EventInfoType wdiEventData;
2900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2901
2902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 ------------------------------------------------------------------------*/
2905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2906 {
2907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2908 "WDI API call before module is initialized - Fail request");
2909
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002911 }
2912
2913 /*------------------------------------------------------------------------
2914 Fill in Event data and post to the Main FSM
2915 ------------------------------------------------------------------------*/
2916 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002917 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2918 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2919 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 wdiEventData.pUserData = pUserData;
2921
2922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2923
2924}/*WDI_RemoveBSSKeyReq*/
2925
2926
2927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 ready to install a STA(ast) encryption key in HW. Upon
2930 the call of this API the WLAN DAL will pack and send a
2931 HAL Set STA Key request message to the lower RIVA
2932 sub-system if DAL is in state STARTED.
2933
2934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002936
2937 WDI_PostAssocReq must have been called.
2938
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002941
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 wdiSetSTAKeyRspCb: callback for passing back the
2943 response of the set STA key operation received from the
2944 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002945
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 callback
2948
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 @see WDI_PostAssocReq
2950 @return Result of the function call
2951*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002953WDI_SetSTAKeyReq
2954(
2955 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2956 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2957 void* pUserData
2958)
2959{
2960 WDI_EventInfoType wdiEventData;
2961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2962
2963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 ------------------------------------------------------------------------*/
2966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2967 {
2968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2969 "WDI API call before module is initialized - Fail request");
2970
Jeff Johnsone7245742012-09-05 17:12:55 -07002971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002972 }
2973
2974 /*------------------------------------------------------------------------
2975 Fill in Event data and post to the Main FSM
2976 ------------------------------------------------------------------------*/
2977 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2979 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2980 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 wdiEventData.pUserData = pUserData;
2982
2983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2984
2985}/*WDI_SetSTAKeyReq*/
2986
2987
2988/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 wants to uninstall a previously set STA key in HW. Upon
2991 the call of this API the WLAN DAL will pack and send a
2992 HAL Remove STA Key request message to the lower RIVA
2993 sub-system if DAL is in state STARTED.
2994
2995 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002997
2998 WDI_SetSTAKeyReq must have been called.
2999
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003002
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 wdiRemoveSTAKeyRspCb: callback for passing back the
3004 response of the remove STA key operation received from
3005 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003006
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 callback
3009
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 @see WDI_SetSTAKeyReq
3011 @return Result of the function call
3012*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003014WDI_RemoveSTAKeyReq
3015(
3016 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3017 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3018 void* pUserData
3019)
3020{
3021 WDI_EventInfoType wdiEventData;
3022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3023
3024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 ------------------------------------------------------------------------*/
3027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3028 {
3029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3030 "WDI API call before module is initialized - Fail request");
3031
Jeff Johnsone7245742012-09-05 17:12:55 -07003032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 }
3034
3035 /*------------------------------------------------------------------------
3036 Fill in Event data and post to the Main FSM
3037 ------------------------------------------------------------------------*/
3038 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003039 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3040 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3041 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 wdiEventData.pUserData = pUserData;
3043
3044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3045
3046}/*WDI_RemoveSTAKeyReq*/
3047
3048
3049/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 wants to install a STA Bcast encryption key on the HW.
3052 Upon the call of this API the WLAN DAL will pack and
3053 send a HAL Start request message to the lower RIVA
3054 sub-system if DAL is in state STARTED.
3055
3056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003058
3059 WDI_PostAssocReq must have been called.
3060
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003063
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 wdiSetSTABcastKeyRspCb: callback for passing back the
3065 response of the set BSS Key operation received from the
3066 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003067
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 callback
3070
Jeff Johnson295189b2012-06-20 16:38:30 -07003071 @see WDI_PostAssocReq
3072 @return Result of the function call
3073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003075WDI_SetSTABcastKeyReq
3076(
3077 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3078 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3079 void* pUserData
3080)
3081
3082{
3083 WDI_EventInfoType wdiEventData;
3084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3085
3086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 ------------------------------------------------------------------------*/
3089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3090 {
3091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3092 "WDI API call before module is initialized - Fail request");
3093
Jeff Johnsone7245742012-09-05 17:12:55 -07003094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 }
3096
3097 /*------------------------------------------------------------------------
3098 Fill in Event data and post to the Main FSM
3099 ------------------------------------------------------------------------*/
3100 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3102 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3103 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 wdiEventData.pUserData = pUserData;
3105
3106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3107
3108}/*WDI_SetSTABcastKeyReq*/
3109
3110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 MAC wants to uninstall a STA Bcast key from HW. Upon the
3113 call of this API the WLAN DAL will pack and send a HAL
3114 Remove STA Bcast Key request message to the lower RIVA
3115 sub-system if DAL is in state STARTED.
3116
3117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003119
3120 WDI_SetSTABcastKeyReq must have been called.
3121
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 parameters as specified by the Device
3124 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3127 response of the remove STA Bcast key operation received
3128 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 callback
3132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 @see WDI_SetSTABcastKeyReq
3134 @return Result of the function call
3135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003137WDI_RemoveSTABcastKeyReq
3138(
3139 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3140 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3141 void* pUserData
3142)
3143{
3144 WDI_EventInfoType wdiEventData;
3145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3146
3147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 ------------------------------------------------------------------------*/
3150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3151 {
3152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3153 "WDI API call before module is initialized - Fail request");
3154
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 }
3157
3158 /*------------------------------------------------------------------------
3159 Fill in Event data and post to the Main FSM
3160 ------------------------------------------------------------------------*/
3161 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3163 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3164 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiEventData.pUserData = pUserData;
3166
3167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3168
3169}/*WDI_RemoveSTABcastKeyReq*/
3170
3171/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 MAC wants to set Max Tx Power to HW. Upon the
3174 call of this API the WLAN DAL will pack and send a HAL
3175 Remove STA Bcast Key request message to the lower RIVA
3176 sub-system if DAL is in state STARTED.
3177
3178 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003180
3181 WDI_SetSTABcastKeyReq must have been called.
3182
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 parameters as specified by the Device
3185 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3188 response of the remove STA Bcast key operation received
3189 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003190
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003192 callback
3193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 @see WDI_SetMaxTxPowerReq
3195 @return Result of the function call
3196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003198WDI_SetMaxTxPowerReq
3199(
3200 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3201 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3202 void* pUserData
3203)
3204{
3205 WDI_EventInfoType wdiEventData;
3206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3207
3208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 ------------------------------------------------------------------------*/
3211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3212 {
3213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3214 "WDI API call before module is initialized - Fail request");
3215
Jeff Johnsone7245742012-09-05 17:12:55 -07003216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003217 }
3218
3219 /*------------------------------------------------------------------------
3220 Fill in Event data and post to the Main FSM
3221 ------------------------------------------------------------------------*/
3222 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3224 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3225 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 wdiEventData.pUserData = pUserData;
3227
3228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3229}
3230
schang86c22c42013-03-13 18:41:24 -07003231/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003232 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3233 MAC wants to set Max Tx Power to HW for specific band.
3234
3235 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3236
3237 wdiReqStatusCb: callback for passing back the
3238 response msg from the device
3239
3240 pUserData: user data will be passed back with the
3241 callback
3242
3243 @see WDI_SetMaxTxPowerPerBandReq
3244 @return Result of the function call
3245*/
3246WDI_Status
3247WDI_SetMaxTxPowerPerBandReq
3248(
3249 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3250 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3251 void* pUserData
3252)
3253{
3254 WDI_EventInfoType wdiEventData;
3255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3256
3257 /*------------------------------------------------------------------------
3258 Sanity Check
3259 ------------------------------------------------------------------------*/
3260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3261 {
3262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3263 "WDI API call before module is initialized - Fail request");
3264
3265 return WDI_STATUS_E_NOT_ALLOWED;
3266 }
3267
3268 /*------------------------------------------------------------------------
3269 Fill in Event data and post to the Main FSM
3270 ------------------------------------------------------------------------*/
3271 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3272 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3273 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3274 wdiEventData.pCBfnc = wdiReqStatusCb;
3275 wdiEventData.pUserData = pUserData;
3276
3277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3278}
3279
3280/**
schang86c22c42013-03-13 18:41:24 -07003281 @brief WDI_SetTxPowerReq will be called when the upper
3282 MAC wants to set Tx Power to HW.
3283 In state BUSY this request will be queued. Request won't
3284 be allowed in any other state.
3285
3286
3287 @param pwdiSetTxPowerParams: set TS Power parameters
3288 BSSID and target TX Power with dbm included
3289
3290 wdiReqStatusCb: callback for passing back the response
3291
3292 pUserData: user data will be passed back with the
3293 callback
3294
3295 @return Result of the function call
3296*/
3297WDI_Status
3298WDI_SetTxPowerReq
3299(
3300 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3301 WDA_SetTxPowerRspCb wdiReqStatusCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3307
3308 /*------------------------------------------------------------------------
3309 Sanity Check
3310 ------------------------------------------------------------------------*/
3311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3312 {
3313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3314 "WDI API call before module is initialized - Fail request");
3315
3316 return WDI_STATUS_E_NOT_ALLOWED;
3317 }
3318
3319 /*------------------------------------------------------------------------
3320 Fill in Event data and post to the Main FSM
3321 ------------------------------------------------------------------------*/
3322 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3323 wdiEventData.pEventData = pwdiSetTxPowerParams;
3324 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3325 wdiEventData.pCBfnc = wdiReqStatusCb;
3326 wdiEventData.pUserData = pUserData;
3327
3328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3329}
3330
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003331#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003332WDI_Status
3333WDI_TSMStatsReq
3334(
3335 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3336 WDI_TsmRspCb wdiReqStatusCb,
3337 void* pUserData
3338)
3339{
3340 WDI_EventInfoType wdiEventData;
3341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 /*------------------------------------------------------------------------
3343 Sanity Check
3344 ------------------------------------------------------------------------*/
3345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3346 {
3347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3348 "WDI API call before module is initialized - Fail request");
3349
3350 return WDI_STATUS_E_NOT_ALLOWED;
3351 }
3352
3353 /*------------------------------------------------------------------------
3354 Fill in Event data and post to the Main FSM
3355 ------------------------------------------------------------------------*/
3356 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3357 wdiEventData.pEventData = pwdiTsmReqParams;
3358 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3359 wdiEventData.pCBfnc = wdiReqStatusCb;
3360 wdiEventData.pUserData = pUserData;
3361
3362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3363
3364}
3365#endif
3366
3367/*========================================================================
3368
3369 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371==========================================================================*/
3372
3373/**
3374 @brief WDI_AddTSReq will be called when the upper MAC to inform
3375 the device of a successful add TSpec negotiation. HW
3376 needs to receive the TSpec Info from the UMAC in order
3377 to configure properly the QoS data traffic. Upon the
3378 call of this API the WLAN DAL will pack and send a HAL
3379 Add TS request message to the lower RIVA sub-system if
3380 DAL is in state STARTED.
3381
3382 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003384
3385 WDI_PostAssocReq must have been called.
3386
3387 @param wdiAddTsReqParams: the add TS parameters as specified by
3388 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003389
Jeff Johnson295189b2012-06-20 16:38:30 -07003390 wdiAddTsRspCb: callback for passing back the response of
3391 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003392
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003394 callback
3395
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 @see WDI_PostAssocReq
3397 @return Result of the function call
3398*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003399WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003400WDI_AddTSReq
3401(
3402 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3403 WDI_AddTsRspCb wdiAddTsRspCb,
3404 void* pUserData
3405)
3406{
3407 WDI_EventInfoType wdiEventData;
3408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3409
3410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003411 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 ------------------------------------------------------------------------*/
3413 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3414 {
3415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3416 "WDI API call before module is initialized - Fail request");
3417
Jeff Johnsone7245742012-09-05 17:12:55 -07003418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 }
3420
3421 /*------------------------------------------------------------------------
3422 Fill in Event data and post to the Main FSM
3423 ------------------------------------------------------------------------*/
3424 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 wdiEventData.pEventData = pwdiAddTsReqParams;
3426 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3427 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 wdiEventData.pUserData = pUserData;
3429
3430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3431
3432}/*WDI_AddTSReq*/
3433
3434
3435
3436/**
3437 @brief WDI_DelTSReq will be called when the upper MAC has ended
3438 admission on a specific AC. This is to inform HW that
3439 QoS traffic parameters must be rest. Upon the call of
3440 this API the WLAN DAL will pack and send a HAL Del TS
3441 request message to the lower RIVA sub-system if DAL is
3442 in state STARTED.
3443
3444 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003446
3447 WDI_AddTSReq must have been called.
3448
3449 @param wdiDelTsReqParams: the del TS parameters as specified by
3450 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003451
Jeff Johnson295189b2012-06-20 16:38:30 -07003452 wdiDelTsRspCb: callback for passing back the response of
3453 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003454
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 callback
3457
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 @see WDI_AddTSReq
3459 @return Result of the function call
3460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003462WDI_DelTSReq
3463(
3464 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3465 WDI_DelTsRspCb wdiDelTsRspCb,
3466 void* pUserData
3467)
3468{
3469 WDI_EventInfoType wdiEventData;
3470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3471
3472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 ------------------------------------------------------------------------*/
3475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3476 {
3477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3478 "WDI API call before module is initialized - Fail request");
3479
Jeff Johnsone7245742012-09-05 17:12:55 -07003480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003481 }
3482
3483 /*------------------------------------------------------------------------
3484 Fill in Event data and post to the Main FSM
3485 ------------------------------------------------------------------------*/
3486 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003487 wdiEventData.pEventData = pwdiDelTsReqParams;
3488 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3489 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 wdiEventData.pUserData = pUserData;
3491
3492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3493
3494}/*WDI_DelTSReq*/
3495
3496
3497
3498/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 wishes to update the EDCA parameters used by HW for QoS
3501 data traffic. Upon the call of this API the WLAN DAL
3502 will pack and send a HAL Update EDCA Params request
3503 message to the lower RIVA sub-system if DAL is in state
3504 STARTED.
3505
3506 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003508
3509 WDI_PostAssocReq must have been called.
3510
Jeff Johnsone7245742012-09-05 17:12:55 -07003511 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003512 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003513
Jeff Johnson295189b2012-06-20 16:38:30 -07003514 wdiUpdateEDCAParamsRspCb: callback for passing back the
3515 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003516
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 callback
3519
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 @see WDI_PostAssocReq
3521 @return Result of the function call
3522*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003523WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003524WDI_UpdateEDCAParams
3525(
3526 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3527 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3528 void* pUserData
3529)
3530{
3531 WDI_EventInfoType wdiEventData;
3532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3533
3534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 ------------------------------------------------------------------------*/
3537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3538 {
3539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3540 "WDI API call before module is initialized - Fail request");
3541
Jeff Johnsone7245742012-09-05 17:12:55 -07003542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 }
3544
3545 /*------------------------------------------------------------------------
3546 Fill in Event data and post to the Main FSM
3547 ------------------------------------------------------------------------*/
3548 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003549 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3550 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3551 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 wdiEventData.pUserData = pUserData;
3553
3554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3555
3556}/*WDI_UpdateEDCAParams*/
3557
3558
3559/**
3560 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3561 successfully a BA session and needs to notify the HW for
3562 the appropriate settings to take place. Upon the call of
3563 this API the WLAN DAL will pack and send a HAL Add BA
3564 request message to the lower RIVA sub-system if DAL is
3565 in state STARTED.
3566
3567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003569
3570 WDI_PostAssocReq must have been called.
3571
3572 @param wdiAddBAReqParams: the add BA parameters as specified by
3573 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003574
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 wdiAddBARspCb: callback for passing back the response of
3576 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003577
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 callback
3580
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 @see WDI_PostAssocReq
3582 @return Result of the function call
3583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003585WDI_AddBASessionReq
3586(
3587 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3588 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3589 void* pUserData
3590)
3591{
3592 WDI_EventInfoType wdiEventData;
3593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3594
3595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 ------------------------------------------------------------------------*/
3598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3599 {
3600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3601 "WDI API call before module is initialized - Fail request");
3602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 }
3605
3606 /*------------------------------------------------------------------------
3607 Fill in Event data and post to the Main FSM
3608 ------------------------------------------------------------------------*/
3609 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3611 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3612 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 wdiEventData.pUserData = pUserData;
3614
3615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3616
3617}/*WDI_AddBASessionReq*/
3618
3619/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 inform HW that it has deleted a previously created BA
3622 session. Upon the call of this API the WLAN DAL will
3623 pack and send a HAL Del BA request message to the lower
3624 RIVA sub-system if DAL is in state STARTED.
3625
3626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003628
3629 WDI_AddBAReq must have been called.
3630
3631 @param wdiDelBAReqParams: the del BA parameters as specified by
3632 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003633
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 wdiDelBARspCb: callback for passing back the response of
3635 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 callback
3639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 @see WDI_AddBAReq
3641 @return Result of the function call
3642*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003643WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003644WDI_DelBAReq
3645(
3646 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3647 WDI_DelBARspCb wdiDelBARspCb,
3648 void* pUserData
3649)
3650{
3651 WDI_EventInfoType wdiEventData;
3652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3653
3654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 ------------------------------------------------------------------------*/
3657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3658 {
3659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3660 "WDI API call before module is initialized - Fail request");
3661
Jeff Johnsone7245742012-09-05 17:12:55 -07003662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 }
3664
3665 /*------------------------------------------------------------------------
3666 Fill in Event data and post to the Main FSM
3667 ------------------------------------------------------------------------*/
3668 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 wdiEventData.pEventData = pwdiDelBAReqParams;
3670 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3671 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 wdiEventData.pUserData = pUserData;
3673
3674 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3675
3676}/*WDI_DelBAReq*/
3677
Jeff Johnsone7245742012-09-05 17:12:55 -07003678/*========================================================================
3679
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003681
Jeff Johnson295189b2012-06-20 16:38:30 -07003682==========================================================================*/
3683
3684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 wants to set the power save related configurations of
3687 the WLAN Device. Upon the call of this API the WLAN DAL
3688 will pack and send a HAL Update CFG request message to
3689 the lower RIVA sub-system if DAL is in state STARTED.
3690
3691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003693
3694 WDI_Start must have been called.
3695
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003698
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 wdiSetPwrSaveCfgCb: callback for passing back the
3700 response of the set power save cfg operation received
3701 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003702
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 callback
3705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 @return Result of the function call
3708*/
3709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003710WDI_SetPwrSaveCfgReq
3711(
3712 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3713 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3714 void* pUserData
3715)
3716{
3717 WDI_EventInfoType wdiEventData;
3718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3719
3720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 ------------------------------------------------------------------------*/
3723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3724 {
3725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3726 "WDI API call before module is initialized - Fail request");
3727
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 }
3730
3731 /*------------------------------------------------------------------------
3732 Fill in Event data and post to the Main FSM
3733 ------------------------------------------------------------------------*/
3734 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003735 wdiEventData.pEventData = pwdiPowerSaveCfg;
3736 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3737 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 wdiEventData.pUserData = pUserData;
3739
3740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3741
3742}/*WDI_SetPwrSaveCfgReq*/
3743
3744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 request the device to get into IMPS power state. Upon
3747 the call of this API the WLAN DAL will send a HAL Enter
3748 IMPS request message to the lower RIVA sub-system if DAL
3749 is in state STARTED.
3750
3751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003753
Jeff Johnsone7245742012-09-05 17:12:55 -07003754
3755 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 response of the Enter IMPS operation received from the
3757 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003758
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 callback
3761
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 @see WDI_Start
3763 @return Result of the function call
3764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003766WDI_EnterImpsReq
3767(
Mihir Shetea4306052014-03-25 00:02:54 +05303768 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3770 void* pUserData
3771)
3772{
3773 WDI_EventInfoType wdiEventData;
3774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3775
3776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 ------------------------------------------------------------------------*/
3779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3780 {
3781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3782 "WDI API call before module is initialized - Fail request");
3783
Jeff Johnsone7245742012-09-05 17:12:55 -07003784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 }
3786
3787 /*------------------------------------------------------------------------
3788 Fill in Event data and post to the Main FSM
3789 ------------------------------------------------------------------------*/
3790 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303791 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3792 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 wdiEventData.pUserData = pUserData;
3795
3796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3797
3798}/*WDI_EnterImpsReq*/
3799
3800/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003801 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003802 request the device to get out of IMPS power state. Upon
3803 the call of this API the WLAN DAL will send a HAL Exit
3804 IMPS request message to the lower RIVA sub-system if DAL
3805 is in state STARTED.
3806
3807 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003809
Jeff Johnson295189b2012-06-20 16:38:30 -07003810
Jeff Johnsone7245742012-09-05 17:12:55 -07003811
3812 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003814
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 callback
3817
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 @see WDI_Start
3819 @return Result of the function call
3820*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003821WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003822WDI_ExitImpsReq
3823(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303824 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3826 void* pUserData
3827)
3828{
3829 WDI_EventInfoType wdiEventData;
3830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3831
3832 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 ------------------------------------------------------------------------*/
3835 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3836 {
3837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3838 "WDI API call before module is initialized - Fail request");
3839
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 }
3842
3843 /*------------------------------------------------------------------------
3844 Fill in Event data and post to the Main FSM
3845 ------------------------------------------------------------------------*/
3846 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303847 wdiEventData.pEventData = pwdiExitImpsReqParams;
3848 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003849 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 wdiEventData.pUserData = pUserData;
3851
3852 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3853
3854}/*WDI_ExitImpsReq*/
3855
3856/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 request the device to get into BMPS power state. Upon
3859 the call of this API the WLAN DAL will pack and send a
3860 HAL Enter BMPS request message to the lower RIVA
3861 sub-system if DAL is in state STARTED.
3862
3863 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003865
3866 WDI_PostAssocReq must have been called.
3867
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003870
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 wdiEnterBmpsRspCb: callback for passing back the
3872 response of the Enter BMPS operation received from the
3873 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003874
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 callback
3877
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 @see WDI_PostAssocReq
3879 @return Result of the function call
3880*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003881WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003882WDI_EnterBmpsReq
3883(
3884 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3885 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3886 void* pUserData
3887)
3888{
3889 WDI_EventInfoType wdiEventData;
3890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3891
3892 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003893 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 ------------------------------------------------------------------------*/
3895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3896 {
3897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3898 "WDI API call before module is initialized - Fail request");
3899
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 }
3902
3903 /*------------------------------------------------------------------------
3904 Fill in Event data and post to the Main FSM
3905 ------------------------------------------------------------------------*/
3906 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3908 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3909 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 wdiEventData.pUserData = pUserData;
3911
3912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3913
3914}/*WDI_EnterBmpsReq*/
3915
3916/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 request the device to get out of BMPS power state. Upon
3919 the call of this API the WLAN DAL will pack and send a
3920 HAL Exit BMPS request message to the lower RIVA
3921 sub-system if DAL is in state STARTED.
3922
3923 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003925
3926 WDI_PostAssocReq must have been called.
3927
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003930
Jeff Johnson295189b2012-06-20 16:38:30 -07003931 wdiExitBmpsRspCb: callback for passing back the response
3932 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003933
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 callback
3936
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 @see WDI_PostAssocReq
3938 @return Result of the function call
3939*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003940WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003941WDI_ExitBmpsReq
3942(
3943 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3944 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3945 void* pUserData
3946)
3947{
3948 WDI_EventInfoType wdiEventData;
3949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3950
3951 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 ------------------------------------------------------------------------*/
3954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3955 {
3956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3957 "WDI API call before module is initialized - Fail request");
3958
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 }
3961
3962 /*------------------------------------------------------------------------
3963 Fill in Event data and post to the Main FSM
3964 ------------------------------------------------------------------------*/
3965 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003966 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3967 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3968 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 wdiEventData.pUserData = pUserData;
3970
3971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3972
3973}/*WDI_ExitBmpsReq*/
3974
3975/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 request the device to get into UAPSD power state. Upon
3978 the call of this API the WLAN DAL will pack and send a
3979 HAL Enter UAPSD request message to the lower RIVA
3980 sub-system if DAL is in state STARTED.
3981
3982 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003983 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003984
3985 WDI_PostAssocReq must have been called.
3986 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003987
3988 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003990
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 wdiEnterUapsdRspCb: callback for passing back the
3992 response of the Enter UAPSD operation received from the
3993 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003994
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 callback
3997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3999 @return Result of the function call
4000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004002WDI_EnterUapsdReq
4003(
4004 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4005 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4006 void* pUserData
4007)
4008{
4009 WDI_EventInfoType wdiEventData;
4010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4011
4012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 ------------------------------------------------------------------------*/
4015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4016 {
4017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4018 "WDI API call before module is initialized - Fail request");
4019
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 }
4022
4023 /*------------------------------------------------------------------------
4024 Fill in Event data and post to the Main FSM
4025 ------------------------------------------------------------------------*/
4026 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4028 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4029 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 wdiEventData.pUserData = pUserData;
4031
4032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4033
4034}/*WDI_EnterUapsdReq*/
4035
4036/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 request the device to get out of UAPSD power state. Upon
4039 the call of this API the WLAN DAL will send a HAL Exit
4040 UAPSD request message to the lower RIVA sub-system if
4041 DAL is in state STARTED.
4042
4043 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004045
4046 WDI_PostAssocReq must have been called.
4047
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 response of the Exit UAPSD operation received from the
4050 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004051
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 callback
4054
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 @see WDI_PostAssocReq
4056 @return Result of the function call
4057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004059WDI_ExitUapsdReq
4060(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004061 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4063 void* pUserData
4064)
4065{
4066 WDI_EventInfoType wdiEventData;
4067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4068
4069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 ------------------------------------------------------------------------*/
4072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4073 {
4074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4075 "WDI API call before module is initialized - Fail request");
4076
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 }
4079
4080 /*------------------------------------------------------------------------
4081 Fill in Event data and post to the Main FSM
4082 ------------------------------------------------------------------------*/
4083 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004084 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4085 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 wdiEventData.pUserData = pUserData;
4088
4089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4090
4091}/*WDI_ExitUapsdReq*/
4092
4093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 MAC wants to set the UAPSD related configurations
4096 of an associated STA (while acting as an AP) to the WLAN
4097 Device. Upon the call of this API the WLAN DAL will pack
4098 and send a HAL Update UAPSD params request message to
4099 the lower RIVA sub-system if DAL is in state STARTED.
4100
4101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004103
4104 WDI_ConfigBSSReq must have been called.
4105
Jeff Johnsone7245742012-09-05 17:12:55 -07004106 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004108
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 wdiUpdateUapsdParamsCb: callback for passing back the
4110 response of the update UAPSD params operation received
4111 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004112
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 callback
4115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 @see WDI_ConfigBSSReq
4117 @return Result of the function call
4118*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004119WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004120WDI_UpdateUapsdParamsReq
4121(
4122 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4123 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4124 void* pUserData
4125)
4126{
4127 WDI_EventInfoType wdiEventData;
4128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4129
4130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 ------------------------------------------------------------------------*/
4133 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4134 {
4135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4136 "WDI API call before module is initialized - Fail request");
4137
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 }
4140
4141 /*------------------------------------------------------------------------
4142 Fill in Event data and post to the Main FSM
4143 ------------------------------------------------------------------------*/
4144 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004146 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 wdiEventData.pUserData = pUserData;
4149
4150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4151
4152}/*WDI_UpdateUapsdParamsReq*/
4153
4154/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 MAC wants to set the UAPSD related configurations before
4157 requesting for enter UAPSD power state to the WLAN
4158 Device. Upon the call of this API the WLAN DAL will pack
4159 and send a HAL Set UAPSD params request message to
4160 the lower RIVA sub-system if DAL is in state STARTED.
4161
4162 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004164
4165 WDI_PostAssocReq must have been called.
4166
4167 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4168 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004169
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 wdiSetUapsdAcParamsCb: callback for passing back the
4171 response of the set UAPSD params operation received from
4172 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004173
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004175 callback
4176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 @see WDI_PostAssocReq
4178 @return Result of the function call
4179*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004180WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004181WDI_SetUapsdAcParamsReq
4182(
4183 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4184 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4185 void* pUserData
4186)
4187{
4188 WDI_EventInfoType wdiEventData;
4189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4190
4191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004192 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 ------------------------------------------------------------------------*/
4194 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4195 {
4196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4197 "WDI API call before module is initialized - Fail request");
4198
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 }
4201
4202 /*------------------------------------------------------------------------
4203 Fill in Event data and post to the Main FSM
4204 ------------------------------------------------------------------------*/
4205 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 wdiEventData.pEventData = pwdiUapsdInfo;
4207 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4208 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 wdiEventData.pUserData = pUserData;
4210
4211 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4212
4213}/*WDI_SetUapsdAcParamsReq*/
4214
4215/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304216 @brief WDI_GetFrameLogReq will be called when the upper
4217 MAC wants to initialize frame logging. Upon the call of
4218 this API the WLAN DAL will pack and send a HAL
4219 Frame logging init request message to
4220 the lower RIVA sub-system.
4221
4222 In state BUSY this request will be queued. Request won't
4223 be allowed in any other state.
4224
4225
4226 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4227 as specified by the Device Interface
4228
4229 wdiGetFrameLogRspCb: callback for passing back the
4230 response of the frame logging init operation received
4231 from the device
4232
4233 pUserData: user data will be passed back with the
4234 callback
4235
4236 @return Result of the function call
4237*/
4238WDI_Status
4239WDI_GetFrameLogReq
4240(
4241 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4242 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4243 void* pUserData
4244)
4245{
4246 WDI_EventInfoType wdiEventData;
4247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4248
4249 /*------------------------------------------------------------------------
4250 Sanity Check
4251 ------------------------------------------------------------------------*/
4252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4253 {
4254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4255 "WDI API call before module is initialized - Fail request");
4256
4257 return WDI_STATUS_E_NOT_ALLOWED;
4258 }
4259
4260 /*------------------------------------------------------------------------
4261 Fill in Event data and post to the Main FSM
4262 ------------------------------------------------------------------------*/
4263 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4264 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4265 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4266 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4267 wdiEventData.pUserData = pUserData;
4268
4269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4270}
4271/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304272 @brief WDI_MgmtLoggingInitReq will be called when the upper
4273 MAC wants to initialize frame logging. Upon the call of
4274 this API the WLAN DAL will pack and send a HAL
4275 Frame logging init request message to
4276 the lower RIVA sub-system.
4277
4278 In state BUSY this request will be queued. Request won't
4279 be allowed in any other state.
4280
4281
4282 @param pwdiMgmtLoggingInitReqParams: the Frame Logging params
4283 as specified by the Device Interface
4284
4285 wdiMgmtLoggingInitReqCb: callback for passing back the
4286 response of the frame logging init operation received
4287 from the device
4288
4289 pUserData: user data will be passed back with the
4290 callback
4291
4292 @return Result of the function call
4293*/
4294WDI_Status
4295WDI_MgmtLoggingInitReq
4296(
4297 WDI_MgmtLoggingInitReqInfoType *pwdiMgmtLoggingInitReqInfo,
4298 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb,
4299 void* pUserData
4300)
4301{
4302 WDI_EventInfoType wdiEventData;
4303
4304 /*------------------------------------------------------------------------
4305 Sanity Check
4306 ------------------------------------------------------------------------*/
4307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4308 {
4309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4310 "WDI API call before module is initialized - Fail request");
4311
4312 return WDI_STATUS_E_NOT_ALLOWED;
4313 }
4314
4315 /*------------------------------------------------------------------------
4316 Fill in Event data and post to the Main FSM
4317 ------------------------------------------------------------------------*/
4318 wdiEventData.wdiRequest = WDI_MGMT_LOGGING_INIT_REQ;
4319 wdiEventData.pEventData = pwdiMgmtLoggingInitReqInfo;
4320 wdiEventData.uEventDataSize = sizeof(*pwdiMgmtLoggingInitReqInfo);
4321 wdiEventData.pCBfnc = wdiMgmtLoggingInitRspCb;
4322 wdiEventData.pUserData = pUserData;
4323
4324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4325}
4326
4327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 MAC wants to set/reset the RXP filters for received pkts
4330 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4331 and send a HAL configure RXP filter request message to
4332 the lower RIVA sub-system.
4333
4334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004336
Jeff Johnsone7245742012-09-05 17:12:55 -07004337
4338 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 filter as specified by the Device
4340 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004341
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 wdiConfigureRxpFilterCb: callback for passing back the
4343 response of the configure RXP filter operation received
4344 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004345
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004347 callback
4348
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 @return Result of the function call
4350*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004351WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004352WDI_ConfigureRxpFilterReq
4353(
4354 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4355 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4356 void* pUserData
4357)
4358{
4359 WDI_EventInfoType wdiEventData;
4360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4361
4362 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004363 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 ------------------------------------------------------------------------*/
4365 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4366 {
4367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4368 "WDI API call before module is initialized - Fail request");
4369
Jeff Johnsone7245742012-09-05 17:12:55 -07004370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004371 }
4372
4373 /*------------------------------------------------------------------------
4374 Fill in Event data and post to the Main FSM
4375 ------------------------------------------------------------------------*/
4376 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004377 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4378 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4379 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 wdiEventData.pUserData = pUserData;
4381
4382 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4383}/*WDI_ConfigureRxpFilterReq*/
4384
4385/**
4386 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4387 wants to set the beacon filters while in power save.
4388 Upon the call of this API the WLAN DAL will pack and
4389 send a Beacon filter request message to the
4390 lower RIVA sub-system.
4391
4392 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004394
Jeff Johnsone7245742012-09-05 17:12:55 -07004395
4396 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 filter as specified by the Device
4398 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004399
Jeff Johnson295189b2012-06-20 16:38:30 -07004400 wdiBeaconFilterCb: callback for passing back the
4401 response of the set beacon filter operation received
4402 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004403
Jeff Johnson295189b2012-06-20 16:38:30 -07004404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 callback
4406
Jeff Johnson295189b2012-06-20 16:38:30 -07004407 @return Result of the function call
4408*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004409WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004410WDI_SetBeaconFilterReq
4411(
4412 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4413 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4414 void* pUserData
4415)
4416{
4417 WDI_EventInfoType wdiEventData;
4418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4419
4420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004422 ------------------------------------------------------------------------*/
4423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4424 {
4425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4426 "WDI API call before module is initialized - Fail request");
4427
Jeff Johnsone7245742012-09-05 17:12:55 -07004428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 }
4430
4431 /*------------------------------------------------------------------------
4432 Fill in Event data and post to the Main FSM
4433 ------------------------------------------------------------------------*/
4434 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004436 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 wdiEventData.pUserData = pUserData;
4439
4440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4441}/*WDI_SetBeaconFilterReq*/
4442
4443/**
4444 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4445 wants to remove the beacon filter for particular IE
4446 while in power save. Upon the call of this API the WLAN
4447 DAL will pack and send a remove Beacon filter request
4448 message to the lower RIVA sub-system.
4449
4450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004452
Jeff Johnsone7245742012-09-05 17:12:55 -07004453
4454 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 filter as specified by the Device
4456 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004457
Jeff Johnson295189b2012-06-20 16:38:30 -07004458 wdiBeaconFilterCb: callback for passing back the
4459 response of the remove beacon filter operation received
4460 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004461
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 callback
4464
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 @return Result of the function call
4466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004468WDI_RemBeaconFilterReq
4469(
4470 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4471 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4472 void* pUserData
4473)
4474{
4475 WDI_EventInfoType wdiEventData;
4476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4477
4478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 ------------------------------------------------------------------------*/
4481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4482 {
4483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4484 "WDI API call before module is initialized - Fail request");
4485
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 }
4488
4489 /*------------------------------------------------------------------------
4490 Fill in Event data and post to the Main FSM
4491 ------------------------------------------------------------------------*/
4492 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004493 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004494 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 wdiEventData.pUserData = pUserData;
4497
4498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4499}/*WDI_RemBeaconFilterReq*/
4500
4501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 MAC wants to set the RSSI thresholds related
4504 configurations while in power save. Upon the call of
4505 this API the WLAN DAL will pack and send a HAL Set RSSI
4506 thresholds request message to the lower RIVA
4507 sub-system if DAL is in state STARTED.
4508
4509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004511
4512 WDI_PostAssocReq must have been called.
4513
4514 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4515 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004516
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 wdiSetUapsdAcParamsCb: callback for passing back the
4518 response of the set UAPSD params operation received from
4519 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004520
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 callback
4523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 @see WDI_PostAssocReq
4525 @return Result of the function call
4526*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004527WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004528WDI_SetRSSIThresholdsReq
4529(
4530 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4531 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4532 void* pUserData
4533)
4534{
4535 WDI_EventInfoType wdiEventData;
4536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4537
4538 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 ------------------------------------------------------------------------*/
4541 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4542 {
4543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4544 "WDI API call before module is initialized - Fail request");
4545
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 }
4548
4549 /*------------------------------------------------------------------------
4550 Fill in Event data and post to the Main FSM
4551 ------------------------------------------------------------------------*/
4552 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004554 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004555 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 wdiEventData.pUserData = pUserData;
4557
4558 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4559}/* WDI_SetRSSIThresholdsReq*/
4560
4561/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 wants to set the filter to minimize unnecessary host
4564 wakeup due to broadcast traffic while in power save.
4565 Upon the call of this API the WLAN DAL will pack and
4566 send a HAL host offload request message to the
4567 lower RIVA sub-system if DAL is in state STARTED.
4568
4569 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004571
4572 WDI_PostAssocReq must have been called.
4573
Jeff Johnsone7245742012-09-05 17:12:55 -07004574 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004576
Jeff Johnson295189b2012-06-20 16:38:30 -07004577 wdiHostOffloadCb: callback for passing back the response
4578 of the host offload operation received from the
4579 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004580
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 callback
4583
Jeff Johnson295189b2012-06-20 16:38:30 -07004584 @see WDI_PostAssocReq
4585 @return Result of the function call
4586*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004587WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004588WDI_HostOffloadReq
4589(
4590 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4591 WDI_HostOffloadCb wdiHostOffloadCb,
4592 void* pUserData
4593)
4594{
4595 WDI_EventInfoType wdiEventData;
4596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4597
4598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 ------------------------------------------------------------------------*/
4601 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4602 {
4603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4604 "WDI API call before module is initialized - Fail request");
4605
Jeff Johnsone7245742012-09-05 17:12:55 -07004606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 }
4608
4609 /*------------------------------------------------------------------------
4610 Fill in Event data and post to the Main FSM
4611 ------------------------------------------------------------------------*/
4612 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004614 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004615 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 wdiEventData.pUserData = pUserData;
4617
4618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4619}/*WDI_HostOffloadReq*/
4620
4621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 @brief WDI_KeepAliveReq will be called when the upper MAC
4623 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 and minimize unnecessary host wakeups due to while in power save.
4625 Upon the call of this API the WLAN DAL will pack and
4626 send a HAL Keep Alive request message to the
4627 lower RIVA sub-system if DAL is in state STARTED.
4628
4629 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004631
4632 WDI_PostAssocReq must have been called.
4633
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004635 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004636
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 wdiKeepAliveCb: callback for passing back the response
4638 of the Keep Alive operation received from the
4639 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004642 callback
4643
Jeff Johnson295189b2012-06-20 16:38:30 -07004644 @see WDI_PostAssocReq
4645 @return Result of the function call
4646*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004647WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004648WDI_KeepAliveReq
4649(
4650 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4651 WDI_KeepAliveCb wdiKeepAliveCb,
4652 void* pUserData
4653)
4654{
4655 WDI_EventInfoType wdiEventData;
4656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4657
4658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004660 ------------------------------------------------------------------------*/
4661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4662 {
4663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4664 "WDI_KeepAliveReq: WDI API call before module "
4665 "is initialized - Fail request");
4666
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 }
4669
4670 /*------------------------------------------------------------------------
4671 Fill in Event data and post to the Main FSM
4672 ------------------------------------------------------------------------*/
4673 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 wdiEventData.pEventData = pwdiKeepAliveParams;
4675 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4676 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiEventData.pUserData = pUserData;
4678
4679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4680}/*WDI_KeepAliveReq*/
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 wants to set the Wowl Bcast ptrn to minimize unnecessary
4685 host wakeup due to broadcast traffic while in power
4686 save. Upon the call of this API the WLAN DAL will pack
4687 and send a HAL Wowl Bcast ptrn request message to the
4688 lower RIVA sub-system if DAL is in state STARTED.
4689
4690 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004692
4693 WDI_PostAssocReq must have been called.
4694
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 wdiWowlAddBcPtrnCb: callback for passing back the
4699 response of the add Wowl bcast ptrn operation received
4700 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004701
Jeff Johnson295189b2012-06-20 16:38:30 -07004702 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 callback
4704
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 @see WDI_PostAssocReq
4706 @return Result of the function call
4707*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004708WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004709WDI_WowlAddBcPtrnReq
4710(
4711 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4712 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4713 void* pUserData
4714)
4715{
4716 WDI_EventInfoType wdiEventData;
4717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4718
4719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 ------------------------------------------------------------------------*/
4722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4723 {
4724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4725 "WDI API call before module is initialized - Fail request");
4726
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 }
4729
4730 /*------------------------------------------------------------------------
4731 Fill in Event data and post to the Main FSM
4732 ------------------------------------------------------------------------*/
4733 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004734 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004735 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004736 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 wdiEventData.pUserData = pUserData;
4738
4739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4740}/*WDI_WowlAddBcPtrnReq*/
4741
4742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004743 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004744 wants to clear the Wowl Bcast ptrn. Upon the call of
4745 this API the WLAN DAL will pack and send a HAL delete
4746 Wowl Bcast ptrn request message to the lower RIVA
4747 sub-system if DAL is in state STARTED.
4748
4749 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004751
4752 WDI_WowlAddBcPtrnReq must have been called.
4753
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004756
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiWowlDelBcPtrnCb: callback for passing back the
4758 response of the del Wowl bcast ptrn operation received
4759 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004760
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004762 callback
4763
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 @see WDI_WowlAddBcPtrnReq
4765 @return Result of the function call
4766*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004767WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004768WDI_WowlDelBcPtrnReq
4769(
4770 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4771 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4772 void* pUserData
4773)
4774{
4775 WDI_EventInfoType wdiEventData;
4776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4777
4778 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004780 ------------------------------------------------------------------------*/
4781 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4782 {
4783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4784 "WDI API call before module is initialized - Fail request");
4785
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 }
4788
4789 /*------------------------------------------------------------------------
4790 Fill in Event data and post to the Main FSM
4791 ------------------------------------------------------------------------*/
4792 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004794 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 wdiEventData.pUserData = pUserData;
4797
4798 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4799}/*WDI_WowlDelBcPtrnReq*/
4800
4801/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 wants to enter the Wowl state to minimize unnecessary
4804 host wakeup while in power save. Upon the call of this
4805 API the WLAN DAL will pack and send a HAL Wowl enter
4806 request message to the lower RIVA sub-system if DAL is
4807 in state STARTED.
4808
4809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004811
4812 WDI_PostAssocReq must have been called.
4813
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004816
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wdiWowlEnterReqCb: callback for passing back the
4818 response of the enter Wowl operation received from the
4819 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004822 callback
4823
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 @see WDI_PostAssocReq
4825 @return Result of the function call
4826*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004827WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004828WDI_WowlEnterReq
4829(
4830 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4831 WDI_WowlEnterReqCb wdiWowlEnterCb,
4832 void* pUserData
4833)
4834{
4835 WDI_EventInfoType wdiEventData;
4836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4837
4838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 ------------------------------------------------------------------------*/
4841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4842 {
4843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4844 "WDI API call before module is initialized - Fail request");
4845
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 }
4848
4849 /*------------------------------------------------------------------------
4850 Fill in Event data and post to the Main FSM
4851 ------------------------------------------------------------------------*/
4852 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004854 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiEventData.pUserData = pUserData;
4857
4858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4859}/*WDI_WowlEnterReq*/
4860
4861/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 wants to exit the Wowl state. Upon the call of this API
4864 the WLAN DAL will pack and send a HAL Wowl exit request
4865 message to the lower RIVA sub-system if DAL is in state
4866 STARTED.
4867
4868 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004870
4871 WDI_WowlEnterReq must have been called.
4872
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004875
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 wdiWowlExitReqCb: callback for passing back the response
4877 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004878
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 callback
4881
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 @see WDI_WowlEnterReq
4883 @return Result of the function call
4884*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004885WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004886WDI_WowlExitReq
4887(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004888 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 WDI_WowlExitReqCb wdiWowlExitCb,
4890 void* pUserData
4891)
4892{
4893 WDI_EventInfoType wdiEventData;
4894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4895
4896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 ------------------------------------------------------------------------*/
4899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4900 {
4901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4902 "WDI API call before module is initialized - Fail request");
4903
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 }
4906
4907 /*------------------------------------------------------------------------
4908 Fill in Event data and post to the Main FSM
4909 ------------------------------------------------------------------------*/
4910 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004911 wdiEventData.pEventData = pwdiWowlExitParams;
4912 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 wdiEventData.pUserData = pUserData;
4915
4916 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4917}/*WDI_WowlExitReq*/
4918
4919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 the upper MAC wants to dynamically adjusts the listen
4922 interval based on the WLAN/MSM activity. Upon the call
4923 of this API the WLAN DAL will pack and send a HAL
4924 configure Apps Cpu Wakeup State request message to the
4925 lower RIVA sub-system.
4926
4927 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930
4931 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 Apps Cpu Wakeup State as specified by the
4933 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004934
Jeff Johnson295189b2012-06-20 16:38:30 -07004935 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4936 back the response of the configure Apps Cpu Wakeup State
4937 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004940 callback
4941
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 @return Result of the function call
4943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004945WDI_ConfigureAppsCpuWakeupStateReq
4946(
4947 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4948 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4949 void* pUserData
4950)
4951{
4952 WDI_EventInfoType wdiEventData;
4953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4954
4955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 ------------------------------------------------------------------------*/
4958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4959 {
4960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4961 "WDI API call before module is initialized - Fail request");
4962
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 }
4965
4966 /*------------------------------------------------------------------------
4967 Fill in Event data and post to the Main FSM
4968 ------------------------------------------------------------------------*/
4969 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4971 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4972 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 wdiEventData.pUserData = pUserData;
4974
4975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4976}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4977/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004978 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 to to perform a flush operation on a given AC. Upon the
4980 call of this API the WLAN DAL will pack and send a HAL
4981 Flush AC request message to the lower RIVA sub-system if
4982 DAL is in state STARTED.
4983
4984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004986
4987 WDI_AddBAReq must have been called.
4988
Jeff Johnsone7245742012-09-05 17:12:55 -07004989 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiFlushAcRspCb: callback for passing back the response
4993 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004994
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004996 callback
4997
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 @see WDI_AddBAReq
4999 @return Result of the function call
5000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005002WDI_FlushAcReq
5003(
5004 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5005 WDI_FlushAcRspCb wdiFlushAcRspCb,
5006 void* pUserData
5007)
5008{
5009 WDI_EventInfoType wdiEventData;
5010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5011
5012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 ------------------------------------------------------------------------*/
5015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5016 {
5017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5018 "WDI API call before module is initialized - Fail request");
5019
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 }
5022
5023 /*------------------------------------------------------------------------
5024 Fill in Event data and post to the Main FSM
5025 ------------------------------------------------------------------------*/
5026 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 wdiEventData.pEventData = pwdiFlushAcReqParams;
5028 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5029 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 wdiEventData.pUserData = pUserData;
5031
5032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5033
5034}/*WDI_FlushAcReq*/
5035
5036/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wants to notify the lower mac on a BT AMP event. This is
5039 to inform BTC-SLM that some BT AMP event occurred. Upon
5040 the call of this API the WLAN DAL will pack and send a
5041 HAL BT AMP event request message to the lower RIVA
5042 sub-system if DAL is in state STARTED.
5043
5044 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005046
Jeff Johnsone7245742012-09-05 17:12:55 -07005047
5048 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005050
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 wdiBtAmpEventRspCb: callback for passing back the
5052 response of the BT AMP event operation received from the
5053 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005054
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 callback
5057
Jeff Johnson295189b2012-06-20 16:38:30 -07005058 @return Result of the function call
5059*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005060WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005061WDI_BtAmpEventReq
5062(
5063 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5064 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5065 void* pUserData
5066)
5067{
5068 WDI_EventInfoType wdiEventData;
5069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5070
5071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 ------------------------------------------------------------------------*/
5074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5075 {
5076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5077 "WDI API call before module is initialized - Fail request");
5078
Jeff Johnsone7245742012-09-05 17:12:55 -07005079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 }
5081
5082 /*------------------------------------------------------------------------
5083 Fill in Event data and post to the Main FSM
5084 ------------------------------------------------------------------------*/
5085 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5087 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5088 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 wdiEventData.pUserData = pUserData;
5090
5091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5092
5093}/*WDI_BtAmpEventReq*/
5094
Jeff Johnsone7245742012-09-05 17:12:55 -07005095#ifdef FEATURE_OEM_DATA_SUPPORT
5096/**
5097 @brief WDI_Start Oem Data Req will be called when the upper MAC
5098 wants to notify the lower mac on a oem data Req event.Upon
5099 the call of this API the WLAN DAL will pack and send a
5100 HAL OEM Data Req event request message to the lower RIVA
5101 sub-system if DAL is in state STARTED.
5102
5103 In state BUSY this request will be queued. Request won't
5104 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005105
5106
Jeff Johnsone7245742012-09-05 17:12:55 -07005107
5108 @param pwdiOemDataReqParams: the Oem Data Req as
5109 specified by the Device Interface
5110
5111 wdiStartOemDataRspCb: callback for passing back the
5112 response of the Oem Data Req received from the
5113 device
5114
5115 pUserData: user data will be passed back with the
5116 callback
5117
5118 @return Result of the function call
5119*/
5120WDI_Status
5121WDI_StartOemDataReq
5122(
5123 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5124 WDI_oemDataRspCb wdiOemDataRspCb,
5125 void* pUserData
5126)
5127{
5128 WDI_EventInfoType wdiEventData;
5129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5130
5131 /*------------------------------------------------------------------------
5132 Sanity Check
5133 ------------------------------------------------------------------------*/
5134 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5135 {
5136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5137 "WDI API call before module is initialized - Fail request");
5138
5139 return WDI_STATUS_E_NOT_ALLOWED;
5140 }
5141
5142 /*------------------------------------------------------------------------
5143 Fill in Event data and post to the Main FSM
5144 ------------------------------------------------------------------------*/
5145 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5146 wdiEventData.pEventData = pwdiOemDataReqParams;
5147 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5148 wdiEventData.pCBfnc = wdiOemDataRspCb;
5149 wdiEventData.pUserData = pUserData;
5150
5151 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5152
5153
5154}
5155
5156#endif
5157
5158
5159/*========================================================================
5160
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005162
Jeff Johnson295189b2012-06-20 16:38:30 -07005163==========================================================================*/
5164/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 the WLAN HW to change the current channel of operation.
5167 Upon the call of this API the WLAN DAL will pack and
5168 send a HAL Start request message to the lower RIVA
5169 sub-system if DAL is in state STARTED.
5170
5171 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005173
5174 WDI_Start must have been called.
5175
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005177 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 wdiSwitchChRspCb: callback for passing back the response
5180 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005181
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005183 callback
5184
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 @see WDI_Start
5186 @return Result of the function call
5187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005189WDI_SwitchChReq
5190(
5191 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5192 WDI_SwitchChRspCb wdiSwitchChRspCb,
5193 void* pUserData
5194)
5195{
5196 WDI_EventInfoType wdiEventData;
5197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5198
5199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 ------------------------------------------------------------------------*/
5202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5203 {
5204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5205 "WDI API call before module is initialized - Fail request");
5206
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 }
5209
5210 /*------------------------------------------------------------------------
5211 Fill in Event data and post to the Main FSM
5212 ------------------------------------------------------------------------*/
5213 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 wdiEventData.pEventData = pwdiSwitchChReqParams;
5215 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5216 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 wdiEventData.pUserData = pUserData;
5218
5219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5220
5221}/*WDI_SwitchChReq*/
5222
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005223/**
5224 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5225 the WLAN HW to change the current channel of operation.
5226 Upon the call of this API the WLAN DAL will pack and
5227 send a HAL Start request message to the lower RIVA
5228 sub-system if DAL is in state STARTED.
5229 This request message also includes source of channel switch,
5230 like CSA,
5231
5232 In state BUSY this request will be queued. Request won't
5233 be allowed in any other state.
5234
5235 WDI_Start must have been called.
5236
5237 @param wdiSwitchChReqParams: the switch ch parameters as
5238 specified by the Device Interface
5239
5240 wdiSwitchChRspCb: callback for passing back the response
5241 of the switch ch operation received from the device
5242
5243 pUserData: user data will be passed back with the
5244 callback
5245
5246 @see WDI_Start
5247 @return Result of the function call
5248*/
5249WDI_Status
5250WDI_SwitchChReq_V1
5251(
5252 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5253 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5254 void* pUserData
5255)
5256{
5257 WDI_EventInfoType wdiEventData;
5258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5260 "WDI API call WDI_SwitchChReq_V1");
5261 /*------------------------------------------------------------------------
5262 Sanity Check
5263 ------------------------------------------------------------------------*/
5264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5265 {
5266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5267 "WDI API call before module is initialized - Fail request");
5268
5269 return WDI_STATUS_E_NOT_ALLOWED;
5270 }
5271
5272 /*------------------------------------------------------------------------
5273 Fill in Event data and post to the Main FSM
5274 ------------------------------------------------------------------------*/
5275 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5276 wdiEventData.pEventData = pwdiSwitchChReqParams;
5277 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5278 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5279 wdiEventData.pUserData = pUserData;
5280
5281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5282
5283}/*WDI_SwitchChReq_V1*/
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285
5286/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005287 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 wishes to add or update a STA in HW. Upon the call of
5289 this API the WLAN DAL will pack and send a HAL Start
5290 message request message to the lower RIVA sub-system if
5291 DAL is in state STARTED.
5292
5293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005295
5296 WDI_Start must have been called.
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005300
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 wdiConfigSTARspCb: callback for passing back the
5302 response of the config STA operation received from the
5303 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005304
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 callback
5307
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 @see WDI_Start
5309 @return Result of the function call
5310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005312WDI_ConfigSTAReq
5313(
5314 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5315 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5316 void* pUserData
5317)
5318{
5319 WDI_EventInfoType wdiEventData;
5320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5321
5322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 ------------------------------------------------------------------------*/
5325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5326 {
5327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5328 "WDI API call before module is initialized - Fail request");
5329
Jeff Johnsone7245742012-09-05 17:12:55 -07005330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005331 }
5332
5333 /*------------------------------------------------------------------------
5334 Fill in Event data and post to the Main FSM
5335 ------------------------------------------------------------------------*/
5336 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5338 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5339 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005340 wdiEventData.pUserData = pUserData;
5341
5342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5343
5344}/*WDI_ConfigSTAReq*/
5345
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005346 /**
5347 @brief WDI_UpdateChannelReq will be called when the upper MAC
5348 wants to update the channel list on change in country code.
5349
5350 In state BUSY this request will be queued. Request won't
5351 be allowed in any other state.
5352
5353 WDI_UpdateChannelReq must have been called.
5354
5355 @param wdiUpdateChannelReqParams: the updated channel parameters
5356 as specified by the Device Interface
5357
5358 wdiUpdateChannelRspCb: callback for passing back the
5359 response of the update channel operation received from
5360 the device
5361
5362 pUserData: user data will be passed back with the
5363 callback
5364
5365 @return Result of the function call
5366*/
5367WDI_Status
5368WDI_UpdateChannelReq
5369(
5370 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5371 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5372 void* pUserData
5373)
5374{
5375 WDI_EventInfoType wdiEventData = {{0}};
5376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5377
5378 /*------------------------------------------------------------------------
5379 Sanity Check
5380 ------------------------------------------------------------------------*/
5381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5382 {
5383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5384 "WDI API call before module is initialized - Fail request");
5385
5386 return WDI_STATUS_E_NOT_ALLOWED;
5387 }
5388
5389 /*------------------------------------------------------------------------
5390 Fill in Event data and post to the Main FSM
5391 ------------------------------------------------------------------------*/
5392 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5393 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5394 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5395 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5396 wdiEventData.pUserData = pUserData;
5397
5398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5399
5400}/*WDI_UpdateChannelReq*/
5401
Jeff Johnson295189b2012-06-20 16:38:30 -07005402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 wants to change the state of an ongoing link. Upon the
5405 call of this API the WLAN DAL will pack and send a HAL
5406 Start message request message to the lower RIVA
5407 sub-system if DAL is in state STARTED.
5408
5409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005411
5412 WDI_JoinStartReq must have been called.
5413
Jeff Johnsone7245742012-09-05 17:12:55 -07005414 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005415 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005416
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 wdiSetLinkStateRspCb: callback for passing back the
5418 response of the set link state operation received from
5419 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005420
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 callback
5423
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 @see WDI_JoinStartReq
5425 @return Result of the function call
5426*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005427WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005428WDI_SetLinkStateReq
5429(
5430 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5431 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5432 void* pUserData
5433)
5434{
5435 WDI_EventInfoType wdiEventData;
5436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5437
5438 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005439 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 ------------------------------------------------------------------------*/
5441 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5442 {
5443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5444 "WDI API call before module is initialized - Fail request");
5445
Jeff Johnsone7245742012-09-05 17:12:55 -07005446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 }
5448
5449 /*------------------------------------------------------------------------
5450 Fill in Event data and post to the Main FSM
5451 ------------------------------------------------------------------------*/
5452 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5454 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5455 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 wdiEventData.pUserData = pUserData;
5457
5458 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5459
5460}/*WDI_SetLinkStateReq*/
5461
5462
5463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 to get statistics (MIB counters) from the device. Upon
5466 the call of this API the WLAN DAL will pack and send a
5467 HAL Start request message to the lower RIVA sub-system
5468 if DAL is in state STARTED.
5469
5470 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005472
5473 WDI_Start must have been called.
5474
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 wdiGetStatsRspCb: callback for passing back the response
5479 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 callback
5483
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 @see WDI_Start
5485 @return Result of the function call
5486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005488WDI_GetStatsReq
5489(
5490 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5491 WDI_GetStatsRspCb wdiGetStatsRspCb,
5492 void* pUserData
5493)
5494{
5495 WDI_EventInfoType wdiEventData;
5496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5497
5498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 ------------------------------------------------------------------------*/
5501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5502 {
5503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5504 "WDI API call before module is initialized - Fail request");
5505
Jeff Johnsone7245742012-09-05 17:12:55 -07005506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 }
5508
5509 /*------------------------------------------------------------------------
5510 Fill in Event data and post to the Main FSM
5511 ------------------------------------------------------------------------*/
5512 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 wdiEventData.pEventData = pwdiGetStatsReqParams;
5514 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5515 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 wdiEventData.pUserData = pUserData;
5517
5518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5519
5520}/*WDI_GetStatsReq*/
5521
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005522#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005523/**
5524 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5525 to get roam rssi from the device. Upon
5526 the call of this API the WLAN DAL will pack and send a
5527 HAL Start request message to the lower RIVA sub-system
5528 if DAL is in state STARTED.
5529
5530 In state BUSY this request will be queued. Request won't
5531 be allowed in any other state.
5532
5533 WDI_Start must have been called.
5534
5535 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5536 specified by the Device Interface
5537
5538 wdiGetRoamRssiRspCb: callback for passing back the response
5539 of the get stats operation received from the device
5540
5541 pUserData: user data will be passed back with the
5542 callback
5543
5544 @see WDI_Start
5545 @return Result of the function call
5546*/
5547WDI_Status
5548WDI_GetRoamRssiReq
5549(
5550 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5551 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5552 void* pUserData
5553)
5554{
5555 WDI_EventInfoType wdiEventData;
5556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5557
5558 /*------------------------------------------------------------------------
5559 Sanity Check
5560 ------------------------------------------------------------------------*/
5561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5562 {
5563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5564 "WDI API call before module is initialized - Fail request");
5565
5566 return WDI_STATUS_E_NOT_ALLOWED;
5567 }
5568 /*------------------------------------------------------------------------
5569 Fill in Event data and post to the Main FSM
5570 ------------------------------------------------------------------------*/
5571 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5572 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5573 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5574 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5575 wdiEventData.pUserData = pUserData;
5576
5577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5578
5579}/*WDI_GetRoamRssiReq*/
5580#endif
5581
Jeff Johnson295189b2012-06-20 16:38:30 -07005582
5583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 it wishes to change the configuration of the WLAN
5586 Device. Upon the call of this API the WLAN DAL will pack
5587 and send a HAL Update CFG request message to the lower
5588 RIVA sub-system if DAL is in state STARTED.
5589
5590 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005592
5593 WDI_Start must have been called.
5594
Jeff Johnsone7245742012-09-05 17:12:55 -07005595 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005596 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005597
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 wdiUpdateCfgsRspCb: callback for passing back the
5599 response of the update cfg operation received from the
5600 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005601
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 callback
5604
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 @see WDI_Start
5606 @return Result of the function call
5607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005609WDI_UpdateCfgReq
5610(
5611 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5612 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5613 void* pUserData
5614)
5615{
5616 WDI_EventInfoType wdiEventData;
5617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5618
5619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 ------------------------------------------------------------------------*/
5622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5623 {
5624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5625 "WDI API call before module is initialized - Fail request");
5626
Jeff Johnsone7245742012-09-05 17:12:55 -07005627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 }
5629
5630 /*------------------------------------------------------------------------
5631 Fill in Event data and post to the Main FSM
5632 ------------------------------------------------------------------------*/
5633 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005634 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5635 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5636 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 wdiEventData.pUserData = pUserData;
5638
5639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5640
5641}/*WDI_UpdateCfgReq*/
5642
5643
5644
5645/**
5646 @brief WDI_AddBAReq will be called when the upper MAC has setup
5647 successfully a BA session and needs to notify the HW for
5648 the appropriate settings to take place. Upon the call of
5649 this API the WLAN DAL will pack and send a HAL Add BA
5650 request message to the lower RIVA sub-system if DAL is
5651 in state STARTED.
5652
5653 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005655
5656 WDI_PostAssocReq must have been called.
5657
5658 @param wdiAddBAReqParams: the add BA parameters as specified by
5659 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005660
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 wdiAddBARspCb: callback for passing back the response of
5662 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005663
Jeff Johnson295189b2012-06-20 16:38:30 -07005664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005665 callback
5666
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 @see WDI_PostAssocReq
5668 @return Result of the function call
5669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005671WDI_AddBAReq
5672(
5673 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5674 WDI_AddBARspCb wdiAddBARspCb,
5675 void* pUserData
5676)
5677{
5678 WDI_EventInfoType wdiEventData;
5679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5680
5681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005683 ------------------------------------------------------------------------*/
5684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5685 {
5686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5687 "WDI API call before module is initialized - Fail request");
5688
Jeff Johnsone7245742012-09-05 17:12:55 -07005689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005690 }
5691
5692 /*------------------------------------------------------------------------
5693 Fill in Event data and post to the Main FSM
5694 ------------------------------------------------------------------------*/
5695 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 wdiEventData.pEventData = pwdiAddBAReqParams;
5697 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5698 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 wdiEventData.pUserData = pUserData;
5700
5701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5702
5703}/*WDI_AddBAReq*/
5704
5705
5706/**
5707 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5708 successfully a BA session and needs to notify the HW for
5709 the appropriate settings to take place. Upon the call of
5710 this API the WLAN DAL will pack and send a HAL Add BA
5711 request message to the lower RIVA sub-system if DAL is
5712 in state STARTED.
5713
5714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005716
5717 WDI_PostAssocReq must have been called.
5718
5719 @param wdiAddBAReqParams: the add BA parameters as specified by
5720 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005721
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 wdiAddBARspCb: callback for passing back the response of
5723 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005724
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005726 callback
5727
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 @see WDI_PostAssocReq
5729 @return Result of the function call
5730*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005731WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005732WDI_TriggerBAReq
5733(
5734 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5735 WDI_TriggerBARspCb wdiTriggerBARspCb,
5736 void* pUserData
5737)
5738{
5739 WDI_EventInfoType wdiEventData;
5740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5741
5742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 ------------------------------------------------------------------------*/
5745 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5746 {
5747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5748 "WDI API call before module is initialized - Fail request");
5749
Jeff Johnsone7245742012-09-05 17:12:55 -07005750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005751 }
5752
5753 /*------------------------------------------------------------------------
5754 Fill in Event data and post to the Main FSM
5755 ------------------------------------------------------------------------*/
5756 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005757 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5758 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5759 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005760 wdiEventData.pUserData = pUserData;
5761
5762 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5763
5764}/*WDI_AddBAReq*/
5765
5766/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 wishes to update any of the Beacon parameters used by HW.
5769 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5770 message to the lower RIVA sub-system if DAL is in state
5771 STARTED.
5772
5773 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005774 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005775
5776 WDI_PostAssocReq must have been called.
5777
Jeff Johnsone7245742012-09-05 17:12:55 -07005778 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005780
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 wdiUpdateBeaconParamsRspCb: callback for passing back the
5782 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005783
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005785 callback
5786
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 @see WDI_PostAssocReq
5788 @return Result of the function call
5789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005791WDI_UpdateBeaconParamsReq
5792(
5793 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5794 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5795 void* pUserData
5796)
5797{
5798 WDI_EventInfoType wdiEventData;
5799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5800
5801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 ------------------------------------------------------------------------*/
5804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5805 {
5806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5807 "WDI API call before module is initialized - Fail request");
5808
Jeff Johnsone7245742012-09-05 17:12:55 -07005809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 }
5811
5812 /*------------------------------------------------------------------------
5813 Fill in Event data and post to the Main FSM
5814 ------------------------------------------------------------------------*/
5815 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5817 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5818 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 wdiEventData.pUserData = pUserData;
5820
5821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5822
5823}/*WDI_UpdateBeaconParamsReq*/
5824
5825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 wishes to update the Beacon template used by HW.
5828 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5829 message to the lower RIVA sub-system if DAL is in state
5830 STARTED.
5831
5832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005834
5835 WDI_PostAssocReq must have been called.
5836
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005839
Jeff Johnson295189b2012-06-20 16:38:30 -07005840 wdiSendBeaconParamsRspCb: callback for passing back the
5841 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005842
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005844 callback
5845
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 @see WDI_PostAssocReq
5847 @return Result of the function call
5848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005850WDI_SendBeaconParamsReq
5851(
5852 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5853 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5854 void* pUserData
5855)
5856{
5857 WDI_EventInfoType wdiEventData;
5858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5859
5860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 ------------------------------------------------------------------------*/
5863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5864 {
5865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5866 "WDI API call before module is initialized - Fail request");
5867
Jeff Johnsone7245742012-09-05 17:12:55 -07005868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005869 }
5870
5871 /*------------------------------------------------------------------------
5872 Fill in Event data and post to the Main FSM
5873 ------------------------------------------------------------------------*/
5874 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 wdiEventData.pEventData = pwdiSendBeaconParams;
5876 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5877 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005878 wdiEventData.pUserData = pUserData;
5879
5880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5881
5882}/*WDI_SendBeaconParamsReq*/
5883
5884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 upper MAC wants to update the probe response template to
5887 be transmitted as Soft AP
5888 Upon the call of this API the WLAN DAL will
5889 pack and send the probe rsp template message to the
5890 lower RIVA sub-system if DAL is in state STARTED.
5891
5892 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005893 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005894
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005898
Jeff Johnson295189b2012-06-20 16:38:30 -07005899 wdiSendBeaconParamsRspCb: callback for passing back the
5900 response of the Send Beacon Params operation received
5901 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 callback
5905
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 @see WDI_AddBAReq
5907 @return Result of the function call
5908*/
5909
Jeff Johnsone7245742012-09-05 17:12:55 -07005910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005911WDI_UpdateProbeRspTemplateReq
5912(
5913 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5914 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5915 void* pUserData
5916)
5917{
5918 WDI_EventInfoType wdiEventData;
5919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5920
5921 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 ------------------------------------------------------------------------*/
5924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5925 {
5926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5927 "WDI API call before module is initialized - Fail request");
5928
Jeff Johnsone7245742012-09-05 17:12:55 -07005929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005930 }
5931
5932 /*------------------------------------------------------------------------
5933 Fill in Event data and post to the Main FSM
5934 ------------------------------------------------------------------------*/
5935 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005936 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5937 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5938 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 wdiEventData.pUserData = pUserData;
5940
5941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5942
5943}/*WDI_UpdateProbeRspTemplateReq*/
5944
5945/**
5946 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5947 to the NV memory.
5948
5949
5950 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5951 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005952
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 wdiNvDownloadRspCb: callback for passing back the response of
5954 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 callback
5958
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 @see WDI_PostAssocReq
5960 @return Result of the function call
5961*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005962WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005963WDI_NvDownloadReq
5964(
5965 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5966 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5967 void* pUserData
5968)
5969{
5970 WDI_EventInfoType wdiEventData;
5971
5972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005973 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 ------------------------------------------------------------------------*/
5975 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5976 {
5977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5978 "WDI API call before module is initialized - Fail request");
5979
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 }
5982
5983 /*------------------------------------------------------------------------
5984 Fill in Event data and post to the Main FSM
5985 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5987 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5988 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5989 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 wdiEventData.pUserData = pUserData;
5991
5992 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5993
5994}/*WDI_NVDownloadReq*/
5995
Jeff Johnson295189b2012-06-20 16:38:30 -07005996/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 upper MAC wants to send Notice of Absence
5999 Upon the call of this API the WLAN DAL will
6000 pack and send the probe rsp template message to the
6001 lower RIVA sub-system if DAL is in state STARTED.
6002
6003 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006004 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006005
6006
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiSendBeaconParamsRspCb: callback for passing back the
6011 response of the Send Beacon Params operation received
6012 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006013
Jeff Johnson295189b2012-06-20 16:38:30 -07006014 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006015 callback
6016
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 @see WDI_AddBAReq
6018 @return Result of the function call
6019*/
6020WDI_Status
6021WDI_SetP2PGONOAReq
6022(
6023 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6024 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6025 void* pUserData
6026)
6027{
6028 WDI_EventInfoType wdiEventData;
6029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6030
6031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006032 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 ------------------------------------------------------------------------*/
6034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6035 {
6036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6037 "WDI API call before module is initialized - Fail request");
6038
Jeff Johnsone7245742012-09-05 17:12:55 -07006039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 }
6041
6042 /*------------------------------------------------------------------------
6043 Fill in Event data and post to the Main FSM
6044 ------------------------------------------------------------------------*/
6045 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006046 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6047 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6048 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 wdiEventData.pUserData = pUserData;
6050
6051 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6052
6053}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006054
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306055#ifdef FEATURE_WLAN_TDLS
6056/**
6057 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6058 upper MAC wants to send TDLS Link Establish Request Parameters
6059 Upon the call of this API the WLAN DAL will
6060 pack and send the TDLS Link Establish Request message to the
6061 lower RIVA sub-system if DAL is in state STARTED.
6062
6063 In state BUSY this request will be queued. Request won't
6064 be allowed in any other state.
6065
6066
6067 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6068 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6069
6070 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6071 response of the TDLS Link Establish request received
6072 from the device
6073
6074 pUserData: user data will be passed back with the
6075 callback
6076
6077 @see
6078 @return Result of the function call
6079*/
6080WDI_Status
6081WDI_SetTDLSLinkEstablishReq
6082(
6083 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6084 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6085 void* pUserData
6086)
6087{
6088 WDI_EventInfoType wdiEventData;
6089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6090
6091 /*------------------------------------------------------------------------
6092 Sanity Check
6093 ------------------------------------------------------------------------*/
6094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6095 {
6096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6097 "WDI API call before module is initialized - Fail request");
6098
6099 return WDI_STATUS_E_NOT_ALLOWED;
6100 }
6101
6102 /*------------------------------------------------------------------------
6103 Fill in Event data and post to the Main FSM
6104 ------------------------------------------------------------------------*/
6105 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6106 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6107 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6108 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6109 wdiEventData.pUserData = pUserData;
6110
6111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6112
6113}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306114
6115//tdlsoffchan
6116/**
6117 @brief WDI_SetTDLSChanSwitchReq will be called when the
6118 upper MAC wants to send TDLS Chan Switch Request Parameters
6119 Upon the call of this API the WLAN DAL will
6120 pack and send the TDLS Link Establish Request message to the
6121 lower RIVA sub-system if DAL is in state STARTED.
6122
6123 In state BUSY this request will be queued. Request won't
6124 be allowed in any other state.
6125
6126
6127 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6128 for Link Establishment (Used for TDLS Off Channel ...)
6129
6130 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6131 response of the TDLS Chan Switch request received
6132 from the device
6133
6134 pUserData: user data will be passed back with the
6135 callback
6136
6137 @see
6138 @return Result of the function call
6139*/
6140WDI_Status
6141WDI_SetTDLSChanSwitchReq
6142(
6143 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6144 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6145 void* pUserData
6146)
6147{
6148 WDI_EventInfoType wdiEventData;
6149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6150
6151 /*------------------------------------------------------------------------
6152 Sanity Check
6153 ------------------------------------------------------------------------*/
6154 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6155 {
6156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6157 "WDI API call before module is initialized - Fail request");
6158
6159 return WDI_STATUS_E_NOT_ALLOWED;
6160 }
6161
6162 /*------------------------------------------------------------------------
6163 Fill in Event data and post to the Main FSM
6164 ------------------------------------------------------------------------*/
6165 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6166 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6167 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6168 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6169 wdiEventData.pUserData = pUserData;
6170
6171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6172
6173}/*WDI_SetTDLSChanSwitchReq*/
6174
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306175#endif
6176
Jeff Johnson295189b2012-06-20 16:38:30 -07006177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006178 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 UMAC wanted to add STA self while opening any new session
6180 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006182
6183
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 callback
6189
6190 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 @return Result of the function call
6192*/
6193WDI_Status
6194WDI_AddSTASelfReq
6195(
6196 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6197 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6198 void* pUserData
6199)
6200{
6201 WDI_EventInfoType wdiEventData;
6202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6203
6204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 ------------------------------------------------------------------------*/
6207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6208 {
6209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6210 "WDI API call before module is initialized - Fail request");
6211
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 }
6214
6215 /*------------------------------------------------------------------------
6216 Fill in Event data and post to the Main FSM
6217 ------------------------------------------------------------------------*/
6218 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006219 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6220 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6221 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 wdiEventData.pUserData = pUserData;
6223
6224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6225
6226}/*WDI_AddSTASelfReq*/
6227
6228
Jeff Johnsone7245742012-09-05 17:12:55 -07006229#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006230/**
6231 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6232 the device of a successful add TSpec negotiation. HW
6233 needs to receive the TSpec Info from the UMAC in order
6234 to configure properly the QoS data traffic. Upon the
6235 call of this API the WLAN DAL will pack and send a HAL
6236 Add TS request message to the lower RIVA sub-system if
6237 DAL is in state STARTED.
6238
6239 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006240 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006241
6242 WDI_PostAssocReq must have been called.
6243
6244 @param wdiAddTsReqParams: the add TS parameters as specified by
6245 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006246
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 wdiAddTsRspCb: callback for passing back the response of
6248 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 callback
6252
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 @see WDI_PostAssocReq
6254 @return Result of the function call
6255*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006257WDI_AggrAddTSReq
6258(
6259 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6260 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6261 void* pUserData
6262)
6263{
6264 WDI_EventInfoType wdiEventData;
6265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6266
6267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 ------------------------------------------------------------------------*/
6270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6271 {
6272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6273 "WDI API call before module is initialized - Fail request");
6274
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 }
6277
6278 /*------------------------------------------------------------------------
6279 Fill in Event data and post to the Main FSM
6280 ------------------------------------------------------------------------*/
6281 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6283 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6284 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 wdiEventData.pUserData = pUserData;
6286
6287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6288
6289}/*WDI_AggrAddTSReq*/
6290
6291#endif /* WLAN_FEATURE_VOWIFI_11R */
6292
Jeff Johnson295189b2012-06-20 16:38:30 -07006293/**
6294 @brief WDI_FTMCommandReq
6295 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
6297 @param ftmCommandReq: FTM Command Body
6298 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006299 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 @see
6302 @return Result of the function call
6303*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006304WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006305WDI_FTMCommandReq
6306(
6307 WDI_FTMCommandReqType *ftmCommandReq,
6308 WDI_FTMCommandRspCb ftmCommandRspCb,
6309 void *pUserData
6310)
6311{
6312 WDI_EventInfoType wdiEventData;
6313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6314
6315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 ------------------------------------------------------------------------*/
6318 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6319 {
6320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6321 "WDI API call before module is initialized - Fail request");
6322
Jeff Johnsone7245742012-09-05 17:12:55 -07006323 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 }
6325
6326 /*------------------------------------------------------------------------
6327 Fill in Event data and post to the Main FSM
6328 ------------------------------------------------------------------------*/
6329 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6330 wdiEventData.pEventData = (void *)ftmCommandReq;
6331 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6332 wdiEventData.pCBfnc = ftmCommandRspCb;
6333 wdiEventData.pUserData = pUserData;
6334
6335 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6336}
Jeff Johnson295189b2012-06-20 16:38:30 -07006337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006338 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006339
6340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006342
6343
6344 @param pwdiResumeReqParams: as specified by
6345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 wdiResumeReqRspCb: callback for passing back the response of
6348 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006351 callback
6352
6353 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 @return Result of the function call
6355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006357WDI_HostResumeReq
6358(
6359 WDI_ResumeParamsType* pwdiResumeReqParams,
6360 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6361 void* pUserData
6362)
6363{
6364 WDI_EventInfoType wdiEventData;
6365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6366
6367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006369 ------------------------------------------------------------------------*/
6370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6371 {
6372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6373 "WDI API call before module is initialized - Fail request");
6374
Jeff Johnsone7245742012-09-05 17:12:55 -07006375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006376 }
6377
6378 /*------------------------------------------------------------------------
6379 Fill in Event data and post to the Main FSM
6380 ------------------------------------------------------------------------*/
6381 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006382 wdiEventData.pEventData = pwdiResumeReqParams;
6383 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6384 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 wdiEventData.pUserData = pUserData;
6386
6387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6388
6389}/*WDI_HostResumeReq*/
6390
6391/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006393
6394 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397
6398 @param pwdiDelStaSelfReqParams: as specified by
6399 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006400
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 wdiDelStaSelfRspCb: callback for passing back the response of
6402 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 callback
6406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 @see WDI_PostAssocReq
6408 @return Result of the function call
6409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006411WDI_DelSTASelfReq
6412(
6413 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6414 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6415 void* pUserData
6416)
6417{
6418 WDI_EventInfoType wdiEventData;
6419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6420
6421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 ------------------------------------------------------------------------*/
6424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6425 {
6426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6427 "WDI API call before module is initialized - Fail request");
6428
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006430 }
6431
6432 /*------------------------------------------------------------------------
6433 Fill in Event data and post to the Main FSM
6434 ------------------------------------------------------------------------*/
6435 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6437 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6438 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 wdiEventData.pUserData = pUserData;
6440
6441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6442
6443}/*WDI_AggrAddTSReq*/
6444
6445/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6447 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 Upon the call of this API the WLAN DAL will pack
6449 and send a HAL Set Tx Per Tracking request message to the
6450 lower RIVA sub-system if DAL is in state STARTED.
6451
6452 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006454
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006457
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 pwdiSetTxPerTrackingRspCb: callback for passing back the
6459 response of the set Tx PER Tracking configurations operation received
6460 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006461
Jeff Johnson295189b2012-06-20 16:38:30 -07006462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 callback
6464
Jeff Johnson295189b2012-06-20 16:38:30 -07006465 @return Result of the function call
6466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006468WDI_SetTxPerTrackingReq
6469(
6470 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6471 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6472 void* pUserData
6473)
6474{
6475 WDI_EventInfoType wdiEventData;
6476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6477
6478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ------------------------------------------------------------------------*/
6481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6482 {
6483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6484 "WDI API call before module is initialized - Fail request");
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 }
6488
6489 /*------------------------------------------------------------------------
6490 Fill in Event data and post to the Main FSM
6491 ------------------------------------------------------------------------*/
6492 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006495 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 wdiEventData.pUserData = pUserData;
6497
6498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6499
6500}/*WDI_SetTxPerTrackingReq*/
6501
6502/**
6503 @brief WDI_SetTmLevelReq
6504 If HW Thermal condition changed, driver should react based on new
6505 HW thermal condition.
6506
6507 @param pwdiSetTmLevelReq: New thermal condition information
6508
6509 pwdiSetTmLevelRspCb: callback
6510
6511 usrData: user data will be passed back with the
6512 callback
6513
6514 @return Result of the function call
6515*/
6516WDI_Status
6517WDI_SetTmLevelReq
6518(
6519 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6520 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6521 void *usrData
6522)
6523{
6524 WDI_EventInfoType wdiEventData;
6525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6526
6527 /*------------------------------------------------------------------------
6528 Sanity Check
6529 ------------------------------------------------------------------------*/
6530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6531 {
6532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6533 "WDI API call before module is initialized - Fail request");
6534
6535 return WDI_STATUS_E_NOT_ALLOWED;
6536 }
6537
6538 /*------------------------------------------------------------------------
6539 Fill in Event data and post to the Main FSM
6540 ------------------------------------------------------------------------*/
6541 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6542 wdiEventData.pEventData = pwdiSetTmLevelReq;
6543 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6544 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6545 wdiEventData.pUserData = usrData;
6546
6547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6548}
6549
6550/**
6551 @brief WDI_HostSuspendInd
6552
6553 Suspend Indication from the upper layer will be sent
6554 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006555
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006557
6558 @see
6559
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 @return Status of the request
6561*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006562WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006563WDI_HostSuspendInd
6564(
6565 WDI_SuspendParamsType* pwdiSuspendIndParams
6566)
6567{
6568
6569 WDI_EventInfoType wdiEventData;
6570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6571
6572 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 ------------------------------------------------------------------------*/
6575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6576 {
6577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6578 "WDI API call before module is initialized - Fail request");
6579
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006581 }
6582
6583 /*------------------------------------------------------------------------
6584 Fill in Event data and post to the Main FSM
6585 ------------------------------------------------------------------------*/
6586 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 wdiEventData.pEventData = pwdiSuspendIndParams;
6588 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6589 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006590 wdiEventData.pUserData = NULL;
6591
6592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6593
6594}/*WDI_HostSuspendInd*/
6595
6596/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006597 @brief WDI_TrafficStatsInd
6598 Traffic Stats from the upper layer will be sent
6599 down to HAL
6600
6601 @param WDI_TrafficStatsIndType
6602
6603 @see
6604
6605 @return Status of the request
6606*/
6607WDI_Status
6608WDI_TrafficStatsInd
6609(
6610 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6611)
6612{
6613
6614 WDI_EventInfoType wdiEventData;
6615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6616
6617 /*------------------------------------------------------------------------
6618 Sanity Check
6619 ------------------------------------------------------------------------*/
6620 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6621 {
6622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6623 "WDI API call before module is initialized - Fail request");
6624
6625 return WDI_STATUS_E_NOT_ALLOWED;
6626 }
6627
6628 /*------------------------------------------------------------------------
6629 Fill in Event data and post to the Main FSM
6630 ------------------------------------------------------------------------*/
6631 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6632 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6633 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6634 wdiEventData.pCBfnc = NULL;
6635 wdiEventData.pUserData = NULL;
6636
6637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6638
6639}/*WDI_TrafficStatsInd*/
6640
Chet Lanctot186b5732013-03-18 10:26:30 -07006641#ifdef WLAN_FEATURE_11W
6642/**
6643 @brief WDI_ExcludeUnencryptedInd
6644 Register with HAL to receive/drop unencrypted frames
6645
6646 @param WDI_ExcludeUnencryptIndType
6647
6648 @see
6649
6650 @return Status of the request
6651*/
6652WDI_Status
6653WDI_ExcludeUnencryptedInd
6654(
6655 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6656)
6657{
6658
6659 WDI_EventInfoType wdiEventData;
6660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6661
6662 /*------------------------------------------------------------------------
6663 Sanity Check
6664 ------------------------------------------------------------------------*/
6665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6666 {
6667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6668 "WDI API call before module is initialized - Fail request");
6669
6670 return WDI_STATUS_E_NOT_ALLOWED;
6671 }
6672
6673 /*------------------------------------------------------------------------
6674 Fill in Event data and post to the Main FSM
6675 ------------------------------------------------------------------------*/
6676 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6677 wdiEventData.pEventData = pWdiExcUnencParams;
6678 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6679 wdiEventData.pCBfnc = NULL;
6680 wdiEventData.pUserData = NULL;
6681
6682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6683
6684}/*WDI_TrafficStatsInd*/
6685#endif
6686
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006687/**
Yue Mab9c86f42013-08-14 15:59:08 -07006688 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6689
6690 @param addPeriodicTxPtrnParams: Add Pattern parameters
6691
6692 @see
6693
6694 @return Status of the request
6695*/
6696WDI_Status
6697WDI_AddPeriodicTxPtrnInd
6698(
6699 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6700)
6701{
6702 WDI_EventInfoType wdiEventData;
6703
6704 /*-------------------------------------------------------------------------
6705 Sanity Check
6706 ------------------------------------------------------------------------*/
6707 if (eWLAN_PAL_FALSE == gWDIInitialized)
6708 {
6709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6710 "WDI API call before module is initialized - Fail request!");
6711
6712 return WDI_STATUS_E_NOT_ALLOWED;
6713 }
6714
6715 /*-------------------------------------------------------------------------
6716 Fill in Event data and post to the Main FSM
6717 ------------------------------------------------------------------------*/
6718 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6719 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6720 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6721 wdiEventData.pCBfnc = NULL;
6722 wdiEventData.pUserData = NULL;
6723
6724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6725}
6726
6727/**
6728 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6729
6730 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6731
6732 @see
6733
6734 @return Status of the request
6735*/
6736WDI_Status
6737WDI_DelPeriodicTxPtrnInd
6738(
6739 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6740)
6741{
6742 WDI_EventInfoType wdiEventData;
6743
6744 /*-------------------------------------------------------------------------
6745 Sanity Check
6746 ------------------------------------------------------------------------*/
6747 if (eWLAN_PAL_FALSE == gWDIInitialized)
6748 {
6749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6750 "WDI API call before module is initialized - Fail request!");
6751
6752 return WDI_STATUS_E_NOT_ALLOWED;
6753 }
6754
6755 /*-------------------------------------------------------------------------
6756 Fill in Event data and post to the Main FSM
6757 ------------------------------------------------------------------------*/
6758 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6759 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6760 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6761 wdiEventData.pCBfnc = NULL;
6762 wdiEventData.pUserData = NULL;
6763
6764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6765}
6766
6767/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 @brief WDI_HALDumpCmdReq
6769 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006770
6771 @param halDumpCmdReqParams: Hal Dump Command Body
6772 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006774
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 @see
6776 @return Result of the function call
6777*/
6778WDI_Status WDI_HALDumpCmdReq
6779(
6780 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6781 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6782 void *pUserData
6783)
6784{
6785 WDI_EventInfoType wdiEventData;
6786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6787
6788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 ------------------------------------------------------------------------*/
6791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6792 {
6793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6794 "WDI API call before module is initialized - Fail request");
6795
Jeff Johnsone7245742012-09-05 17:12:55 -07006796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 }
6798
6799 /*------------------------------------------------------------------------
6800 Fill in Event data and post to the Main FSM
6801 ------------------------------------------------------------------------*/
6802 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6803 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6804 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6805 wdiEventData.pCBfnc = halDumpCmdRspCb;
6806 wdiEventData.pUserData = pUserData;
6807
6808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6809}
6810
Jeff Johnsone7245742012-09-05 17:12:55 -07006811/*============================================================================
6812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006814
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 ============================================================================*/
6816
6817/**
6818 @brief Main FSM Start function for all states except BUSY
6819
Jeff Johnsone7245742012-09-05 17:12:55 -07006820
6821 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 wdiEV: event posted to the main DAL FSM
6823 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 structure
6825
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 @see
6827 @return Result of the function call
6828*/
6829WDI_Status
6830WDI_PostMainEvent
6831(
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 WDI_ControlBlockType* pWDICtx,
6833 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006834 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006835)
6836{
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 WDI_Status wdiStatus;
6838 WDI_MainFuncType pfnWDIMainEvHdlr;
6839 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306840 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6842
6843 /*-------------------------------------------------------------------------
6844 Sanity check
6845 -------------------------------------------------------------------------*/
6846 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6847 ( wdiEV >= WDI_MAX_EVENT ))
6848 {
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6850 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6851 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 }
6854
6855 /*Access to the global state must be locked */
6856 wpalMutexAcquire(&pWDICtx->wptMutex);
6857
6858 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006860
6861 wdiOldState = pWDICtx->uGlobalState;
6862
6863 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006864 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6865 response comes from CCPU for the request sent by host:
6866 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 -07006867 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 -07006868 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 CCPU:
6870 don't change the state */
6871 if ( WDI_RESPONSE_EVENT != wdiEV)
6872 {
6873 /*Transition to BUSY State - the request is now being processed by the FSM,
6874 if the request fails we shall transition back to the old state, if not
6875 the request will manage its own state transition*/
6876 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6877 }
6878 /* If the state function associated with the EV is NULL it means that this
6879 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 {
6882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006883 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006884 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006885 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 }
6887 else
6888 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05306889 if (!(failCnt & 0xF))
6890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05306893 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 }
6896
6897 /* If a request handles itself well it will end up in a success or in a
6898 pending
6899 Success - means that the request was processed and the proper state
6900 transition already occurred or will occur when the resp is received
6901 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006902
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 Pending - means the request could not be processed at this moment in time
6904 because the FSM was already busy so no state transition or dequeueing
6905 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006906
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 Success for synchronous case means that the transition may occur and
6908 processing of pending requests may continue - so it should go through
6909 and restores the state and continue processing queued requests*/
6910 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6911 ( WDI_STATUS_PENDING != wdiStatus ))
6912 {
6913 if ( WDI_RESPONSE_EVENT != wdiEV)
6914 {
6915 /*The request has failed or could not be processed - transition back to
6916 the old state - check to see if anything was queued and try to execute
6917 The dequeue logic should post a message to a thread and return - no
6918 actual processing can occur */
6919 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6920 }
6921 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006922
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 }
6924
6925 /* we have completed processing the event */
6926 wpalMutexRelease(&pWDICtx->wptMutex);
6927
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006929
6930}/*WDI_PostMainEvent*/
6931
6932
6933/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006935--------------------------------------------------------------------------*/
6936/**
6937 @brief Main FSM Start function for all states except BUSY
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939
6940 @param pWDICtx: pointer to the WLAN DAL context
6941 pEventData: pointer to the event information structure
6942
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 @see
6944 @return Result of the function call
6945*/
6946WDI_Status
6947WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006948(
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 WDI_ControlBlockType* pWDICtx,
6950 WDI_EventInfoType* pEventData
6951)
6952{
6953
6954 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 ----------------------------------------------------------------------*/
6957 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6958 {
6959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006960 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 pWDICtx, pEventData);
6962 return WDI_STATUS_E_FAILURE;
6963 }
6964
6965 wpalMutexAcquire(&pWDICtx->wptMutex);
6966
6967 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006968 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 ----------------------------------------------------------------------*/
6970 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6971 {
6972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6973 "Control Transport not yet Open - queueing the request");
6974
6975 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006976 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006977
6978 wpalMutexRelease(&pWDICtx->wptMutex);
6979 return WDI_STATUS_PENDING;
6980 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006981
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 wpalMutexRelease(&pWDICtx->wptMutex);
6983
6984 /*Return Success*/
6985 return WDI_ProcessRequest( pWDICtx, pEventData );
6986
6987}/*WDI_MainStart*/
6988
6989/**
6990 @brief Main FSM Response function for state INIT
6991
Jeff Johnsone7245742012-09-05 17:12:55 -07006992
6993 @param pWDICtx: pointer to the WLAN DAL context
6994 pEventData: pointer to the event information structure
6995
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 @see
6997 @return Result of the function call
6998*/
6999WDI_Status
7000WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007001(
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 WDI_ControlBlockType* pWDICtx,
7003 WDI_EventInfoType* pEventData
7004)
7005{
7006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007010
7011 /*Return Success*/
7012 return WDI_STATUS_E_NOT_ALLOWED;
7013}/* WDI_MainRspInit */
7014
7015/**
7016 @brief Main FSM Close function for all states except BUSY
7017
Jeff Johnsone7245742012-09-05 17:12:55 -07007018
7019 @param pWDICtx: pointer to the WLAN DAL context
7020 pEventData: pointer to the event information structure
7021
Jeff Johnson295189b2012-06-20 16:38:30 -07007022 @see
7023 @return Result of the function call
7024*/
7025WDI_Status
7026WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007027(
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 WDI_ControlBlockType* pWDICtx,
7029 WDI_EventInfoType* pEventData
7030)
7031{
7032
7033 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007035 ----------------------------------------------------------------------*/
7036 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7037 {
7038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007039 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 pWDICtx, pEventData);
7041 return WDI_STATUS_E_FAILURE;
7042 }
7043
7044 /*Return Success*/
7045 return WDI_ProcessRequest( pWDICtx, pEventData );
7046
7047}/*WDI_MainClose*/
7048/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007050--------------------------------------------------------------------------*/
7051/**
7052 @brief Main FSM Start function for state STARTED
7053
Jeff Johnsone7245742012-09-05 17:12:55 -07007054
7055 @param pWDICtx: pointer to the WLAN DAL context
7056 pEventData: pointer to the event information structure
7057
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 @see
7059 @return Result of the function call
7060*/
7061WDI_Status
7062WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007063(
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 WDI_ControlBlockType* pWDICtx,
7065 WDI_EventInfoType* pEventData
7066)
7067{
7068 WDI_StartRspCb wdiStartRspCb = NULL;
7069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7070
7071 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 ----------------------------------------------------------------------*/
7074 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7075 {
7076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007077 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 pWDICtx, pEventData);
7079 return WDI_STATUS_E_FAILURE;
7080 }
7081
7082 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007083 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007084 ----------------------------------------------------------------------*/
7085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007087
7088 wpalMutexAcquire(&pWDICtx->wptMutex);
7089
7090 /*Transition back to started because the post function transitioned us to
7091 busy*/
7092 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7093
7094 /*Check to see if any request is pending*/
7095 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007096
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 wpalMutexRelease(&pWDICtx->wptMutex);
7098
7099 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7101
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 /*Notify UMAC*/
7103 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
7104
7105 /*Return Success*/
7106 return WDI_STATUS_SUCCESS;
7107
7108}/*WDI_MainStartStarted*/
7109
7110/**
7111 @brief Main FSM Stop function for state STARTED
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113
7114 @param pWDICtx: pointer to the WLAN DAL context
7115 pEventData: pointer to the event information structure
7116
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 @see
7118 @return Result of the function call
7119*/
7120WDI_Status
7121WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007122(
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 WDI_ControlBlockType* pWDICtx,
7124 WDI_EventInfoType* pEventData
7125)
7126{
7127 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 ----------------------------------------------------------------------*/
7130 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7131 {
7132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007133 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 pWDICtx, pEventData);
7135 return WDI_STATUS_E_FAILURE;
7136 }
7137
7138 /*State at this point is BUSY - because we enter this state before posting
7139 an event to the FSM in order to prevent potential race conditions*/
7140
7141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7142 "Processing stop request in FSM");
7143
7144 /*Return Success*/
7145 return WDI_ProcessRequest( pWDICtx, pEventData );
7146
7147}/*WDI_MainStopStarted*/
7148/**
7149 @brief Main FSM Request function for state started
7150
Jeff Johnsone7245742012-09-05 17:12:55 -07007151
7152 @param pWDICtx: pointer to the WLAN DAL context
7153 pEventData: pointer to the event information structure
7154
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 @see
7156 @return Result of the function call
7157*/
7158WDI_Status
7159WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007160(
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 WDI_ControlBlockType* pWDICtx,
7162 WDI_EventInfoType* pEventData
7163)
7164{
7165
7166 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 ----------------------------------------------------------------------*/
7169 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7170 {
7171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007172 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 pWDICtx, pEventData);
7174 return WDI_STATUS_E_FAILURE;
7175 }
7176
7177 /*State at this point is BUSY - because we enter this state before posting
7178 an event to the FSM in order to prevent potential race conditions*/
7179
7180 /*Return Success*/
7181 return WDI_ProcessRequest( pWDICtx, pEventData );
7182
7183}/*WDI_MainReqStarted*/
7184
7185/**
7186 @brief Main FSM Response function for all states except INIT
7187
Jeff Johnsone7245742012-09-05 17:12:55 -07007188
7189 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007191
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 @see
7193 @return Result of the function call
7194*/
7195WDI_Status
7196WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007197(
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 WDI_ControlBlockType* pWDICtx,
7199 WDI_EventInfoType* pEventData
7200)
7201{
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 wpt_boolean expectedResponse;
7204
7205 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 ----------------------------------------------------------------------*/
7208 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7209 {
7210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007211 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 pWDICtx, pEventData);
7213 return WDI_STATUS_E_FAILURE;
7214 }
7215
7216 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7217 {
7218 /* we received an expected response */
7219 expectedResponse = eWLAN_PAL_TRUE;
7220
7221 /*We expect that we will transition to started after this processing*/
7222 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7223
7224 /* we are no longer expecting a response */
7225 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7226 }
7227 else
7228 {
7229 /* we received an indication or unexpected response */
7230 expectedResponse = eWLAN_PAL_FALSE;
7231 /* for indications no need to update state from what it is right
7232 now, unless it explicitly does it in the indication handler (say
7233 for device failure ind) */
7234 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7235 }
7236
7237 /*Process the response and indication */
7238 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7239
7240 /*Lock the CB as we are about to do a state transition*/
7241 wpalMutexAcquire(&pWDICtx->wptMutex);
7242
7243 /*Transition to the expected state after the response processing
7244 - this should always be started state with the following exceptions:
7245 1. processing of a failed start response
7246 2. device failure detected while processing response
7247 3. stop response received*/
7248 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007249
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 /*Dequeue request that may have been queued while we were waiting for the
7251 response */
7252 if ( expectedResponse )
7253 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 }
7256
7257 wpalMutexRelease(&pWDICtx->wptMutex);
7258
7259 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261
7262}/*WDI_MainRsp*/
7263
7264/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007266--------------------------------------------------------------------------*/
7267/**
7268 @brief Main FSM Stop function for state STOPPED
7269
Jeff Johnsone7245742012-09-05 17:12:55 -07007270
7271 @param pWDICtx: pointer to the WLAN DAL context
7272 pEventData: pointer to the event information structure
7273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 @see
7275 @return Result of the function call
7276*/
7277WDI_Status
7278WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007279(
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 WDI_ControlBlockType* pWDICtx,
7281 WDI_EventInfoType* pEventData
7282)
7283{
7284 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 ----------------------------------------------------------------------*/
7287 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7288 {
7289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007290 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 pWDICtx, pEventData);
7292 return WDI_STATUS_E_FAILURE;
7293 }
7294
7295 /*We should normally not get a STOP request if we are already stopped
7296 since we should normally be stopped by the UMAC. However in some
7297 error situations we put ourselves in the stopped state without the
7298 UMAC knowing, so when we get a STOP request in this state we still
7299 process it since we need to clean up the underlying state */
7300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7301 "Processing stop request while stopped in FSM");
7302
7303 /*Return Success*/
7304 return WDI_ProcessRequest( pWDICtx, pEventData );
7305
7306}/*WDI_MainStopStopped*/
7307
7308/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007309 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007310--------------------------------------------------------------------------*/
7311/**
7312 @brief Main FSM Start function for state BUSY
7313
Jeff Johnsone7245742012-09-05 17:12:55 -07007314
7315 @param pWDICtx: pointer to the WLAN DAL context
7316 pEventData: pointer to the event information structure
7317
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 @see
7319 @return Result of the function call
7320*/
7321WDI_Status
7322WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007323(
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 WDI_ControlBlockType* pWDICtx,
7325 WDI_EventInfoType* pEventData
7326)
7327{
7328 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 ----------------------------------------------------------------------*/
7331 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7332 {
7333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007334 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 pWDICtx, pEventData);
7336 return WDI_STATUS_E_FAILURE;
7337 }
7338
7339 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 ----------------------------------------------------------------------*/
7342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7343 "WDI Busy state - queue start request");
7344
7345 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007347
7348 /*Return Success*/
7349 return WDI_STATUS_PENDING;
7350}/*WDI_MainStartBusy*/
7351
7352/**
7353 @brief Main FSM Stop function for state BUSY
7354
Jeff Johnsone7245742012-09-05 17:12:55 -07007355
7356 @param pWDICtx: pointer to the WLAN DAL context
7357 pEventData: pointer to the event information structure
7358
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 @see
7360 @return Result of the function call
7361*/
7362WDI_Status
7363WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007364(
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 WDI_ControlBlockType* pWDICtx,
7366 WDI_EventInfoType* pEventData
7367)
7368{
7369 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 ----------------------------------------------------------------------*/
7372 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7373 {
7374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007375 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 pWDICtx, pEventData);
7377 return WDI_STATUS_E_FAILURE;
7378 }
7379
7380 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 ----------------------------------------------------------------------*/
7383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7384 "WDI Busy state - queue stop request");
7385
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007388
Jeff Johnson295189b2012-06-20 16:38:30 -07007389}/*WDI_MainStopBusy*/
7390
7391/**
7392 @brief Main FSM Request function for state BUSY
7393
Jeff Johnsone7245742012-09-05 17:12:55 -07007394
7395 @param pWDICtx: pointer to the WLAN DAL context
7396 pEventData: pointer to the event information structure
7397
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 @see
7399 @return Result of the function call
7400*/
7401WDI_Status
7402WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007403(
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 WDI_ControlBlockType* pWDICtx,
7405 WDI_EventInfoType* pEventData
7406)
7407{
7408 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 ----------------------------------------------------------------------*/
7411 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7412 {
7413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007414 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pWDICtx, pEventData);
7416 return WDI_STATUS_E_FAILURE;
7417 }
7418
7419 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 ----------------------------------------------------------------------*/
7422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7423 "WDI Busy state - queue request %d because waiting for response %d",
7424 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7425
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007428
Jeff Johnson295189b2012-06-20 16:38:30 -07007429}/*WDI_MainReqBusy*/
7430/**
7431 @brief Main FSM Close function for state BUSY
7432
Jeff Johnsone7245742012-09-05 17:12:55 -07007433
7434 @param pWDICtx: pointer to the WLAN DAL context
7435 pEventData: pointer to the event information structure
7436
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 @see
7438 @return Result of the function call
7439*/
7440WDI_Status
7441WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007442(
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 WDI_ControlBlockType* pWDICtx,
7444 WDI_EventInfoType* pEventData
7445)
7446{
7447 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 ----------------------------------------------------------------------*/
7450 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7451 {
7452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007453 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 pWDICtx, pEventData);
7455 return WDI_STATUS_E_FAILURE;
7456 }
7457
7458 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 ----------------------------------------------------------------------*/
7461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7462 "WDI Busy state - queue close request");
7463
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007466
Jeff Johnson295189b2012-06-20 16:38:30 -07007467}/*WDI_MainCloseBusy*/
7468
7469/**
7470 @brief Main FSM Shutdown function for INIT & STARTED states
7471
7472
7473 @param pWDICtx: pointer to the WLAN DAL context
7474 pEventData: pointer to the event information structure
7475
7476 @see
7477 @return Result of the function call
7478*/
7479WDI_Status
7480WDI_MainShutdown
7481(
7482 WDI_ControlBlockType* pWDICtx,
7483 WDI_EventInfoType* pEventData
7484)
7485{
7486 /*--------------------------------------------------------------------
7487 Sanity Check
7488 ----------------------------------------------------------------------*/
7489 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7490 {
7491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007492 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 pWDICtx, pEventData);
7494 return WDI_STATUS_E_FAILURE;
7495 }
7496
7497 /*State at this point is BUSY - because we enter this state before posting
7498 an event to the FSM in order to prevent potential race conditions*/
7499
7500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7501 "Processing shutdown request in FSM");
7502
7503 /*Return Success*/
7504 return WDI_ProcessRequest( pWDICtx, pEventData );
7505
7506}/*WDI_MainShutdown*/
7507
7508/**
7509 @brief Main FSM Shutdown function for BUSY state
7510
7511
7512 @param pWDICtx: pointer to the WLAN DAL context
7513 pEventData: pointer to the event information structure
7514
7515 @see
7516 @return Result of the function call
7517*/
7518WDI_Status
7519WDI_MainShutdownBusy
7520(
7521 WDI_ControlBlockType* pWDICtx,
7522 WDI_EventInfoType* pEventData
7523)
7524{
7525 /*--------------------------------------------------------------------
7526 Sanity Check
7527 ----------------------------------------------------------------------*/
7528 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7529 {
7530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007531 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 pWDICtx, pEventData);
7533 return WDI_STATUS_E_FAILURE;
7534 }
7535
7536 /* If you are waiting for a HAL response at this stage, you are not
7537 * going to get it. Riva is already shutdown/crashed.
7538 */
7539 wpalTimerStop(&gWDICb.wptResponseTimer);
7540
7541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7542 "Processing shutdown request in FSM: Busy state ");
7543
7544 return WDI_ProcessRequest( pWDICtx, pEventData );
7545
7546}/*WDI_MainShutdownBusy*/
7547
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549/*=======================================================================
7550
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007552
Jeff Johnson295189b2012-06-20 16:38:30 -07007553*=======================================================================*/
7554
7555/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007557========================================================================*/
7558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007561
7562 @param pWDICtx: pointer to the WLAN DAL context
7563 pEventData: pointer to the event information structure
7564
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 @see
7566 @return Result of the function call
7567*/
7568WDI_Status
7569WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007570(
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 WDI_ControlBlockType* pWDICtx,
7572 WDI_EventInfoType* pEventData
7573)
7574{
7575 WDI_StartReqParamsType* pwdiStartParams = NULL;
7576 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 wpt_uint16 usDataOffset = 0;
7579 wpt_uint16 usSendSize = 0;
7580
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 tHalMacStartReqMsg halStartReq;
7582 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7584
7585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 -------------------------------------------------------------------------*/
7588 if (( NULL == pEventData ) ||
7589 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7590 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7591 {
7592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 }
7597
7598 /*-----------------------------------------------------------------------
7599 Get message buffer
7600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 pwdiStartParams->usConfigBufferLen;
7603
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 usLen,
7606 &pSendBuffer, &usDataOffset, &usSendSize))||
7607 ( usSendSize < (usDataOffset + usLen )))
7608 {
7609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007610 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 pEventData, pwdiStartParams, wdiStartRspCb);
7612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 }
7615
7616 /*-----------------------------------------------------------------------
7617 Fill in the message
7618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 halStartReq.startReqParams.driverType =
7620 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007621
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 halStartReq.startReqParams.uConfigBufferLen =
7623 pwdiStartParams->usConfigBufferLen;
7624 wpalMemoryCopy( pSendBuffer+usDataOffset,
7625 &halStartReq.startReqParams,
7626 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007627
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 usDataOffset += sizeof(halStartReq.startReqParams);
7629 wpalMemoryCopy( pSendBuffer+usDataOffset,
7630 pwdiStartParams->pConfigBuffer,
7631 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007632
7633 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635
7636 /*Save Low Level Ind CB and associated user data - it will be used further
7637 on when an indication is coming from the lower MAC*/
7638 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7647
Jeff Johnsone7245742012-09-05 17:12:55 -07007648
Jeff Johnson295189b2012-06-20 16:38:30 -07007649}/*WDI_ProcessStartReq*/
7650
7651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007654
7655 @param pWDICtx: pointer to the WLAN DAL context
7656 pEventData: pointer to the event information structure
7657
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 @see
7659 @return Result of the function call
7660*/
7661WDI_Status
7662WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007663(
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 WDI_ControlBlockType* pWDICtx,
7665 WDI_EventInfoType* pEventData
7666)
7667{
7668 WDI_StopReqParamsType* pwdiStopParams = NULL;
7669 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 wpt_uint16 usDataOffset = 0;
7672 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007673 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7676
7677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 -------------------------------------------------------------------------*/
7680 if (( NULL == pEventData ) ||
7681 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7682 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7683 {
7684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007687 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 }
7689
7690 /*-----------------------------------------------------------------------
7691 Get message buffer
7692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 sizeof(halStopReq.stopReqParams),
7695 &pSendBuffer, &usDataOffset, &usSendSize))||
7696 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7697 {
7698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007699 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 pEventData, pwdiStopParams, wdiStopRspCb);
7701 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007702 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 }
7704
7705 /*-----------------------------------------------------------------------
7706 Fill in the message
7707 -----------------------------------------------------------------------*/
7708 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7709 pwdiStopParams->wdiStopReason);
7710
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 wpalMemoryCopy( pSendBuffer+usDataOffset,
7712 &halStopReq.stopReqParams,
7713 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007714
7715 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007717
7718 /*! TO DO: stop the data services */
7719 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7720 {
7721 /*Stop the STA Table !UT- check this logic again
7722 It is safer to do it here than on the response - because a stop is imminent*/
7723 WDI_STATableStop(pWDICtx);
7724
7725 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007726 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7727 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 {
7729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7730 "WDI Init failed to reset power state event");
7731
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007733 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 }
7735 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007736 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7737 if( eWLAN_PAL_STATUS_SUCCESS != status )
7738 {
7739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007740 "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 -08007741 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007742 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007743 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007747 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7748 WDI_SET_POWER_STATE_TIMEOUT);
7749 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 {
7751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7752 "WDI Init failed to wait on an event");
7753
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007755 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 }
7757 }
7758
7759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7764
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007765fail:
7766 // Release the message buffer so we don't leak
7767 wpalMemoryFree(pSendBuffer);
7768
7769failRequest:
7770 //WDA should have failure check to avoid the memory leak
7771 return WDI_STATUS_E_FAILURE;
7772
Jeff Johnson295189b2012-06-20 16:38:30 -07007773}/*WDI_ProcessStopReq*/
7774
7775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007778
7779 @param pWDICtx: pointer to the WLAN DAL context
7780 pEventData: pointer to the event information structure
7781
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 @see
7783 @return Result of the function call
7784*/
7785WDI_Status
7786WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007787(
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 WDI_ControlBlockType* pWDICtx,
7789 WDI_EventInfoType* pEventData
7790)
7791{
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7794
7795 /*Lock control block for cleanup*/
7796 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007797
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 /*Clear all pending request*/
7799 WDI_ClearPendingRequests(pWDICtx);
7800
7801 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007803
7804 /* Close Data transport*/
7805 /* FTM mode does not open Data Path */
7806 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7807 {
7808 WDTS_Close(pWDICtx);
7809 }
7810
7811 /*Close the STA Table !UT- check this logic again*/
7812 WDI_STATableClose(pWDICtx);
7813
7814 /*close the PAL */
7815 wptStatus = wpalClose(pWDICtx->pPALContext);
7816 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7817 {
7818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7819 "Failed to wpal Close %d", wptStatus);
7820 WDI_ASSERT(0);
7821 }
7822
7823 /*Transition back to init state*/
7824 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7825
7826 wpalMutexRelease(&pWDICtx->wptMutex);
7827
7828 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007830
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007832}/*WDI_ProcessCloseReq*/
7833
7834
7835/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007837===========================================================================*/
7838
7839/**
7840 @brief Process Init Scan Request function (called when Main FSM
7841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007842
7843 @param pWDICtx: pointer to the WLAN DAL context
7844 pEventData: pointer to the event information structure
7845
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 @see
7847 @return Result of the function call
7848*/
7849WDI_Status
7850WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007851(
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 WDI_ControlBlockType* pWDICtx,
7853 WDI_EventInfoType* pEventData
7854)
7855{
7856 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7857 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 wpt_uint16 usDataOffset = 0;
7860 wpt_uint16 usSendSize = 0;
7861 wpt_uint8 i = 0;
7862
7863 tHalInitScanReqMsg halInitScanReqMsg;
7864
Jeff Johnsone7245742012-09-05 17:12:55 -07007865 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 * It shold be removed once host and riva changes are in sync*/
7867 tHalInitScanConReqMsg halInitScanConReqMsg;
7868
7869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7870
7871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 -------------------------------------------------------------------------*/
7874 if (( NULL == pEventData ) ||
7875 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7876 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7877 {
7878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 }
7883
7884#if 0
7885 wpalMutexAcquire(&pWDICtx->wptMutex);
7886 /*-----------------------------------------------------------------------
7887 Check to see if SCAN is already in progress - if so reject the req
7888 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 -----------------------------------------------------------------------*/
7891 if ( pWDICtx->bScanInProgress )
7892 {
7893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7894 "Scan is already in progress - subsequent scan is not allowed"
7895 " until the first scan completes");
7896
7897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 }
7900
Jeff Johnsone7245742012-09-05 17:12:55 -07007901 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7902 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903
7904 wpalMutexRelease(&pWDICtx->wptMutex);
7905#endif
Viral Modid86bde22012-12-10 13:09:21 -08007906 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 * It shold be removed once host and riva changes are in sync*/
7910 /*-----------------------------------------------------------------------
7911 Get message buffer
7912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 sizeof(halInitScanConReqMsg.initScanParams),
7915 &pSendBuffer, &usDataOffset, &usSendSize))||
7916 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7917 {
7918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007919 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 }
7924
7925
7926 /*-----------------------------------------------------------------------
7927 Fill in the message
7928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7931
7932 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7933 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7934
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7941
7942 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7943 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7944
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7946 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7950
7951 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7952 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7955 }
7956
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 wpalMemoryCopy( pSendBuffer+usDataOffset,
7958 &halInitScanConReqMsg.initScanParams,
7959 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 }
7961 else
7962 {
7963 /*-----------------------------------------------------------------------
7964 Get message buffer
7965 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 sizeof(halInitScanReqMsg.initScanParams),
7968 &pSendBuffer, &usDataOffset, &usSendSize))||
7969 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7970 {
7971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007972 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 }
7977
7978
7979 /*-----------------------------------------------------------------------
7980 Fill in the message
7981 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7984
7985 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7986 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7987
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7994
7995 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7996 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7997
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8000
8001 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8002 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8005 }
8006
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 wpalMemoryCopy( pSendBuffer+usDataOffset,
8008 &halInitScanReqMsg.initScanParams,
8009 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 }
8011
8012 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008014
8015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8020
8021}/*WDI_ProcessInitScanReq*/
8022
8023/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008026
8027 @param pWDICtx: pointer to the WLAN DAL context
8028 pEventData: pointer to the event information structure
8029
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 @see
8031 @return Result of the function call
8032*/
8033WDI_Status
8034WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008035(
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 WDI_ControlBlockType* pWDICtx,
8037 WDI_EventInfoType* pEventData
8038)
8039{
8040 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8041 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 wpt_uint16 usDataOffset = 0;
8044 wpt_uint16 usSendSize = 0;
8045
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8048
8049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 -------------------------------------------------------------------------*/
8052 if (( NULL == pEventData ) ||
8053 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8054 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8055 {
8056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 }
8061
8062#if 0
8063 wpalMutexAcquire(&pWDICtx->wptMutex);
8064 /*-----------------------------------------------------------------------
8065 Check to see if SCAN is already in progress - start scan is only
8066 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8071 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8072 {
8073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8074 "Scan start not allowed in this state %d %d",
8075 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008076
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 }
8080
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082
8083 wpalMutexRelease(&pWDICtx->wptMutex);
8084#endif
8085
8086 /*-----------------------------------------------------------------------
8087 Get message buffer
8088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 sizeof(halStartScanReqMsg.startScanParams),
8091 &pSendBuffer, &usDataOffset, &usSendSize))||
8092 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8093 {
8094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008095 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 }
8100
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 wpalMemoryCopy( pSendBuffer+usDataOffset,
8104 &halStartScanReqMsg.startScanParams,
8105 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008106
8107 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008109
8110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8115}/*WDI_ProcessStartScanReq*/
8116
8117
8118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008121
8122 @param pWDICtx: pointer to the WLAN DAL context
8123 pEventData: pointer to the event information structure
8124
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 @see
8126 @return Result of the function call
8127*/
8128WDI_Status
8129WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008130(
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 WDI_ControlBlockType* pWDICtx,
8132 WDI_EventInfoType* pEventData
8133)
8134{
8135 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8136 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 wpt_uint16 usDataOffset = 0;
8139 wpt_uint16 usSendSize = 0;
8140
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8143
8144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 -------------------------------------------------------------------------*/
8147 if (( NULL == pEventData ) ||
8148 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8149 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 }
8156
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8158 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 * forwarded to HAL and result in hang*/
8160#if 0
8161 wpalMutexAcquire(&pWDICtx->wptMutex);
8162 /*-----------------------------------------------------------------------
8163 Check to see if SCAN is already in progress - end scan is only
8164 allowed when a scan is ongoing and the state of the scan procedure
8165 is started
8166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8169 {
8170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8171 "End start not allowed in this state %d %d",
8172 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008173
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 }
8177
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008179
8180 wpalMutexRelease(&pWDICtx->wptMutex);
8181#endif
8182
8183 /*-----------------------------------------------------------------------
8184 Get message buffer
8185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 sizeof(halEndScanReqMsg.endScanParams),
8188 &pSendBuffer, &usDataOffset, &usSendSize))||
8189 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8190 {
8191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008192 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008193 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 }
8197
8198 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8199
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 wpalMemoryCopy( pSendBuffer+usDataOffset,
8201 &halEndScanReqMsg.endScanParams,
8202 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
8204 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
8207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8212}/*WDI_ProcessEndScanReq*/
8213
8214
8215/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008218
8219 @param pWDICtx: pointer to the WLAN DAL context
8220 pEventData: pointer to the event information structure
8221
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 @see
8223 @return Result of the function call
8224*/
8225WDI_Status
8226WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008227(
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 WDI_ControlBlockType* pWDICtx,
8229 WDI_EventInfoType* pEventData
8230)
8231{
8232 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8233 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 wpt_uint16 usDataOffset = 0;
8236 wpt_uint16 usSendSize = 0;
8237 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008238 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8241
8242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 -------------------------------------------------------------------------*/
8245 if (( NULL == pEventData ) ||
8246 ( NULL == pEventData->pEventData) ||
8247 ( NULL == pEventData->pCBfnc))
8248 {
8249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
8254
8255 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8256 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8258 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 * forwarded to HAL and result in hang*/
8260#if 0
8261 wpalMutexAcquire(&pWDICtx->wptMutex);
8262 /*-----------------------------------------------------------------------
8263 Check to see if SCAN is already in progress
8264 Finish scan gets invoked any scan states. ie. abort scan
8265 It should be allowed in any states.
8266 -----------------------------------------------------------------------*/
8267 if ( !pWDICtx->bScanInProgress )
8268 {
8269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8270 "Finish start not allowed in this state %d",
8271 pWDICtx->bScanInProgress );
8272
8273 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 }
8276
8277 /*-----------------------------------------------------------------------
8278 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008281 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8282 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 wpalMutexRelease(&pWDICtx->wptMutex);
8284#endif
8285
8286 if ( pWDICtx->bInBmps )
8287 {
8288 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008289 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8290 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8291 {
8292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008293 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008294 WDI_ASSERT(0);
8295 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 }
8297
8298 /*-----------------------------------------------------------------------
8299 Get message buffer
8300 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 sizeof(halFinishScanReqMsg.finishScanParams),
8303 &pSendBuffer, &usDataOffset, &usSendSize))||
8304 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8305 {
8306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008307 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 }
8312
Jeff Johnsone7245742012-09-05 17:12:55 -07008313 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8315
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8318
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8321
8322 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8323 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8331
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8334
8335 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8336 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8339 }
8340
8341 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8342 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8343
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 wpalMemoryCopy( pSendBuffer+usDataOffset,
8345 &halFinishScanReqMsg.finishScanParams,
8346 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008347
8348 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008350
8351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8356}/*WDI_ProcessFinishScanReq*/
8357
8358
8359/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008361==========================================================================*/
8362/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 @brief Process BSS Join for a given Session
8364
8365 @param pWDICtx: pointer to the WLAN DAL context
8366 pEventData: pointer to the event information structure
8367
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 @see
8369 @return Result of the function call
8370*/
8371WDI_Status
8372WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008373(
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 WDI_ControlBlockType* pWDICtx,
8375 WDI_JoinReqParamsType* pwdiJoinParams,
8376 WDI_JoinRspCb wdiJoinRspCb,
8377 void* pUserData
8378)
8379{
8380 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 wpt_uint16 usDataOffset = 0;
8383 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008385
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8388
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008389 wpalMutexAcquire(&pWDICtx->wptMutex);
8390
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 /*------------------------------------------------------------------------
8392 Check to see if we have any session with this BSSID already stored, we
8393 should not
8394 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8396 pwdiJoinParams->wdiReqInfo.macBSSID,
8397 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008398
8399 if ( NULL != pBSSSes )
8400 {
8401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008402 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8403 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008405 /*reset the bAssociationInProgress otherwise the next
8406 *join request will be queued*/
8407 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8408 wpalMutexRelease(&pWDICtx->wptMutex);
8409 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 }
8411
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008414 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 if ( NULL == pBSSSes )
8417 {
8418
8419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8420 "DAL has no free sessions - cannot run another join");
8421
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008422 /*reset the bAssociationInProgress otherwise the next
8423 *join request will be queued*/
8424 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
8428
8429 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8431 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 WDI_MAC_ADDR_LEN);
8433
8434 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008437
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 wpalMutexRelease(&pWDICtx->wptMutex);
8439
8440 /*-----------------------------------------------------------------------
8441 Get message buffer
8442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 sizeof(halJoinReqMsg.joinReqParams),
8445 &pSendBuffer, &usDataOffset, &usSendSize))||
8446 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8447 {
8448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008449 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pUserData, pwdiJoinParams, wdiJoinRspCb);
8451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 }
8454
8455 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008457
8458 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 pwdiJoinParams->wdiReqInfo.macSTASelf,
8460 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8464
8465 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8466
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008467#ifdef WLAN_FEATURE_VOWIFI
8468 halJoinReqMsg.joinReqParams.maxTxPower =
8469 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8470#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8473#endif
8474
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8477 wdiSecondaryChannelOffset);
8478
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 wpalMemoryCopy( pSendBuffer+usDataOffset,
8480 &halJoinReqMsg.joinReqParams,
8481 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008482
8483 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485
8486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8490 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008491
8492}/*WDI_ProcessBSSSessionJoinReq*/
8493
8494/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008497
8498 @param pWDICtx: pointer to the WLAN DAL context
8499 pEventData: pointer to the event information structure
8500
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 @see
8502 @return Result of the function call
8503*/
8504WDI_Status
8505WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008506(
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 WDI_ControlBlockType* pWDICtx,
8508 WDI_EventInfoType* pEventData
8509)
8510{
8511 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8512 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8513 WDI_JoinRspCb wdiJoinRspCb = NULL;
8514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8515
8516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 -------------------------------------------------------------------------*/
8519 if (( NULL == pEventData ) ||
8520 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8521 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8522 {
8523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008528
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 /*-------------------------------------------------------------------------
8530 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 -------------------------------------------------------------------------*/
8533 wpalMutexAcquire(&pWDICtx->wptMutex);
8534
8535 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8536 {
8537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8538 "Association is currently in progress, queueing new join req");
8539
8540 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 pwdiJoinParams->wdiReqInfo.macBSSID);
8543
8544 wpalMutexRelease(&pWDICtx->wptMutex);
8545
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 }
8548
8549 /*Starting a new association */
8550 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8551 wpalMutexRelease(&pWDICtx->wptMutex);
8552
8553 /*Process the Join Request*/
8554 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8555 wdiJoinRspCb,pEventData->pUserData);
8556
8557}/*WDI_ProcessJoinReq*/
8558
8559
8560/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008563
8564 @param pWDICtx: pointer to the WLAN DAL context
8565 pEventData: pointer to the event information structure
8566
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 @see
8568 @return Result of the function call
8569*/
8570WDI_Status
8571WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008572(
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 WDI_ControlBlockType* pWDICtx,
8574 WDI_EventInfoType* pEventData
8575)
8576{
8577 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8578 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 wpt_uint16 uMsgSize = 0;
8582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 wpt_uint16 usDataOffset = 0;
8584 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8589
8590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 -------------------------------------------------------------------------*/
8593 if (( NULL == pEventData ) ||
8594 ( NULL == pEventData->pEventData ) ||
8595 ( NULL == pEventData->pCBfnc ))
8596 {
8597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 }
8602
Abhishek Singh6927fa02014-06-27 17:19:55 +05308603 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8605 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8606 /*-------------------------------------------------------------------------
8607 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 -------------------------------------------------------------------------*/
8610 wpalMutexAcquire(&pWDICtx->wptMutex);
8611
8612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8616 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8617 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008618
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 {
8621#ifdef WLAN_FEATURE_VOWIFI_11R
8622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 if ( NULL == pBSSSes )
8627 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008628
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8630 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008631
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008635
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8638 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008640
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8644#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 * Request in case of IBSS*/
8647 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8648 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8649 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8650 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8651 {
8652 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 if ( NULL == pBSSSes )
8657 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008658
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8660 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008661
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008665
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8668 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008670
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8674 }
8675 else
8676 {
8677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8679 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8680 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8681
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 /* for IBSS testing */
8683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 }
8686#endif
8687 }
8688
8689 /*------------------------------------------------------------------------
8690 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 ------------------------------------------------------------------------*/
8693 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8694 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8696 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8697 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8698 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008699
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008701
8702 wpalMutexRelease(&pWDICtx->wptMutex);
8703
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8709 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 sizeof(pWDICtx->wdiCachedConfigBssReq));
8711
8712 wpalMutexRelease(&pWDICtx->wptMutex);
8713
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8715#ifdef WLAN_FEATURE_11AC
8716 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008717 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 else
8719#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008720 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
8722 /*-----------------------------------------------------------------------
8723 Get message buffer
8724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8727 ( usSendSize < (usDataOffset + uMsgSize )))
8728 {
8729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008730 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 }
8735
8736 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008737#ifdef WLAN_FEATURE_11AC
8738 if (WDI_getFwWlanFeatCaps(DOT11AC))
8739 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8740 &pwdiConfigBSSParams->wdiReqInfo);
8741 else
8742#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 &pwdiConfigBSSParams->wdiReqInfo);
8745
8746 /* Need to fill in the STA Index to invalid, since at this point we have not
8747 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008749
8750 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8752
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008753#ifdef WLAN_FEATURE_11AC
8754 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8755 wpalMemoryCopy( pSendBuffer+usDataOffset,
8756 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8757 uMsgSize);
8758 }else
8759#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008760 {
8761 if ( uMsgSize <= sizeof(tConfigBssParams) )
8762 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008763 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008764 &halConfigBssReqMsg.uBssParams.configBssParams,
8765 uMsgSize);
8766 }
8767 else
8768 {
8769 return WDI_STATUS_E_FAILURE;
8770 }
8771 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008772
8773 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308775 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8780 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 WDI_CONFIG_BSS_RESP);
8782
8783}/*WDI_ProcessConfigBSSReq*/
8784
8785
8786/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008789
8790 @param pWDICtx: pointer to the WLAN DAL context
8791 pEventData: pointer to the event information structure
8792
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 @see
8794 @return Result of the function call
8795*/
8796WDI_Status
8797WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008798(
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 WDI_ControlBlockType* pWDICtx,
8800 WDI_EventInfoType* pEventData
8801)
8802{
8803 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8804 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 wpt_uint16 usDataOffset = 0;
8809 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8814
8815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 -------------------------------------------------------------------------*/
8818 if (( NULL == pEventData ) ||
8819 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8820 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8821 {
8822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 }
8827
8828 /*-------------------------------------------------------------------------
8829 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 -------------------------------------------------------------------------*/
8832 wpalMutexAcquire(&pWDICtx->wptMutex);
8833
8834 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8838 pwdiDelBSSParams->ucBssIdx,
8839 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008840
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 {
8843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 "%s: BSS does not yet exist. ucBssIdx %d",
8845 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008846
8847 wpalMutexRelease(&pWDICtx->wptMutex);
8848
8849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008851
8852 /*------------------------------------------------------------------------
8853 Check if this BSS is being currently processed or queued,
8854 if queued - queue the new request as well
8855 ------------------------------------------------------------------------*/
8856 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8859 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8860 __func__, pwdiDelBSSParams->ucBssIdx);
8861
8862 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8863
8864 wpalMutexRelease(&pWDICtx->wptMutex);
8865
8866 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008868
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 /*-----------------------------------------------------------------------
8870 If we receive a Del BSS request for an association that is already in
8871 progress, it indicates that the assoc has failed => we no longer have
8872 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 -----------------------------------------------------------------------*/
8875 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8876 {
8877 /*We can switch to false here because even if a subsequent Join comes in
8878 it will only be processed when DAL transitions out of BUSY state which
8879 happens when the Del BSS request comes */
8880 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8881
8882 /*Former association is complete - prepare next pending assoc for
8883 processing */
8884 WDI_DequeueAssocRequest(pWDICtx);
8885 }
8886
8887 wpalMutexRelease(&pWDICtx->wptMutex);
8888 /*-----------------------------------------------------------------------
8889 Get message buffer
8890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 sizeof(halBssReqMsg.deleteBssParams),
8893 &pSendBuffer, &usDataOffset, &usSendSize))||
8894 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8895 {
8896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008897 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 }
8902
8903 /*Fill in the message request structure*/
8904
8905 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008906 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 wpalMemoryCopy( pSendBuffer+usDataOffset,
8909 &halBssReqMsg.deleteBssParams,
8910 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008911
8912 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008914
Jeff Johnsone7245742012-09-05 17:12:55 -07008915
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8921
Jeff Johnsone7245742012-09-05 17:12:55 -07008922
Jeff Johnson295189b2012-06-20 16:38:30 -07008923}/*WDI_ProcessDelBSSReq*/
8924
8925/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008928
8929 @param pWDICtx: pointer to the WLAN DAL context
8930 pEventData: pointer to the event information structure
8931
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 @see
8933 @return Result of the function call
8934*/
8935WDI_Status
8936WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008937(
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 WDI_ControlBlockType* pWDICtx,
8939 WDI_EventInfoType* pEventData
8940)
8941{
8942 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8943 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 wpt_uint16 usDataOffset = 0;
8948 wpt_uint16 usSendSize = 0;
8949 wpt_uint16 uMsgSize = 0;
8950 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008952
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8955
8956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 -------------------------------------------------------------------------*/
8959 if (( NULL == pEventData ) ||
8960 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8961 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8962 {
8963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 }
8968
8969 /*-------------------------------------------------------------------------
8970 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 -------------------------------------------------------------------------*/
8973 wpalMutexAcquire(&pWDICtx->wptMutex);
8974
8975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8979 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8980 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008981
8982 if ( NULL == pBSSSes )
8983 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8985 "%s: Association sequence for this BSS does not yet exist - "
8986 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8987 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008988
8989 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 }
8992
8993 /*------------------------------------------------------------------------
8994 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 ------------------------------------------------------------------------*/
8997 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8998 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9000 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9001 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009002
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009004
9005 wpalMutexRelease(&pWDICtx->wptMutex);
9006
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 }
9009
9010 /*-----------------------------------------------------------------------
9011 If Post Assoc was not yet received - the current association must
9012 be in progress
9013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9018 "Association sequence for this BSS association no longer in "
9019 "progress - not allowed");
9020
9021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 }
9024
9025 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 -----------------------------------------------------------------------*/
9028 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9029 {
9030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9031 "Post Assoc not allowed before JOIN - failing request");
9032
9033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037 wpalMutexRelease(&pWDICtx->wptMutex);
9038
9039 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9040 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9041 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9046 ( usSendSize < (usDataOffset + uMsgSize )))
9047 {
9048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009049 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054
9055 /*Copy the STA parameters */
9056 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9057 &pwdiPostAssocParams->wdiSTAParams );
9058
9059 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 WDI_STATableFindStaidByAddr(pWDICtx,
9062 pwdiPostAssocParams->wdiSTAParams.macSTA,
9063 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9064 {
9065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009066 MAC_ADDRESS_STR
9067 ": This station does not exist in the WDI Station Table",
9068 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009070 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 }
9073
9074 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 pBSSSes->ucBSSIdx;
9077
9078 /*Copy the BSS parameters */
9079 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9080 &pwdiPostAssocParams->wdiBSSParams);
9081
9082 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 WDI_STATableFindStaidByAddr(pWDICtx,
9085 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 {
9088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009089 MAC_ADDRESS_STR
9090 ": This station does not exist in the WDI Station Table",
9091 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009093 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009095 }
9096
9097 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pBSSSes->ucBSSIdx;
9100
Jeff Johnsone7245742012-09-05 17:12:55 -07009101
9102 wpalMemoryCopy( pSendBuffer+usDataOffset,
9103 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9104 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9109 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9110 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009111
Jeff Johnsone7245742012-09-05 17:12:55 -07009112
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009115
Jeff Johnsone7245742012-09-05 17:12:55 -07009116
9117 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309121 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9127
Jeff Johnsone7245742012-09-05 17:12:55 -07009128
Jeff Johnson295189b2012-06-20 16:38:30 -07009129}/*WDI_ProcessPostAssocReq*/
9130
9131/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009134
9135 @param pWDICtx: pointer to the WLAN DAL context
9136 pEventData: pointer to the event information structure
9137
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 @see
9139 @return Result of the function call
9140*/
9141WDI_Status
9142WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009143(
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 WDI_ControlBlockType* pWDICtx,
9145 WDI_EventInfoType* pEventData
9146)
9147{
9148 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9149 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 wpt_uint16 usDataOffset = 0;
9154 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9160
9161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 -------------------------------------------------------------------------*/
9164 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9165 ( NULL == pEventData->pCBfnc ))
9166 {
9167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 }
9172
9173 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9174 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9175 /*-------------------------------------------------------------------------
9176 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 -------------------------------------------------------------------------*/
9179 wpalMutexAcquire(&pWDICtx->wptMutex);
9180
9181 /*------------------------------------------------------------------------
9182 Find the BSS for which the request is made and identify WDI session
9183 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9185 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 &macBSSID))
9187 {
9188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009189 "This station does not exist in the WDI Station Table %d",
9190 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 }
9194
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9196 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9199 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9200 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009201
9202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 }
9205
9206 /*------------------------------------------------------------------------
9207 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 ------------------------------------------------------------------------*/
9210 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9211 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9213 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9214 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220
9221 wpalMutexRelease(&pWDICtx->wptMutex);
9222 /*-----------------------------------------------------------------------
9223 Get message buffer
9224 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 sizeof(halDelStaReqMsg.delStaParams),
9227 &pSendBuffer, &usDataOffset, &usSendSize))||
9228 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9229 {
9230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009231 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 }
9236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9238 wpalMemoryCopy( pSendBuffer+usDataOffset,
9239 &halDelStaReqMsg.delStaParams,
9240 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009241
9242 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009244
9245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9250
9251}/*WDI_ProcessDelSTAReq*/
9252
9253
9254/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009256==========================================================================*/
9257/**
9258 @brief Process Set BSS Key Request function (called when Main FSM
9259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009260
9261 @param pWDICtx: pointer to the WLAN DAL context
9262 pEventData: pointer to the event information structure
9263
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 @see
9265 @return Result of the function call
9266*/
9267WDI_Status
9268WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009269(
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 WDI_ControlBlockType* pWDICtx,
9271 WDI_EventInfoType* pEventData
9272)
9273{
9274 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9275 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 wpt_uint16 usDataOffset = 0;
9280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9283 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309284 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009285
9286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9287
9288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 -------------------------------------------------------------------------*/
9291 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9292 ( NULL == pEventData->pCBfnc ))
9293 {
9294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 }
9299
9300 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9301 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9302 /*-------------------------------------------------------------------------
9303 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 -------------------------------------------------------------------------*/
9306 wpalMutexAcquire(&pWDICtx->wptMutex);
9307
9308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9312 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9313 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009314
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 {
9317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9319 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009320
9321 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 }
9324
9325 /*------------------------------------------------------------------------
9326 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 ------------------------------------------------------------------------*/
9329 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9330 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9332 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9333 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009334
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 }
9339
9340
9341 wpalMutexRelease(&pWDICtx->wptMutex);
9342 /*-----------------------------------------------------------------------
9343 Get message buffer
9344 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9347 &pSendBuffer, &usDataOffset, &usSendSize))||
9348 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9349 {
9350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009351 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 }
9356
9357 /*-----------------------------------------------------------------------
9358 Copy the Key parameters into the HAL message
9359 -----------------------------------------------------------------------*/
9360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9365
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9368
9369 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9370 keyIndex++)
9371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9374 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9375 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9376 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9377 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309378
9379 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9380 {
9381 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9382 {
9383 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9384 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9385 }
9386
9387 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9388 {
9389 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9390 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9391 }
9392
9393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9394 "%s: Negated Keys", __func__);
9395 }
9396 else
9397 {
9398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9399 "%s: No change in Keys", __func__);
9400 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309403 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9404 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9405 WDI_MAX_KEY_LENGTH);
9406 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309411 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009412
9413 wpalMemoryCopy( pSendBuffer+usDataOffset,
9414 &halSetBssKeyReqMsg.setBssKeyParams,
9415 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009416
9417 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
9420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9424 wdiSetBSSKeyRspCb, pEventData->pUserData,
9425 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
9427}/*WDI_ProcessSetBssKeyReq*/
9428
9429/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009432
9433 @param pWDICtx: pointer to the WLAN DAL context
9434 pEventData: pointer to the event information structure
9435
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 @see
9437 @return Result of the function call
9438*/
9439WDI_Status
9440WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009441(
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 WDI_ControlBlockType* pWDICtx,
9443 WDI_EventInfoType* pEventData
9444)
9445{
9446 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9447 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 wpt_uint16 usDataOffset = 0;
9452 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9456
9457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 -------------------------------------------------------------------------*/
9460 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9461 ( NULL == pEventData->pCBfnc ))
9462 {
9463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 }
9468
9469 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9470 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9471 /*-------------------------------------------------------------------------
9472 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 -------------------------------------------------------------------------*/
9475 wpalMutexAcquire(&pWDICtx->wptMutex);
9476
9477 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9481 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9482 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 {
9486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9488 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009489
9490 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 }
9493
9494 /*------------------------------------------------------------------------
9495 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 ------------------------------------------------------------------------*/
9498 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9499 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9501 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9502 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009503
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 }
9508
9509
9510 wpalMutexRelease(&pWDICtx->wptMutex);
9511
9512 /*-----------------------------------------------------------------------
9513 Get message buffer
9514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9517 &pSendBuffer, &usDataOffset, &usSendSize))||
9518 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9519 {
9520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009521 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 }
9526 /*-----------------------------------------------------------------------
9527 Copy the Key parameters into the HAL message
9528 -----------------------------------------------------------------------*/
9529 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9533
9534 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9535
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9538
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 wpalMemoryCopy( pSendBuffer+usDataOffset,
9540 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9541 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009542
9543 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009545
9546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009552}/*WDI_ProcessRemoveBssKeyReq*/
9553
9554/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009557
9558 @param pWDICtx: pointer to the WLAN DAL context
9559 pEventData: pointer to the event information structure
9560
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 @see
9562 @return Result of the function call
9563*/
9564WDI_Status
9565WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009566(
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 WDI_ControlBlockType* pWDICtx,
9568 WDI_EventInfoType* pEventData
9569)
9570{
9571 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9572 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 wpt_uint16 usDataOffset = 0;
9576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9581 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309582 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009583
9584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9585
9586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 -------------------------------------------------------------------------*/
9589 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9590 ( NULL == pEventData->pCBfnc ))
9591 {
9592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 }
9597
9598 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9599 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9600 /*-------------------------------------------------------------------------
9601 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 -------------------------------------------------------------------------*/
9604 wpalMutexAcquire(&pWDICtx->wptMutex);
9605
9606 /*------------------------------------------------------------------------
9607 Find the BSS for which the request is made and identify WDI session
9608 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9610 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 &macBSSID))
9612 {
9613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009614 "This station does not exist in the WDI Station Table %d",
9615 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
9619
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9624 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009626
9627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009630
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 /*------------------------------------------------------------------------
9632 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 ------------------------------------------------------------------------*/
9635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9636 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9638 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9639 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009640
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 }
9645
9646
9647 wpalMutexRelease(&pWDICtx->wptMutex);
9648 /*-----------------------------------------------------------------------
9649 Get message buffer
9650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9653 &pSendBuffer, &usDataOffset, &usSendSize))||
9654 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9655 {
9656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009657 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 }
9662 /*-----------------------------------------------------------------------
9663 Copy the STA Key parameters into the HAL message
9664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9667
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9670
9671 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9672
9673 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9674
9675 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9676
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9678 keyIndex++)
9679 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9682 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9683 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9684 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9685 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309686
9687 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9688 {
9689 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9690 {
9691 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9692 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9693 }
9694
9695 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9696 {
9697 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9698 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9699 }
9700
9701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9702 "%s: Negated Keys", __func__);
9703 }
9704 else
9705 {
9706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9707 "%s: No change in Keys", __func__);
9708 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309711 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9712 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9713 WDI_MAX_KEY_LENGTH);
9714 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309719 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 wpalMemoryCopy( pSendBuffer+usDataOffset,
9722 &halSetStaKeyReqMsg.setStaKeyParams,
9723 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009724
9725 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309727 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9732 wdiSetSTAKeyRspCb, pEventData->pUserData,
9733 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009734
9735}/*WDI_ProcessSetSTAKeyReq*/
9736
9737/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009740
9741 @param pWDICtx: pointer to the WLAN DAL context
9742 pEventData: pointer to the event information structure
9743
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 @see
9745 @return Result of the function call
9746*/
9747WDI_Status
9748WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009749(
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 WDI_ControlBlockType* pWDICtx,
9751 WDI_EventInfoType* pEventData
9752)
9753{
9754 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9755 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9756 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 wpt_uint16 usDataOffset = 0;
9759 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 wpt_macAddr macBSSID;
9762 wpt_uint8 ucCurrentBSSSesIdx;
9763 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9765
9766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 -------------------------------------------------------------------------*/
9769 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9770 ( NULL == pEventData->pCBfnc ))
9771 {
9772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 }
9777
9778 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9779 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9780 /*-------------------------------------------------------------------------
9781 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 -------------------------------------------------------------------------*/
9784 wpalMutexAcquire(&pWDICtx->wptMutex);
9785
9786 /*------------------------------------------------------------------------
9787 Find the BSS for which the request is made and identify WDI session
9788 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9790 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 &macBSSID))
9792 {
9793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009794 "This station does not exist in the WDI Station Table %d",
9795 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 }
9799
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9801 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9804 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9805 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009806
9807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009810
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 /*------------------------------------------------------------------------
9812 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 ------------------------------------------------------------------------*/
9815 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9818 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9819 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009820
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
9826
9827
9828 wpalMutexRelease(&pWDICtx->wptMutex);
9829 /*-----------------------------------------------------------------------
9830 Get message buffer
9831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9834 &pSendBuffer, &usDataOffset, &usSendSize))||
9835 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9836 {
9837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009838 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 }
9843
9844 /*-----------------------------------------------------------------------
9845 Copy the Key parameters into the HAL message
9846 -----------------------------------------------------------------------*/
9847
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9850
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9853
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9859
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 wpalMemoryCopy( pSendBuffer+usDataOffset,
9861 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9862 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
9864 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866
9867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009873
9874}/*WDI_ProcessRemoveSTAKeyReq*/
9875
9876/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009879
9880 @param pWDICtx: pointer to the WLAN DAL context
9881 pEventData: pointer to the event information structure
9882
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 @see
9884 @return Result of the function call
9885*/
9886WDI_Status
9887WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009888(
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 WDI_ControlBlockType* pWDICtx,
9890 WDI_EventInfoType* pEventData
9891)
9892{
9893 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9894 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9895 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 wpt_uint16 usDataOffset = 0;
9898 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9903 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309904 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009905
9906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9907
9908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 -------------------------------------------------------------------------*/
9911 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9912 ( NULL == pEventData->pCBfnc ))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 }
9919
9920 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9921 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9922 /*-------------------------------------------------------------------------
9923 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 -------------------------------------------------------------------------*/
9926 wpalMutexAcquire(&pWDICtx->wptMutex);
9927
9928 /*------------------------------------------------------------------------
9929 Find the BSS for which the request is made and identify WDI session
9930 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9932 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 &macBSSID))
9934 {
9935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009936 "This station does not exist in the WDI Station Table %d",
9937 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 }
9941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9943 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 {
9945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009946 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
9949 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009952
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 /*------------------------------------------------------------------------
9954 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 ------------------------------------------------------------------------*/
9957 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9958 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9960 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9961 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009962
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 }
9967
9968
9969 wpalMutexRelease(&pWDICtx->wptMutex);
9970 /*-----------------------------------------------------------------------
9971 Get message buffer
9972 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9975 &pSendBuffer, &usDataOffset, &usSendSize))||
9976 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9977 {
9978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009979 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 }
9984 /*-----------------------------------------------------------------------
9985 Copy the STA Key parameters into the HAL message
9986 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9989
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9992
9993 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9994
9995 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9996
9997 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9998
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10000 keyIndex++)
10001 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10004 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10005 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10006 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10007 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010008
10009 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10010 {
10011 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10012 {
10013 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10014 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10015 }
10016
10017 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10018 {
10019 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10020 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10021 }
10022
10023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10024 "%s: Negated Keys", __func__);
10025 }
10026 else
10027 {
10028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10029 "%s: No change in Keys", __func__);
10030 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010033 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10034 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10035 WDI_MAX_KEY_LENGTH);
10036 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010041 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 wpalMemoryCopy( pSendBuffer+usDataOffset,
10043 &halSetStaKeyReqMsg.setStaKeyParams,
10044 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010045
10046 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010048
10049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10053 wdiSetSTAKeyRspCb, pEventData->pUserData,
10054 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010055
10056}/*WDI_ProcessSetSTABcastKeyReq*/
10057
10058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010061
10062 @param pWDICtx: pointer to the WLAN DAL context
10063 pEventData: pointer to the event information structure
10064
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 @see
10066 @return Result of the function call
10067*/
10068WDI_Status
10069WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010070(
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 WDI_ControlBlockType* pWDICtx,
10072 WDI_EventInfoType* pEventData
10073)
10074{
10075 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10076 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 wpt_uint16 usDataOffset = 0;
10080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010082 wpt_macAddr macBSSID;
10083 wpt_uint8 ucCurrentBSSSesIdx;
10084 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10086
10087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 -------------------------------------------------------------------------*/
10090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10091 ( NULL == pEventData->pCBfnc ))
10092 {
10093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 }
10098
10099 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10100 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10101 /*-------------------------------------------------------------------------
10102 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 -------------------------------------------------------------------------*/
10105 wpalMutexAcquire(&pWDICtx->wptMutex);
10106
10107 /*------------------------------------------------------------------------
10108 Find the BSS for which the request is made and identify WDI session
10109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10111 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 &macBSSID))
10113 {
10114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010115 "This station does not exist in the WDI Station Table %d",
10116 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 }
10120
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10122 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10125 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10126 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010127
10128 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010131
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 /*------------------------------------------------------------------------
10133 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 ------------------------------------------------------------------------*/
10136 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10137 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10139 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10140 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010141
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 }
10146
10147
10148
10149 wpalMutexRelease(&pWDICtx->wptMutex);
10150 /*-----------------------------------------------------------------------
10151 Get message buffer
10152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10155 &pSendBuffer, &usDataOffset, &usSendSize))||
10156 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10157 {
10158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010159 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 }
10164
10165 /*-----------------------------------------------------------------------
10166 Copy the Key parameters into the HAL message
10167 -----------------------------------------------------------------------*/
10168
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10171
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10174
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10177
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10180
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 wpalMemoryCopy( pSendBuffer+usDataOffset,
10182 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10183 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010184
10185 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187
10188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
10195}/*WDI_ProcessRemoveSTABcastKeyReq*/
10196
10197/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010199==========================================================================*/
10200/**
10201 @brief Process Add TSpec Request function (called when Main FSM
10202 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010203
10204 @param pWDICtx: pointer to the WLAN DAL context
10205 pEventData: pointer to the event information structure
10206
Jeff Johnson295189b2012-06-20 16:38:30 -070010207 @see
10208 @return Result of the function call
10209*/
10210WDI_Status
10211WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010212(
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 WDI_ControlBlockType* pWDICtx,
10214 WDI_EventInfoType* pEventData
10215)
10216{
10217 WDI_AddTSReqParamsType* pwdiAddTSParams;
10218 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 wpt_uint16 usDataOffset = 0;
10223 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 wpt_macAddr macBSSID;
10226 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010227
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10229
10230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 -------------------------------------------------------------------------*/
10233 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10234 ( NULL == pEventData->pCBfnc ))
10235 {
10236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 }
10241
10242 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10243 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10244 /*-------------------------------------------------------------------------
10245 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
10248 wpalMutexAcquire(&pWDICtx->wptMutex);
10249
10250 /*------------------------------------------------------------------------
10251 Find the BSS for which the request is made and identify WDI session
10252 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10254 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 &macBSSID))
10256 {
10257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010258 "This station does not exist in the WDI Station Table %d",
10259 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 }
10263
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10265 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10268 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10269 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010270
10271 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010274
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 /*------------------------------------------------------------------------
10276 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 ------------------------------------------------------------------------*/
10279 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10280 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10282 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10283 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010284
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 }
10289
10290 wpalMutexRelease(&pWDICtx->wptMutex);
10291 /*-----------------------------------------------------------------------
10292 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10296 sizeof(halAddTsParams),
10297 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 &usSendSize))||
10299 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10300 {
10301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010302 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 }
10307
10308 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10309 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10310
10311 //TSPEC IE
10312 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10313 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10344
10345 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10360
10361 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10366
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 wpalMemoryCopy( pSendBuffer+usDataOffset,
10368 &halAddTsParams,
10369 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010370
10371 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010372 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010373
10374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010380}/*WDI_ProcessAddTSpecReq*/
10381
10382
10383/**
10384 @brief Process Del TSpec Request function (called when Main FSM
10385 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010386
10387 @param pWDICtx: pointer to the WLAN DAL context
10388 pEventData: pointer to the event information structure
10389
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 @see
10391 @return Result of the function call
10392*/
10393WDI_Status
10394WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010395(
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 WDI_ControlBlockType* pWDICtx,
10397 WDI_EventInfoType* pEventData
10398)
10399{
10400 WDI_DelTSReqParamsType* pwdiDelTSParams;
10401 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 wpt_uint16 usDataOffset = 0;
10406 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10409
10410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 -------------------------------------------------------------------------*/
10413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10414 ( NULL == pEventData->pCBfnc ))
10415 {
10416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 }
10421
10422 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10423 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10424
10425 /*-------------------------------------------------------------------------
10426 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 -------------------------------------------------------------------------*/
10429 wpalMutexAcquire(&pWDICtx->wptMutex);
10430
10431 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10435 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10436 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10441 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10442 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10443
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 }
10447
10448 /*------------------------------------------------------------------------
10449 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 ------------------------------------------------------------------------*/
10452 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10455 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10456 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 }
10462
10463
10464 wpalMutexRelease(&pWDICtx->wptMutex);
10465 /*-----------------------------------------------------------------------
10466 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10471 &pSendBuffer, &usDataOffset, &usSendSize))||
10472 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10473 {
10474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010475 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 }
10480
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 wpalMemoryCopy( pSendBuffer+usDataOffset,
10482 &pwdiDelTSParams->wdiDelTSInfo,
10483 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010484
10485 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487
10488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10492 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010493}/*WDI_ProcessDelTSpecReq*/
10494
10495/**
10496 @brief Process Update EDCA Params Request function (called when
10497 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010498
10499 @param pWDICtx: pointer to the WLAN DAL context
10500 pEventData: pointer to the event information structure
10501
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 @see
10503 @return Result of the function call
10504*/
10505WDI_Status
10506WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010507(
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 WDI_ControlBlockType* pWDICtx,
10509 WDI_EventInfoType* pEventData
10510)
10511{
10512 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10513 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 wpt_uint16 usDataOffset = 0;
10518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10521
10522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 -------------------------------------------------------------------------*/
10525 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10526 ( NULL == pEventData->pCBfnc ))
10527 {
10528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010529 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 }
10533
10534 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10535 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10536 /*-------------------------------------------------------------------------
10537 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 -------------------------------------------------------------------------*/
10540 wpalMutexAcquire(&pWDICtx->wptMutex);
10541
10542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10546 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10547 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010548
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 {
10551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10553 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010554
10555 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 }
10558
10559 /*------------------------------------------------------------------------
10560 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 ------------------------------------------------------------------------*/
10563 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10564 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10566 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10567 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010568
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 }
10573
10574
10575 wpalMutexRelease(&pWDICtx->wptMutex);
10576 /*-----------------------------------------------------------------------
10577 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10582 &pSendBuffer, &usDataOffset, &usSendSize))||
10583 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010586 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 }
10591
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 wpalMemoryCopy( pSendBuffer+usDataOffset,
10593 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10594 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010595
10596 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010598
10599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10603 wdiUpdateEDCARspCb, pEventData->pUserData,
10604 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010605}/*WDI_ProcessUpdateEDCAParamsReq*/
10606
10607/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010610
10611 @param pWDICtx: pointer to the WLAN DAL context
10612 pEventData: pointer to the event information structure
10613
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 @see
10615 @return Result of the function call
10616*/
10617WDI_Status
10618WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010619(
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 WDI_ControlBlockType* pWDICtx,
10621 WDI_EventInfoType* pEventData
10622)
10623{
10624 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10625 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 wpt_uint16 usDataOffset = 0;
10630 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 wpt_macAddr macBSSID;
10633
10634 tAddBASessionReqMsg halAddBASessionReq;
10635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10636
10637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 -------------------------------------------------------------------------*/
10640 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10641 ( NULL == pEventData->pCBfnc ))
10642 {
10643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 }
10648
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10653 /*-------------------------------------------------------------------------
10654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 -------------------------------------------------------------------------*/
10657 wpalMutexAcquire(&pWDICtx->wptMutex);
10658
10659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10663 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 &macBSSID))
10665 {
10666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010667 "This station does not exist in the WDI Station Table %d",
10668 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 }
10672
10673
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010675
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10679 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10680 __func__, MAC_ADDR_ARRAY(macBSSID));
10681
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 }
10685
10686 /*------------------------------------------------------------------------
10687 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 ------------------------------------------------------------------------*/
10690 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10691 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10693 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10694 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010695
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 }
10700
10701
10702 wpalMutexRelease(&pWDICtx->wptMutex);
10703 /*-----------------------------------------------------------------------
10704 Get message buffer
10705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10707 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 sizeof(halAddBASessionReq.addBASessionParams),
10709 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10712 {
10713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010714 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 }
10719
10720 halAddBASessionReq.addBASessionParams.staIdx =
10721 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10722 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10723 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10724 WDI_MAC_ADDR_LEN);
10725 halAddBASessionReq.addBASessionParams.baTID =
10726 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10727 halAddBASessionReq.addBASessionParams.baPolicy =
10728 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10729 halAddBASessionReq.addBASessionParams.baBufferSize =
10730 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10731 halAddBASessionReq.addBASessionParams.baTimeout =
10732 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10733 halAddBASessionReq.addBASessionParams.baSSN =
10734 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10735 halAddBASessionReq.addBASessionParams.baDirection =
10736 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10737
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 wpalMemoryCopy( pSendBuffer+usDataOffset,
10739 &halAddBASessionReq.addBASessionParams,
10740 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010741
10742 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010744
10745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10749 wdiAddBASessionRspCb, pEventData->pUserData,
10750 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010751}/*WDI_ProcessAddBASessionReq*/
10752
10753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010756
10757 @param pWDICtx: pointer to the WLAN DAL context
10758 pEventData: pointer to the event information structure
10759
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 @see
10761 @return Result of the function call
10762*/
10763WDI_Status
10764WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010765(
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 WDI_ControlBlockType* pWDICtx,
10767 WDI_EventInfoType* pEventData
10768)
10769{
10770 WDI_DelBAReqParamsType* pwdiDelBAParams;
10771 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 wpt_uint16 usDataOffset = 0;
10776 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 wpt_macAddr macBSSID;
10779 tDelBAParams halDelBAparam;
10780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10781
10782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010784 -------------------------------------------------------------------------*/
10785 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10786 ( NULL == pEventData->pCBfnc ))
10787 {
10788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 }
10793
10794 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10795 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10796 /*-------------------------------------------------------------------------
10797 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 -------------------------------------------------------------------------*/
10800 wpalMutexAcquire(&pWDICtx->wptMutex);
10801
10802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10806 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 &macBSSID))
10808 {
10809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010810 "This station does not exist in the WDI Station Table %d",
10811 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 }
10815
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010817
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10821 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10822 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010823
10824 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 }
10827
10828 /*------------------------------------------------------------------------
10829 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 ------------------------------------------------------------------------*/
10832 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10835 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10836 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010837
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 }
10842
10843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 sizeof(halDelBAparam),
10846 &pSendBuffer, &usDataOffset, &usSendSize))||
10847 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10848 {
10849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010850 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 }
10855
10856 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10857 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10858 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10859
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 wpalMemoryCopy( pSendBuffer+usDataOffset,
10861 &halDelBAparam,
10862 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010863
10864 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010866
10867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10871 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872}/*WDI_ProcessDelBAReq*/
10873
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010874#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010875
10876WDI_Status
10877WDI_ProcessTSMStatsReq
10878(
10879 WDI_ControlBlockType* pWDICtx,
10880 WDI_EventInfoType* pEventData
10881)
10882{
10883 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10884 WDI_TsmRspCb wdiTSMRspCb;
10885 wpt_uint8 ucCurrentBSSSesIdx = 0;
10886 WDI_BSSSessionType* pBSSSes = NULL;
10887 wpt_uint8* pSendBuffer = NULL;
10888 wpt_uint16 usDataOffset = 0;
10889 wpt_uint16 usSendSize = 0;
10890 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10891 tTsmStatsParams halTsmStatsReqParams = {0};
10892
10893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10894
10895 /*-------------------------------------------------------------------------
10896 Sanity check
10897 -------------------------------------------------------------------------*/
10898 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10899 ( NULL == pEventData->pCBfnc ))
10900 {
10901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 WDI_ASSERT(0);
10904 return WDI_STATUS_E_FAILURE;
10905 }
10906
10907 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10908 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10909 /*-------------------------------------------------------------------------
10910 Check to see if we are in the middle of an association, if so queue, if
10911 not it means it is free to process request
10912 -------------------------------------------------------------------------*/
10913 wpalMutexAcquire(&pWDICtx->wptMutex);
10914
10915 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10916 if ( NULL == pBSSSes )
10917 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10919 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10920 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010921
10922 wpalMutexRelease(&pWDICtx->wptMutex);
10923 return WDI_STATUS_E_NOT_ALLOWED;
10924 }
10925
10926 /*------------------------------------------------------------------------
10927 Check if this BSS is being currently processed or queued,
10928 if queued - queue the new request as well
10929 ------------------------------------------------------------------------*/
10930 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10931 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010933 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010935
10936 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10937 wpalMutexRelease(&pWDICtx->wptMutex);
10938 return wdiStatus;
10939 }
10940
10941 wpalMutexRelease(&pWDICtx->wptMutex);
10942 /*-----------------------------------------------------------------------
10943 Get message buffer
10944 ! TO DO : proper conversion into the HAL Message Request Format
10945 -----------------------------------------------------------------------*/
10946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10947 sizeof(halTsmStatsReqParams),
10948 &pSendBuffer, &usDataOffset, &usSendSize))||
10949 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10950 {
10951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010952 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 pEventData, pwdiTSMParams, wdiTSMRspCb);
10954 WDI_ASSERT(0);
10955 return WDI_STATUS_E_FAILURE;
10956 }
10957
10958 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10959 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10960 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10961 WDI_MAC_ADDR_LEN);
10962 wpalMemoryCopy( pSendBuffer+usDataOffset,
10963 &halTsmStatsReqParams,
10964 sizeof(halTsmStatsReqParams));
10965
10966 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10967 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10968
10969 /*-------------------------------------------------------------------------
10970 Send TSM Stats Request to HAL
10971 -------------------------------------------------------------------------*/
10972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10973 wdiTSMRspCb, pEventData->pUserData,
10974 WDI_TSM_STATS_RESP);
10975}/*WDI_ProcessTSMStatsReq*/
10976
10977#endif
10978
10979
10980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010983
10984 @param pWDICtx: pointer to the WLAN DAL context
10985 pEventData: pointer to the event information structure
10986
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 @see
10988 @return Result of the function call
10989*/
10990WDI_Status
10991WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010992(
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 WDI_ControlBlockType* pWDICtx,
10994 WDI_EventInfoType* pEventData
10995)
10996{
10997 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10998 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 wpt_uint16 usDataOffset = 0;
11001 wpt_uint16 usSendSize = 0;
11002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11003
11004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 -------------------------------------------------------------------------*/
11007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11008 ( NULL == pEventData->pCBfnc ))
11009 {
11010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 }
11015
11016 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11017 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11018 /*-----------------------------------------------------------------------
11019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11024 &pSendBuffer, &usDataOffset, &usSendSize))||
11025 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11026 {
11027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011028 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011029 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 }
11033
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 wpalMemoryCopy( pSendBuffer+usDataOffset,
11035 &pwdiFlushAcParams->wdiFlushAcInfo,
11036 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011037
11038 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040
11041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11045 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011046}/*WDI_ProcessFlushAcReq*/
11047
11048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011051
11052 @param pWDICtx: pointer to the WLAN DAL context
11053 pEventData: pointer to the event information structure
11054
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 @see
11056 @return Result of the function call
11057*/
11058WDI_Status
11059WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011060(
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 WDI_ControlBlockType* pWDICtx,
11062 WDI_EventInfoType* pEventData
11063)
11064{
11065 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11066 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 wpt_uint16 usDataOffset = 0;
11069 wpt_uint16 usSendSize = 0;
11070
11071 tBtAmpEventMsg haltBtAmpEventMsg;
11072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11073
11074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 -------------------------------------------------------------------------*/
11077 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11078 ( NULL == pEventData->pCBfnc ))
11079 {
11080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 }
11085
11086 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11087 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11088 /*-----------------------------------------------------------------------
11089 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11094 &pSendBuffer, &usDataOffset, &usSendSize))||
11095 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11096 {
11097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011098 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 }
11103
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 wpalMemoryCopy( pSendBuffer+usDataOffset,
11107 &haltBtAmpEventMsg.btAmpEventParams,
11108 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011109
11110 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011112
11113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011114 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11117 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011118}/*WDI_ProcessBtAmpEventReq*/
11119
11120/**
11121 @brief Process Add STA self Request function (called when Main FSM
11122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011123
11124 @param pWDICtx: pointer to the WLAN DAL context
11125 pEventData: pointer to the event information structure
11126
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 @see
11128 @return Result of the function call
11129*/
11130WDI_Status
11131WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011132(
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 WDI_ControlBlockType* pWDICtx,
11134 WDI_EventInfoType* pEventData
11135)
11136{
11137 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11138 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 wpt_uint16 usDataOffset = 0;
11141 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011142 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11144
11145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 -------------------------------------------------------------------------*/
11148 if (( NULL == pEventData ) ||
11149 ( NULL == pEventData->pEventData) ||
11150 ( NULL == pEventData->pCBfnc))
11151 {
11152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 }
11157
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11162 /*-----------------------------------------------------------------------
11163 Get message buffer
11164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11166 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011167 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011168 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011169 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 {
11171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011172 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011173 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 }
11177
11178 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11181
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011183 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11184 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11185 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11186 {
11187 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11188 }
11189 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11190 VOS_P2P_CLIENT_MODE) ||
11191 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11192 VOS_P2P_DEVICE))
11193 {
11194 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11195 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011197 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011198
11199 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011201
11202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11206 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11207 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011208}/*WDI_ProcessAddSTASelfReq*/
11209
11210
11211
11212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011215
11216 @param pWDICtx: pointer to the WLAN DAL context
11217 pEventData: pointer to the event information structure
11218
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 @see
11220 @return Result of the function call
11221*/
11222WDI_Status
11223WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011224(
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 WDI_ControlBlockType* pWDICtx,
11226 WDI_EventInfoType* pEventData
11227)
11228{
11229 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11230 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 wpt_uint16 usDataOffset = 0;
11233 wpt_uint16 usSendSize = 0;
11234 tDelStaSelfParams halSetDelSelfSTAParams;
11235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11236
11237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 -------------------------------------------------------------------------*/
11240 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11241 ( NULL == pEventData->pCBfnc ))
11242 {
11243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 }
11248
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11251 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11252
11253 /*-----------------------------------------------------------------------
11254 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011255 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11259 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11262 {
11263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011264 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 }
11269
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11272
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11274 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011275
11276 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011278
11279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11283 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 WDI_DEL_STA_SELF_RESP);
11285
11286}
11287
Jeff Johnsone7245742012-09-05 17:12:55 -070011288#ifdef FEATURE_OEM_DATA_SUPPORT
11289/**
11290 @brief Process Start Oem Data Request function (called when Main
11291 FSM allows it)
11292
11293 @param pWDICtx: pointer to the WLAN DAL context
11294 pEventData: pointer to the event information structure
11295
11296 @see
11297 @return Result of the function call
11298*/
11299WDI_Status
11300WDI_ProcessStartOemDataReq
11301(
11302 WDI_ControlBlockType* pWDICtx,
11303 WDI_EventInfoType* pEventData
11304)
11305{
11306 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11307 WDI_oemDataRspCb wdiOemDataRspCb;
11308 wpt_uint8* pSendBuffer = NULL;
11309 wpt_uint16 usDataOffset = 0;
11310 wpt_uint16 usSendSize = 0;
11311 wpt_uint16 reqLen;
11312 tStartOemDataReqParams* halStartOemDataReqParams;
11313
11314 /*-------------------------------------------------------------------------
11315 Sanity check
11316 -------------------------------------------------------------------------*/
11317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11318 ( NULL == pEventData->pCBfnc ))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011321 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 WDI_ASSERT(0);
11323 return WDI_STATUS_E_FAILURE;
11324 }
11325
11326 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11327 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11328
11329 /*-----------------------------------------------------------------------
11330 Get message buffer
11331 -----------------------------------------------------------------------*/
11332
11333 reqLen = sizeof(tStartOemDataReqParams);
11334
11335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11336 WDI_START_OEM_DATA_REQ, reqLen,
11337 &pSendBuffer, &usDataOffset, &usSendSize))||
11338 (usSendSize < (usDataOffset + reqLen)))
11339 {
11340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011341 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11343 WDI_ASSERT(0);
11344 return WDI_STATUS_E_FAILURE;
11345 }
11346
11347 //copying WDI OEM DATA REQ PARAMS to shared memory
11348 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11349
11350 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11351 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11352
11353 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11354 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11355
11356 /*-------------------------------------------------------------------------
11357 Send Start Request to HAL
11358 -------------------------------------------------------------------------*/
11359 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11360 wdiOemDataRspCb, pEventData->pUserData,
11361 WDI_START_OEM_DATA_RESP);
11362}/*WDI_ProcessStartOemDataReq*/
11363#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011364
11365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011368
11369 @param pWDICtx: pointer to the WLAN DAL context
11370 pEventData: pointer to the event information structure
11371
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 @see
11373 @return Result of the function call
11374*/
11375WDI_Status
11376WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011377(
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 WDI_ControlBlockType* pWDICtx,
11379 WDI_EventInfoType* pEventData
11380)
11381{
11382 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11383 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 wpt_uint16 usDataOffset = 0;
11386 wpt_uint16 usSendSize = 0;
11387 tHalWlanHostResumeReqParam halResumeReqParams;
11388
11389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11390
11391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 -------------------------------------------------------------------------*/
11394 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11395 ( NULL == pEventData->pCBfnc ))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011398 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 }
11402
11403 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11404 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11405
11406 /*-----------------------------------------------------------------------
11407 Get message buffer
11408 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11411 &pSendBuffer, &usDataOffset, &usSendSize))||
11412 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11413 {
11414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011415 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 }
11420
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011423
11424 wpalMemoryCopy( pSendBuffer+usDataOffset,
11425 &halResumeReqParams,
11426 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011427
11428 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011430
11431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11435 wdiHostResumeRspCb, pEventData->pUserData,
11436 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011437}/*WDI_ProcessHostResumeReq*/
11438
11439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011442
11443 @param pWDICtx: pointer to the WLAN DAL context
11444 pEventData: pointer to the event information structure
11445
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 @see
11447 @return Result of the function call
11448*/
11449WDI_Status
11450WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011451(
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 WDI_ControlBlockType* pWDICtx,
11453 WDI_EventInfoType* pEventData
11454)
11455{
11456 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11457 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 wpt_uint16 usDataOffset = 0;
11460 wpt_uint16 usSendSize = 0;
11461 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11463
11464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 -------------------------------------------------------------------------*/
11467 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11468 ( NULL == pEventData->pCBfnc ))
11469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011471 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 }
11475
11476 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11477 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011478
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 /*-----------------------------------------------------------------------
11480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 sizeof(halTxPerTrackingReqParam),
11485 &pSendBuffer, &usDataOffset, &usSendSize))||
11486 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11487 {
11488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011489 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011494
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11496 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11497 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11498 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011499
11500 wpalMemoryCopy( pSendBuffer+usDataOffset,
11501 &halTxPerTrackingReqParam,
11502 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011503
11504 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506
11507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11511 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011512}/*WDI_ProcessSetTxPerTrackingReq*/
11513
11514/*=========================================================================
11515 Indications
11516=========================================================================*/
11517
11518/**
11519 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011520
11521 @param pWDICtx: pointer to the WLAN DAL context
11522 pEventData: pointer to the event information structure
11523
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 @see
11525 @return Result of the function call
11526*/
11527WDI_Status
11528WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011529(
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 WDI_ControlBlockType* pWDICtx,
11531 WDI_EventInfoType* pEventData
11532)
11533{
11534 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 wpt_uint16 usDataOffset = 0;
11537 wpt_uint16 usSendSize = 0;
11538 WDI_Status wdiStatus;
11539 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11541
11542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 -------------------------------------------------------------------------*/
11545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11546 {
11547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011548 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 }
11552
11553 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11554
11555 /*-----------------------------------------------------------------------
11556 Get message buffer
11557 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11559 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 sizeof(halWlanSuspendIndparams),
11561 &pSendBuffer, &usDataOffset, &usSendSize))||
11562 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11563 {
11564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11565 "Unable to get send buffer in Suspend Ind ");
11566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 }
11569
11570 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11571 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11572
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011574 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011575
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11577 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011578
11579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011580 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 -------------------------------------------------------------------------*/
11582 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011584
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11587}/*WDI_ProcessHostSuspendInd*/
11588
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011589
11590
11591/**
11592 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11593
11594 @param pWDICtx: pointer to the WLAN DAL context
11595 pEventData: pointer to the event information structure
11596
11597 @see
11598 @return Result of the function call
11599*/
11600WDI_Status
11601WDI_ProcessTrafficStatsInd
11602(
11603 WDI_ControlBlockType* pWDICtx,
11604 WDI_EventInfoType* pEventData
11605)
11606{
11607 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11608 wpt_uint8* pSendBuffer = NULL;
11609 wpt_uint16 usDataOffset = 0;
11610 wpt_uint16 usSendSize = 0;
11611 WDI_Status wdiStatus;
11612 tStatsClassBIndParams* pStatsClassBIndParams;
11613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11614
11615 /*-------------------------------------------------------------------------
11616 Sanity check
11617 -------------------------------------------------------------------------*/
11618 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11619 {
11620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11621 "%s: Invalid parameters in Traffic Stats ind",__func__);
11622 WDI_ASSERT(0);
11623 return WDI_STATUS_E_FAILURE;
11624 }
11625
11626 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11627
11628 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11629 {
11630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11631 "%s: Invalid parameters in Traffic Stats ind",__func__);
11632 WDI_ASSERT(0);
11633 return WDI_STATUS_E_FAILURE;
11634 }
11635
11636 /*-----------------------------------------------------------------------
11637 Get message buffer
11638 -----------------------------------------------------------------------*/
11639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11640 WDI_TRAFFIC_STATS_IND,
11641 sizeof(tStatsClassBIndParams),
11642 &pSendBuffer, &usDataOffset, &usSendSize))||
11643 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11644 {
11645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11646 "Unable to get send buffer in Traffic Stats Ind ");
11647 WDI_ASSERT(0);
11648 return WDI_STATUS_E_FAILURE;
11649 }
11650
11651 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11652
11653 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11654
11655 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11656 pTrafficStatsIndParams->pTrafficStats,
11657 pTrafficStatsIndParams->length);
11658
11659 /*-------------------------------------------------------------------------
11660 Send Suspend Request to HAL
11661 -------------------------------------------------------------------------*/
11662 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11663 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11664
11665 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11666 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11667}/*WDI_ProcessTrafficStatsInd*/
11668
Chet Lanctot186b5732013-03-18 10:26:30 -070011669#ifdef WLAN_FEATURE_11W
11670/**
11671 @brief Process Exclude Unencrypted Indications function (called
11672 when Main FSM allows it)
11673
11674 @param pWDICtx: pointer to the WLAN DAL context
11675 pEventData: pointer to the event information structure
11676
11677 @see
11678 @return Result of the function call
11679*/
11680WDI_Status
11681WDI_ProcessExcludeUnencryptInd
11682(
11683 WDI_ControlBlockType* pWDICtx,
11684 WDI_EventInfoType* pEventData
11685)
11686{
11687 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11688 wpt_uint8* pSendBuffer = NULL;
11689 wpt_uint16 usDataOffset = 0;
11690 wpt_uint16 usSendSize = 0;
11691 WDI_Status wdiStatus;
11692 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11694
11695 /*-------------------------------------------------------------------------
11696 Sanity check
11697 -------------------------------------------------------------------------*/
11698 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11699 {
11700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11701 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11702 WDI_ASSERT(0);
11703 return WDI_STATUS_E_FAILURE;
11704 }
11705
11706 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11707
11708 /*-----------------------------------------------------------------------
11709 Get message buffer
11710 -----------------------------------------------------------------------*/
11711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11712 WDI_EXCLUDE_UNENCRYPTED_IND,
11713 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11714 &pSendBuffer, &usDataOffset, &usSendSize))||
11715 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11716 {
11717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11718 "Unable to get send buffer in Exclude Unencrypted Ind ");
11719 WDI_ASSERT(0);
11720 return WDI_STATUS_E_FAILURE;
11721 }
11722
11723 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11724
11725 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11726
11727 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11728 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11729
11730 /*-------------------------------------------------------------------------
11731 Send Suspend Request to HAL
11732 -------------------------------------------------------------------------*/
11733 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11734 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11735
11736 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11737 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11738}/*WDI_ProcessExcludeUnencryptInd*/
11739#endif
11740
Yue Mab9c86f42013-08-14 15:59:08 -070011741/**
11742 @brief Process Add Periodic Tx Pattern Indication function (called when
11743 Main FSM allows it)
11744
11745 @param pWDICtx: pointer to the WLAN DAL context
11746 pEventData: pointer to the event information structure
11747
11748 @see
11749 @return Result of the function call
11750*/
11751WDI_Status
11752WDI_ProcessAddPeriodicTxPtrnInd
11753(
11754 WDI_ControlBlockType* pWDICtx,
11755 WDI_EventInfoType* pEventData
11756)
11757{
11758 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11759 wpt_uint8* pSendBuffer = NULL;
11760 wpt_uint16 usDataOffset = 0;
11761 wpt_uint16 usSendSize = 0;
11762 WDI_Status wdiStatus;
11763 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11764 wpt_uint8 selfStaIdx = 0;
11765
11766 /*-------------------------------------------------------------------------
11767 Sanity check
11768 -------------------------------------------------------------------------*/
11769 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11770 {
11771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11772 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11773 WDI_ASSERT(0);
11774 return WDI_STATUS_E_FAILURE;
11775 }
11776
11777 pAddPeriodicTxPtrnParams =
11778 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11779
11780 /*------------------------------------------------------------------------
11781 Get message buffer
11782 ------------------------------------------------------------------------*/
11783 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11784 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11785 &pSendBuffer, &usDataOffset, &usSendSize))||
11786 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11787 {
11788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11789 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11790 __func__);
11791 WDI_ASSERT(0);
11792 return WDI_STATUS_E_FAILURE;
11793 }
11794
11795 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11796
11797 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11798 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11799 &selfStaIdx))
11800 {
11801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11802 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011803 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011804
11805 return WDI_STATUS_E_FAILURE;
11806 }
11807
11808 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11809 halAddPeriodicTxPtrn->ucPtrnId =
11810 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11811 halAddPeriodicTxPtrn->usPtrnSize =
11812 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11813 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11814 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11815
11816 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11817 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11818 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11819
11820 /*-------------------------------------------------------------------------
11821 Send Indication to HAL
11822 -------------------------------------------------------------------------*/
11823 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11824 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11825
11826 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11827
11828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11829 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11830
11831 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11832} /* WDI_ProcessAddPeriodicTxPtrnInd */
11833
11834/**
11835 @brief Process Delete Periodic Tx Pattern Indication function (called when
11836 Main FSM allows it)
11837
11838 @param pWDICtx: pointer to the WLAN DAL context
11839 pEventData: pointer to the event information structure
11840
11841 @see
11842 @return Result of the function call
11843*/
11844WDI_Status
11845WDI_ProcessDelPeriodicTxPtrnInd
11846(
11847 WDI_ControlBlockType* pWDICtx,
11848 WDI_EventInfoType* pEventData
11849)
11850{
11851 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11852 wpt_uint8* pSendBuffer = NULL;
11853 wpt_uint16 usDataOffset = 0;
11854 wpt_uint16 usSendSize = 0;
11855 WDI_Status wdiStatus;
11856 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11857 wpt_uint8 selfStaIdx = 0;
11858
11859 /*-------------------------------------------------------------------------
11860 Sanity check
11861 -------------------------------------------------------------------------*/
11862 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11863 {
11864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11865 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11866 WDI_ASSERT(0);
11867 return WDI_STATUS_E_FAILURE;
11868 }
11869
11870 pDelPeriodicTxPtrnParams =
11871 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11872
11873 /*------------------------------------------------------------------------
11874 Get message buffer
11875 ------------------------------------------------------------------------*/
11876 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11877 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11878 &pSendBuffer, &usDataOffset, &usSendSize))||
11879 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11880 {
11881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11882 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11883 __func__);
11884 WDI_ASSERT(0);
11885 return WDI_STATUS_E_FAILURE;
11886 }
11887
11888 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11889
11890 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11891 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11892 &selfStaIdx))
11893 {
11894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11895 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011896 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011897
11898 return WDI_STATUS_E_FAILURE;
11899 }
11900
11901 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11902 halDelPeriodicTxPtrn->uPatternIdBitmap =
11903 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11904
11905 /*-------------------------------------------------------------------------
11906 Send Indication to HAL
11907 -------------------------------------------------------------------------*/
11908 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11909 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11910
11911 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11912
11913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11914 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11915
11916 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11917} /* WDI_ProcessDelPeriodicTxPtrnInd */
11918
Jeff Johnson295189b2012-06-20 16:38:30 -070011919/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011921==========================================================================*/
11922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011925
11926 @param pWDICtx: pointer to the WLAN DAL context
11927 pEventData: pointer to the event information structure
11928
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 @see
11930 @return Result of the function call
11931*/
11932WDI_Status
11933WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011934(
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 WDI_ControlBlockType* pWDICtx,
11936 WDI_EventInfoType* pEventData
11937)
11938{
11939 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11940 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 wpt_uint16 usDataOffset = 0;
11943 wpt_uint16 usSendSize = 0;
11944 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11946
11947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -------------------------------------------------------------------------*/
11950 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11951 ( NULL == pEventData->pCBfnc ))
11952 {
11953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 }
11958
11959 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11960 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11961 /*-----------------------------------------------------------------------
11962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 sizeof(halSwitchChannelReq.switchChannelParams),
11967 &pSendBuffer, &usDataOffset, &usSendSize))||
11968 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11969 {
11970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011971 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 }
11976
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011979#ifndef WLAN_FEATURE_VOWIFI
11980 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11982#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11985
11986#ifdef WLAN_FEATURE_VOWIFI
11987 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11990 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11991 WDI_MAC_ADDR_LEN);
11992 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11993 pwdiSwitchChParams->wdiChInfo.macBSSId,
11994 WDI_MAC_ADDR_LEN);
11995#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 wpalMemoryCopy( pSendBuffer+usDataOffset,
11997 &halSwitchChannelReq.switchChannelParams,
11998 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011999
12000 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002
12003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12007 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012008}/*WDI_ProcessChannelSwitchReq*/
12009
12010/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012011 @brief Process Channel Switch Request function (called when
12012 Main FSM allows it)
12013
12014 @param pWDICtx: pointer to the WLAN DAL context
12015 pEventData: pointer to the event information structure
12016
12017 @see
12018 @return Result of the function call
12019*/
12020WDI_Status WDI_ProcessChannelSwitchReq_V1
12021(
12022 WDI_ControlBlockType* pWDICtx,
12023 WDI_EventInfoType* pEventData
12024)
12025{
12026 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12027 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12028 wpt_uint8* pSendBuffer = NULL;
12029 wpt_uint16 usDataOffset = 0;
12030 wpt_uint16 usSendSize = 0;
12031 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12033
12034 /*-------------------------------------------------------------------------
12035 Sanity check
12036 -------------------------------------------------------------------------*/
12037 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12038 ( NULL == pEventData->pCBfnc ))
12039 {
12040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12041 "%s: Invalid parameters", __func__);
12042 WDI_ASSERT(0);
12043 return WDI_STATUS_E_FAILURE;
12044 }
12045
12046 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12047 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12048 /*-----------------------------------------------------------------------
12049 Get message buffer
12050 ! TO DO : proper conversion into the HAL Message Request Format
12051 -----------------------------------------------------------------------*/
12052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12053 WDI_CH_SWITCH_REQ_V1,
12054 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12055 &pSendBuffer, &usDataOffset, &usSendSize))||
12056 ( usSendSize < (usDataOffset +
12057 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12058 {
12059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12060 "Unable to get send buffer in channel switch req %p %p %p",
12061 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12062 WDI_ASSERT(0);
12063 return WDI_STATUS_E_FAILURE;
12064 }
12065
12066 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12067 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12068
12069 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12070 pwdiSwitchChParams->wdiChInfo.ucChannel;
12071#ifndef WLAN_FEATURE_VOWIFI
12072 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12073 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12074#endif
12075 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12076 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12077
12078#ifdef WLAN_FEATURE_VOWIFI
12079 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12080 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12081 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12082 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12083 WDI_MAC_ADDR_LEN);
12084 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12085 pwdiSwitchChParams->wdiChInfo.macBSSId,
12086 WDI_MAC_ADDR_LEN);
12087#endif
12088 wpalMemoryCopy( pSendBuffer+usDataOffset,
12089 &halSwitchChannelReq.switchChannelParams_V1,
12090 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12091
12092 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12093 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12094
12095 /*-------------------------------------------------------------------------
12096 Send Switch Channel Request to HAL
12097 -------------------------------------------------------------------------*/
12098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12099 wdiSwitchChRspCb, pEventData->pUserData,
12100 WDI_CH_SWITCH_RESP_V1);
12101}/*WDI_ProcessChannelSwitchReq_V1*/
12102
12103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012106
12107 @param pWDICtx: pointer to the WLAN DAL context
12108 pEventData: pointer to the event information structure
12109
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 @see
12111 @return Result of the function call
12112*/
12113WDI_Status
12114WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012115(
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 WDI_ControlBlockType* pWDICtx,
12117 WDI_EventInfoType* pEventData
12118)
12119{
12120 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12121 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 wpt_uint16 usDataOffset = 0;
12126 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012128
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 tConfigStaReqMsg halConfigStaReqMsg;
12130 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12132
12133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012135 -------------------------------------------------------------------------*/
12136 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12137 ( NULL == pEventData->pCBfnc ))
12138 {
12139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 }
12144
Abhishek Singh6927fa02014-06-27 17:19:55 +053012145 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12147 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12148 /*-------------------------------------------------------------------------
12149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 -------------------------------------------------------------------------*/
12152 wpalMutexAcquire(&pWDICtx->wptMutex);
12153
12154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12158 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12159 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012160
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12164 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12165 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012166
12167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012169 }
12170
12171 /*------------------------------------------------------------------------
12172 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 ------------------------------------------------------------------------*/
12175 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12176 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12178 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12179 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012180
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 }
12185
12186 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012187
12188 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12189#ifdef WLAN_FEATURE_11AC
12190 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012191 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 else
12193#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012194 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012195
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 /*-----------------------------------------------------------------------
12197 Get message buffer
12198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12200 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 ( usSendSize < (usDataOffset + uMsgSize )))
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 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 }
12210
12211 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 &pwdiConfigSTAParams->wdiReqInfo);
12214
12215 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12216 {
12217 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 WDI_STATableFindStaidByAddr(pWDICtx,
12220 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012222 {
12223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012224 MAC_ADDRESS_STR
12225 ": This station does not exist in the WDI Station Table",
12226 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012228 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 }
12231 }
12232 else
12233 {
12234 /* Need to fill in the STA Index to invalid, since at this point we have not
12235 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012236 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 }
12238
12239 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012241
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 wpalMemoryCopy( pSendBuffer+usDataOffset,
12243 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012244 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012245
12246 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012248
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12250 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 sizeof(pWDICtx->wdiCachedConfigStaReq));
12252
12253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12257 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012258}/*WDI_ProcessConfigStaReq*/
12259
12260
12261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012264
12265 @param pWDICtx: pointer to the WLAN DAL context
12266 pEventData: pointer to the event information structure
12267
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 @see
12269 @return Result of the function call
12270*/
12271WDI_Status
12272WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012273(
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 WDI_ControlBlockType* pWDICtx,
12275 WDI_EventInfoType* pEventData
12276)
12277{
12278 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12279 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 wpt_uint16 usDataOffset = 0;
12284 wpt_uint16 usSendSize = 0;
12285 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12288
12289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 -------------------------------------------------------------------------*/
12292 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12293 ( NULL == pEventData->pCBfnc ))
12294 {
12295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 }
12300
12301 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12302 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12303 /*-------------------------------------------------------------------------
12304 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 -------------------------------------------------------------------------*/
12307 wpalMutexAcquire(&pWDICtx->wptMutex);
12308
12309 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12313 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12314 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12320 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 }
12322 else
12323 {
12324 /*------------------------------------------------------------------------
12325 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 ------------------------------------------------------------------------*/
12328 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12329 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12331 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12332 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12333
12334 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 }
12338 }
12339 /* If the link is set to enter IDLE - the Session allocated for this BSS
12340 will be deleted on the Set Link State response coming from HAL
12341 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12344
12345 wpalMutexRelease(&pWDICtx->wptMutex);
12346 /*-----------------------------------------------------------------------
12347 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012350
12351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 sizeof(halLinkStateReqMsg),
12353 &pSendBuffer, &usDataOffset, &usSendSize))||
12354 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12355 {
12356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012357 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 }
12362
12363 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12364 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12365
12366 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12367 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12368
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012370 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12371
Jeff Johnsone7245742012-09-05 17:12:55 -070012372 wpalMemoryCopy( pSendBuffer+usDataOffset,
12373 &halLinkStateReqMsg,
12374 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012375
12376 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012378
12379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12383 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012384}/*WDI_ProcessSetLinkStateReq*/
12385
12386
12387/**
12388 @brief Process Get Stats Request function (called when Main FSM
12389 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012390
12391 @param pWDICtx: pointer to the WLAN DAL context
12392 pEventData: pointer to the event information structure
12393
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 @see
12395 @return Result of the function call
12396*/
12397WDI_Status
12398WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012399(
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 WDI_ControlBlockType* pWDICtx,
12401 WDI_EventInfoType* pEventData
12402)
12403{
12404 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12405 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 wpt_uint16 usDataOffset = 0;
12408 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 WDI_BSSSessionType* pBSSSes = NULL;
12411 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 tHalStatsReqMsg halStatsReqMsg;
12414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12415
12416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 -------------------------------------------------------------------------*/
12419 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12420 ( NULL == pEventData->pCBfnc ) )
12421 {
12422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
12428 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12429 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12430
12431 /*-------------------------------------------------------------------------
12432 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 -------------------------------------------------------------------------*/
12435 wpalMutexAcquire(&pWDICtx->wptMutex);
12436
12437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12441 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 &macBSSID))
12443 {
12444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012445 "This station does not exist in the WDI Station Table %d",
12446 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 }
12450
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12452 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12455 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12456 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012457
12458 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 }
12461
12462 /*------------------------------------------------------------------------
12463 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 ------------------------------------------------------------------------*/
12466 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12467 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12469 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12470 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012471
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 }
12476
12477
12478 wpalMutexRelease(&pWDICtx->wptMutex);
12479
12480 /*-----------------------------------------------------------------------
12481 Get message buffer
12482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 sizeof(halStatsReqMsg.statsReqParams),
12485 &pSendBuffer, &usDataOffset, &usSendSize))||
12486 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12487 {
12488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012489 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 }
12494
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 wpalMemoryCopy( pSendBuffer+usDataOffset,
12500 &halStatsReqMsg.statsReqParams,
12501 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012502
12503 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012505
12506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12510 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012511}/*WDI_ProcessGetStatsReq*/
12512
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012513#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012514/**
12515 @brief Process Get Roam Rssi Request function (called when Main FSM
12516 allows it)
12517
12518 @param pWDICtx: pointer to the WLAN DAL context
12519 pEventData: pointer to the event information structure
12520
12521 @see
12522 @return Result of the function call
12523*/
12524WDI_Status
12525WDI_ProcessGetRoamRssiReq
12526(
12527 WDI_ControlBlockType* pWDICtx,
12528 WDI_EventInfoType* pEventData
12529)
12530{
12531 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12532 WDI_GetStatsRspCb wdiGetStatsRspCb;
12533 wpt_uint8* pSendBuffer = NULL;
12534 wpt_uint16 usDataOffset = 0;
12535 wpt_uint16 usSendSize = 0;
12536 wpt_uint8 ucCurrentBSSSesIdx = 0;
12537 WDI_BSSSessionType* pBSSSes = NULL;
12538 wpt_macAddr macBSSID;
12539 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12540 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12542 /*-------------------------------------------------------------------------
12543 Sanity check
12544 -------------------------------------------------------------------------*/
12545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12546 ( NULL == pEventData->pCBfnc ) )
12547 {
12548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12549 "%s: Invalid parameters", __func__);
12550 WDI_ASSERT(0);
12551 return WDI_STATUS_E_FAILURE;
12552 }
12553
12554 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12555 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12556
12557 /*-------------------------------------------------------------------------
12558 Check to see if we are in the middle of an association, if so queue, if
12559 not it means it is free to process request
12560 -------------------------------------------------------------------------*/
12561 wpalMutexAcquire(&pWDICtx->wptMutex);
12562
12563 /*------------------------------------------------------------------------
12564 Find the BSS for which the request is made
12565 ------------------------------------------------------------------------*/
12566 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12567 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12568 &macBSSID))
12569 {
12570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012571 "This station does not exist in the WDI Station Table %d",
12572 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012573 wpalMutexRelease(&pWDICtx->wptMutex);
12574 return WDI_STATUS_E_FAILURE;
12575 }
12576
12577 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12578 if ( NULL == pBSSSes )
12579 {
12580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12581 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12582 __func__, MAC_ADDR_ARRAY(macBSSID));
12583
12584 wpalMutexRelease(&pWDICtx->wptMutex);
12585 return WDI_STATUS_E_NOT_ALLOWED;
12586 }
12587
12588 /*------------------------------------------------------------------------
12589 Check if this BSS is being currently processed or queued,
12590 if queued - queue the new request as well
12591 ------------------------------------------------------------------------*/
12592 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12593 {
12594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12595 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12596 __func__, MAC_ADDR_ARRAY(macBSSID));
12597
12598 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12599 wpalMutexRelease(&pWDICtx->wptMutex);
12600 return wdiStatus;
12601 }
12602
12603 wpalMutexRelease(&pWDICtx->wptMutex);
12604
12605 /*-----------------------------------------------------------------------
12606 Get message buffer
12607 -----------------------------------------------------------------------*/
12608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12609 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12610 &pSendBuffer, &usDataOffset, &usSendSize))||
12611 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12612 {
12613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012614 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012615 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12616 WDI_ASSERT(0);
12617 return WDI_STATUS_E_FAILURE;
12618 }
12619
12620 halRssiRoamReqMsg.roamRssiReqParams.staId =
12621 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12622 wpalMemoryCopy( pSendBuffer+usDataOffset,
12623 &halRssiRoamReqMsg.roamRssiReqParams,
12624 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12625
12626 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12627 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12628
12629 /*-------------------------------------------------------------------------
12630 Send Get STA Request to HAL
12631 -------------------------------------------------------------------------*/
12632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12633 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12634}/*WDI_ProcessGetRoamRssiReq*/
12635#endif
12636
Jeff Johnson295189b2012-06-20 16:38:30 -070012637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012640
12641 @param pWDICtx: pointer to the WLAN DAL context
12642 pEventData: pointer to the event information structure
12643
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 @see
12645 @return Result of the function call
12646*/
12647WDI_Status
12648WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012649(
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 WDI_ControlBlockType* pWDICtx,
12651 WDI_EventInfoType* pEventData
12652)
12653{
12654 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12655 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12656
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 wpt_uint16 usDataOffset = 0;
12659 wpt_uint16 usSendSize = 0;
12660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12661
12662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 -------------------------------------------------------------------------*/
12665 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12666 ( NULL == pEventData->pCBfnc))
12667 {
12668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 }
12673
12674 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12675 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12676
12677 /*-----------------------------------------------------------------------
12678 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 -----------------------------------------------------------------------*/
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12684 &pSendBuffer, &usDataOffset, &usSendSize))||
12685 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12686 {
12687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012688 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012689 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 }
12693
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 wpalMemoryCopy( pSendBuffer+usDataOffset,
12695 &pwdiUpdateCfgParams->uConfigBufferLen,
12696 sizeof(wpt_uint32));
12697 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12698 pwdiUpdateCfgParams->pConfigBuffer,
12699 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012700
12701 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012703
12704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 -------------------------------------------------------------------------*/
12707
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12709 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012710
12711}/*WDI_ProcessUpdateCfgReq*/
12712
12713
12714/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012717
12718 @param pWDICtx: pointer to the WLAN DAL context
12719 pEventData: pointer to the event information structure
12720
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 @see
12722 @return Result of the function call
12723*/
12724WDI_Status
12725WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012726(
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ControlBlockType* pWDICtx,
12728 WDI_EventInfoType* pEventData
12729)
12730{
12731 WDI_AddBAReqParamsType* pwdiAddBAParams;
12732 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 wpt_uint16 usDataOffset = 0;
12737 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 wpt_macAddr macBSSID;
12740
12741 tAddBAReqMsg halAddBAReq;
12742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12743
12744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 -------------------------------------------------------------------------*/
12747 if (( NULL == pEventData ) ||
12748 ( NULL == pEventData->pEventData) ||
12749 ( NULL == pEventData->pCBfnc ))
12750 {
12751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 }
12756
12757 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12758 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12759
12760 /*-------------------------------------------------------------------------
12761 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 -------------------------------------------------------------------------*/
12764 wpalMutexAcquire(&pWDICtx->wptMutex);
12765
12766 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12770 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 &macBSSID))
12772 {
12773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012774 "This station does not exist in the WDI Station Table %d",
12775 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 }
12779
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12781 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12784 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12785 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012786
12787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 }
12790
12791 /*------------------------------------------------------------------------
12792 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 ------------------------------------------------------------------------*/
12795 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12796 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12798 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12799 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012800
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 }
12805
12806
12807 wpalMutexRelease(&pWDICtx->wptMutex);
12808 /*-----------------------------------------------------------------------
12809 Get message buffer
12810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 sizeof(halAddBAReq.addBAParams),
12813 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12816 {
12817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012818 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 }
12823
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12826 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12827#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012828 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012829 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12830#endif
12831
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 wpalMemoryCopy( pSendBuffer+usDataOffset,
12833 &halAddBAReq.addBAParams,
12834 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012835
12836 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012838
12839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12843 wdiAddBARspCb, pEventData->pUserData,
12844 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012845}/*WDI_ProcessAddBAReq*/
12846
12847
12848
12849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012852
12853 @param pWDICtx: pointer to the WLAN DAL context
12854 pEventData: pointer to the event information structure
12855
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 @see
12857 @return Result of the function call
12858*/
12859WDI_Status
12860WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012861(
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 WDI_ControlBlockType* pWDICtx,
12863 WDI_EventInfoType* pEventData
12864)
12865{
12866 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12867 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 wpt_uint16 usDataOffset = 0;
12872 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 wpt_uint16 index;
12875 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012876
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 tTriggerBAReqMsg halTriggerBAReq;
12878 tTriggerBaReqCandidate* halTriggerBACandidate;
12879 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12881
12882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 -------------------------------------------------------------------------*/
12885 if (( NULL == pEventData ) ||
12886 ( NULL == pEventData->pEventData ) ||
12887 ( NULL == pEventData->pCBfnc ))
12888 {
12889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 }
12894
12895 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12896 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12897 /*-------------------------------------------------------------------------
12898 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 -------------------------------------------------------------------------*/
12901 wpalMutexAcquire(&pWDICtx->wptMutex);
12902
12903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12907 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 &macBSSID))
12909 {
12910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012911 "This station does not exist in the WDI Station Table %d",
12912 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 }
12916
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12918 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12921 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12922 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012923
12924 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 }
12927
12928 /*------------------------------------------------------------------------
12929 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 ------------------------------------------------------------------------*/
12932 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12933 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12935 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12936 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012937
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 }
12942
12943
12944 wpalMutexRelease(&pWDICtx->wptMutex);
12945 /*-----------------------------------------------------------------------
12946 Get message buffer
12947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12949 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012951 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12953 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12958 {
12959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012960 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 }
12965
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12970
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 wpalMemoryCopy( pSendBuffer+usDataOffset,
12972 &halTriggerBAReq.triggerBAParams,
12973 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012974
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12977 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12978 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012979
12980 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 index++)
12982 {
12983 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12984 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12985 halTriggerBACandidate++;
12986 wdiTriggerBACandidate++;
12987 }
12988
12989 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012991
12992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12996 wdiTriggerBARspCb, pEventData->pUserData,
12997 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012998}/*WDI_ProcessTriggerBAReq*/
12999
13000
13001
13002/**
13003 @brief Process Update Beacon Params Request function (called when Main FSM
13004 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013005
13006 @param pWDICtx: pointer to the WLAN DAL context
13007 pEventData: pointer to the event information structure
13008
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 @see
13010 @return Result of the function call
13011*/
13012WDI_Status
13013WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013014(
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 WDI_ControlBlockType* pWDICtx,
13016 WDI_EventInfoType* pEventData
13017)
13018{
13019 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13020 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 wpt_uint16 usDataOffset = 0;
13023 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13026
13027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 -------------------------------------------------------------------------*/
13030 if (( NULL == pEventData ) ||
13031 ( NULL == pEventData->pEventData) ||
13032 ( NULL == pEventData->pCBfnc))
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 }
13039
13040 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13041 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13042 /*-----------------------------------------------------------------------
13043 Get message buffer
13044 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 sizeof(halUpdateBeaconParams),
13047 &pSendBuffer, &usDataOffset, &usSendSize))||
13048 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13049 {
13050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013051 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 }
13056
13057 /*BSS Index of the BSS*/
13058 halUpdateBeaconParams.bssIdx =
13059 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13060 /*shortPreamble mode. HAL should update all the STA rates when it
13061 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13064 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13067 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13070
13071 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013080 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13084 halUpdateBeaconParams.fRIFSMode =
13085 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13088
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13090 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013091
13092 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013094
13095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13099 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013100}/*WDI_ProcessUpdateBeaconParamsReq*/
13101
13102
13103
13104/**
13105 @brief Process Send Beacon template Request function (called when Main FSM
13106 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013107
13108 @param pWDICtx: pointer to the WLAN DAL context
13109 pEventData: pointer to the event information structure
13110
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 @see
13112 @return Result of the function call
13113*/
13114WDI_Status
13115WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013116(
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 WDI_ControlBlockType* pWDICtx,
13118 WDI_EventInfoType* pEventData
13119)
13120{
13121 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13122 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 wpt_uint16 usDataOffset = 0;
13125 wpt_uint16 usSendSize = 0;
13126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13127
13128 tSendBeaconReqMsg halSendBeaconReq;
13129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 -------------------------------------------------------------------------*/
13132 if (( NULL == pEventData ) ||
13133 ( NULL == pEventData->pEventData ) ||
13134 ( NULL == pEventData->pCBfnc ))
13135 {
13136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 }
13141
13142 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13143 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13144 /*-----------------------------------------------------------------------
13145 Get message buffer
13146 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 sizeof(halSendBeaconReq.sendBeaconParam),
13149 &pSendBuffer, &usDataOffset, &usSendSize))||
13150 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13151 {
13152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013153 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 }
13158
13159 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13160 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13161 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13164 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13165 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13166 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013169 /* usP2PIeOffset should be atleast greater than timIeOffset */
13170 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13171 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13172 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13173 {
13174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13175 "Invalid usP2PIeOffset %hu",
13176 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13177 WDI_ASSERT(0);
13178 return WDI_STATUS_E_FAILURE;
13179 }
13180
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013183
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 wpalMemoryCopy( pSendBuffer+usDataOffset,
13185 &halSendBeaconReq.sendBeaconParam,
13186 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013187
13188 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013190
13191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13195 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013196}/*WDI_ProcessSendBeaconParamsReq*/
13197
13198/**
13199 @brief Process Update Beacon Params Request function (called when Main FSM
13200 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013201
13202 @param pWDICtx: pointer to the WLAN DAL context
13203 pEventData: pointer to the event information structure
13204
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 @see
13206 @return Result of the function call
13207*/
13208WDI_Status
13209WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013210(
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 WDI_ControlBlockType* pWDICtx,
13212 WDI_EventInfoType* pEventData
13213)
13214{
13215 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13216 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 wpt_uint16 usDataOffset = 0;
13219 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13222
13223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 -------------------------------------------------------------------------*/
13226 if (( NULL == pEventData ) ||
13227 ( NULL == pEventData->pEventData) ||
13228 ( NULL == pEventData->pCBfnc))
13229 {
13230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13240 /*-----------------------------------------------------------------------
13241 Get message buffer
13242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 sizeof(halUpdateProbeRspTmplParams),
13245 &pSendBuffer, &usDataOffset, &usSendSize))||
13246 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13247 {
13248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013249 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 }
13254
13255 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 WDI_MAC_ADDR_LEN);
13258
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13261
13262 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13263 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013265
13266
13267 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13268 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13269 WDI_PROBE_REQ_BITMAP_IE_LEN);
13270
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 wpalMemoryCopy( pSendBuffer+usDataOffset,
13272 &halUpdateProbeRspTmplParams,
13273 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013274
13275 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277
13278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13282 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13283 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013284}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13285
13286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013289
13290 @param pWDICtx: pointer to the WLAN DAL context
13291 pEventData: pointer to the event information structure
13292
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 @see
13294 @return Result of the function call
13295*/
13296WDI_Status
13297WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013298(
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 WDI_ControlBlockType* pWDICtx,
13300 WDI_EventInfoType* pEventData
13301)
13302{
13303
13304 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13305 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13306
13307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 -------------------------------------------------------------------------*/
13310 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13315 {
13316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 }
13321
13322 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13325
13326 /*cache the wdi nv request message here if the the first fragment
13327 * To issue the request to HAL for the next fragment */
13328 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13329 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013330 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13331 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13333
13334 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13335 pWDICtx->pRspCBUserData = pEventData->pUserData;
13336 }
13337
13338 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13339}
13340
13341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013344
13345 @param pWDICtx: pointer to the WLAN DAL context
13346 pEventData: pointer to the event information structure
13347
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 @see
13349 @return Result of the function call
13350*/
13351WDI_Status WDI_ProcessSetMaxTxPowerReq
13352(
13353 WDI_ControlBlockType* pWDICtx,
13354 WDI_EventInfoType* pEventData
13355)
13356{
13357 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13358 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 wpt_uint16 usDataOffset = 0;
13361 wpt_uint16 usSendSize = 0;
13362 tSetMaxTxPwrReq halSetMaxTxPower;
13363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13364
13365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 -------------------------------------------------------------------------*/
13368 if (( NULL == pEventData ) ||
13369 ( NULL == pEventData->pEventData ) ||
13370 ( NULL == pEventData->pCBfnc ))
13371 {
13372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13381
13382 /*-----------------------------------------------------------------------
13383 Get message buffer
13384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013385if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13387 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013389)))
13390 {
13391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013392 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 }
13397
13398 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13399 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13400 WDI_MAC_ADDR_LEN);
13401
13402 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13403 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13404 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013407
13408 wpalMemoryCopy( pSendBuffer+usDataOffset,
13409 &halSetMaxTxPower.setMaxTxPwrParams,
13410 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013411
13412 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013414
13415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13419 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13420 WDI_SET_MAX_TX_POWER_RESP);
13421
Jeff Johnson295189b2012-06-20 16:38:30 -070013422}
13423
Arif Hussaina5ebce02013-08-09 15:09:58 -070013424/*
13425 @brief Process Set Max Tx Power Per Band Request function (called when Main
13426 FSM allows it)
13427
13428 @param pWDICtx: pointer to the WLAN DAL context
13429 pEventData: pointer to the event information structure
13430
13431 @see
13432 @return Result of the function call
13433*/
13434WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13435(
13436 WDI_ControlBlockType* pWDICtx,
13437 WDI_EventInfoType* pEventData
13438)
13439{
13440 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13441 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13442 wpt_uint8* pSendBuffer = NULL;
13443 wpt_uint16 usDataOffset = 0;
13444 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013445 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013446 WDI_Status rValue = WDI_STATUS_SUCCESS;
13447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13448
13449 /*-------------------------------------------------------------------------
13450 Sanity check
13451 -------------------------------------------------------------------------*/
13452 if (( NULL == pEventData ) ||
13453 ( NULL == pEventData->pEventData ) ||
13454 ( NULL == pEventData->pCBfnc ))
13455 {
13456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13457 "%s: Invalid parameters", __func__);
13458 WDI_ASSERT(0);
13459 return WDI_STATUS_E_FAILURE;
13460 }
13461 pwdiSetMaxTxPowerPerBandParams = \
13462 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13463
13464 wdiSetMaxTxPowerPerBandRspCb = \
13465 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13466
13467 /*-----------------------------------------------------------------------
13468 Get message buffer
13469 -----------------------------------------------------------------------*/
13470
13471 rValue = WDI_GetMessageBuffer(pWDICtx,
13472 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13473 sizeof(tSetMaxTxPwrPerBandParams),
13474 &pSendBuffer, &usDataOffset, &usSendSize);
13475
13476 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13477 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13478 {
13479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13480 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13481 pEventData, pwdiSetMaxTxPowerPerBandParams,
13482 wdiSetMaxTxPowerPerBandRspCb);
13483 WDI_ASSERT(0);
13484 return WDI_STATUS_E_FAILURE;
13485 }
13486
13487
Arif Hussainf8f080c2014-04-03 09:48:36 -070013488 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13489 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013490 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13491
Arif Hussainf8f080c2014-04-03 09:48:36 -070013492 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013493 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13494
13495 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13496 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13497
13498 /*-------------------------------------------------------------------------
13499 Send Set Max Tx Power Per Band Request to HAL
13500 -------------------------------------------------------------------------*/
13501 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13502 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13503 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13504}
13505
schang86c22c42013-03-13 18:41:24 -070013506/**
13507 @brief Process Set Tx Power Request function (called when Main
13508 FSM allows it)
13509
13510 @param pWDICtx: pointer to the WLAN DAL context
13511 pEventData: pointer to the event information structure
13512
13513 @see
13514 @return Result of the function call
13515*/
13516WDI_Status WDI_ProcessSetTxPowerReq
13517(
13518 WDI_ControlBlockType* pWDICtx,
13519 WDI_EventInfoType* pEventData
13520)
13521{
13522 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13523 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13524 wpt_uint8* pSendBuffer = NULL;
13525 wpt_uint16 usDataOffset = 0;
13526 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013527 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13529
13530 /*-------------------------------------------------------------------------
13531 Sanity check
13532 -------------------------------------------------------------------------*/
13533 if (( NULL == pEventData ) ||
13534 ( NULL == pEventData->pEventData ) ||
13535 ( NULL == pEventData->pCBfnc ))
13536 {
13537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13538 "%s: Invalid parameters", __func__);
13539 WDI_ASSERT(0);
13540 return WDI_STATUS_E_FAILURE;
13541 }
13542
13543 pwdiSetTxPowerParams =
13544 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13545 wdiSetTxPowerRspCb =
13546 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13547
13548 /*-----------------------------------------------------------------------
13549 Get message buffer
13550 -----------------------------------------------------------------------*/
13551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13552 sizeof(tSetTxPwrReqParams),
13553 &pSendBuffer, &usDataOffset, &usSendSize))||
13554 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13555 )))
13556 {
13557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013558 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013559 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13560 WDI_ASSERT(0);
13561 return WDI_STATUS_E_FAILURE;
13562 }
13563
Leo Chang9a43db92013-03-25 17:39:58 -070013564 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13565 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13566 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013567
13568 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13569 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13570
13571 /*-------------------------------------------------------------------------
13572 Send Set Tx Power Request to HAL
13573 -------------------------------------------------------------------------*/
13574 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13575 wdiSetTxPowerRspCb, pEventData->pUserData,
13576 WDI_SET_TX_POWER_RESP);
13577}
Jeff Johnson295189b2012-06-20 16:38:30 -070013578
13579/**
13580 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13581 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013582
13583 @param pWDICtx: pointer to the WLAN DAL context
13584 pEventData: pointer to the event information structure
13585
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 @see
13587 @return Result of the function call
13588*/
13589WDI_Status
13590WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013591(
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 WDI_ControlBlockType* pWDICtx,
13593 WDI_EventInfoType* pEventData
13594)
13595{
13596 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13597 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 wpt_uint16 usDataOffset = 0;
13600 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13603
13604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 -------------------------------------------------------------------------*/
13607 if (( NULL == pEventData ) ||
13608 ( NULL == pEventData->pEventData) ||
13609 ( NULL == pEventData->pCBfnc))
13610 {
13611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 }
13616
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13621 /*-----------------------------------------------------------------------
13622 Get message buffer
13623 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13625 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 sizeof(halSetP2PGONOAParams),
13627 &pSendBuffer, &usDataOffset, &usSendSize))||
13628 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13629 {
13630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013631 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 }
13636
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13641 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13650
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 wpalMemoryCopy( pSendBuffer+usDataOffset,
13652 &halSetP2PGONOAParams,
13653 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013654
13655 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013657
13658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013661 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13662 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13663 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013664}/*WDI_ProcessP2PGONOAReq*/
13665
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013666#ifdef FEATURE_WLAN_TDLS
13667
13668/**
13669 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13670 allows it)
13671
13672 @param pWDICtx: pointer to the WLAN DAL context
13673 pEventData: pointer to the event information structure
13674
13675 @see
13676 @return Result of the function call
13677*/
13678WDI_Status
13679WDI_ProcessTdlsLinkEstablishReq
13680(
13681 WDI_ControlBlockType* pWDICtx,
13682 WDI_EventInfoType* pEventData
13683)
13684{
13685 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13686 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13687 wpt_uint8* pSendBuffer = NULL;
13688 wpt_uint16 usDataOffset = 0;
13689 wpt_uint16 usSendSize = 0;
13690
13691 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13693
13694 /*-------------------------------------------------------------------------
13695 Sanity check
13696 -------------------------------------------------------------------------*/
13697 if (( NULL == pEventData ) ||
13698 ( NULL == pEventData->pEventData) ||
13699 ( NULL == pEventData->pCBfnc))
13700 {
13701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13702 "%s: Invalid parameters", __func__);
13703 WDI_ASSERT(0);
13704 return WDI_STATUS_E_FAILURE;
13705 }
13706 pwdiTDLSLinkEstablishReqParams =
13707 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13708 wdiTDLSLinkEstablishReqRspCb =
13709 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13710
13711
13712 /*-----------------------------------------------------------------------
13713 Get message buffer
13714 -----------------------------------------------------------------------*/
13715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13716 WDI_TDLS_LINK_ESTABLISH_REQ,
13717 sizeof(halSetTDLSLinkEstablishParams),
13718 &pSendBuffer, &usDataOffset, &usSendSize))||
13719 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013722 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013723 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13724 WDI_ASSERT(0);
13725 return WDI_STATUS_E_FAILURE;
13726 }
13727
13728 halSetTDLSLinkEstablishParams.staIdx =
13729 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13730 halSetTDLSLinkEstablishParams.bIsResponder =
13731 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13732 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13733 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13734 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13735 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13736 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13737 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13738 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13739 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13740 halSetTDLSLinkEstablishParams.aAck = 0;
13741 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13742 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13743 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013744 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13745 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13746
13747 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13748 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13749 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13750 halSetTDLSLinkEstablishParams.validChannelsLen =
13751 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13752
13753 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13754 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13755 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13756 halSetTDLSLinkEstablishParams.validOperClassesLen =
13757 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013758
13759 wpalMemoryCopy( pSendBuffer+usDataOffset,
13760 &halSetTDLSLinkEstablishParams,
13761 sizeof(halSetTDLSLinkEstablishParams));
13762
13763 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13764 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13765
13766 /*-------------------------------------------------------------------------
13767 Send Update Probe Resp Template Request to HAL
13768 -------------------------------------------------------------------------*/
13769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13770 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13771 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13772 return 0;
13773}/*WDI_ProcessTdlsLinkEstablishReq*/
13774
13775
Atul Mittalc0f739f2014-07-31 13:47:47 +053013776/**
13777 @brief sends the channel switch command to f/w (called when Main FSM
13778 allows it)
13779
13780 @param pWDICtx: pointer to the WLAN DAL context
13781 pEventData: pointer to the event information structure
13782
13783 @see
13784 @return Result of the function call
13785*/
13786WDI_Status
13787WDI_ProcessTdlsChanSwitchReq
13788(
13789 WDI_ControlBlockType* pWDICtx,
13790 WDI_EventInfoType* pEventData
13791)
13792{
13793 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13794 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13795 wpt_uint8* pSendBuffer = NULL;
13796 wpt_uint16 usDataOffset = 0;
13797 wpt_uint16 usSendSize = 0;
13798 //WDI_Status wdiStatus;
13799 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13801
13802 /*-------------------------------------------------------------------------
13803 Sanity check
13804 -------------------------------------------------------------------------*/
13805 if (( NULL == pEventData ) ||
13806 ( NULL == pEventData->pEventData))
13807 {
13808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13809 "%s: Invalid parameters", __func__);
13810 WDI_ASSERT(0);
13811 return WDI_STATUS_E_FAILURE;
13812 }
13813 pwdiTDLSChanSwitchReqParams =
13814 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13815 wdiTDLSChanSwitchReqRspCb =
13816 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13817
13818 /*-----------------------------------------------------------------------
13819 Get message buffer
13820 -----------------------------------------------------------------------*/
13821 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13822 WDI_TDLS_CHAN_SWITCH_REQ,
13823 sizeof(halSetTDLSChanSwitchParams),
13824 &pSendBuffer, &usDataOffset, &usSendSize))||
13825 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13826 {
13827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13828 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13829 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13830 WDI_ASSERT(0);
13831 return WDI_STATUS_E_FAILURE;
13832 }
13833
13834 halSetTDLSChanSwitchParams.staIdx =
13835 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13836 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13837 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13838 halSetTDLSChanSwitchParams.targetOperClass =
13839 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13840 halSetTDLSChanSwitchParams.targetChannel =
13841 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13842 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13843 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13844 wpalMemoryCopy( pSendBuffer+usDataOffset,
13845 &halSetTDLSChanSwitchParams,
13846 sizeof(halSetTDLSChanSwitchParams));
13847
13848 pWDICtx->wdiReqStatusCB = NULL;
13849 pWDICtx->pReqStatusUserData = NULL;
13850
13851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13852 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13853 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13854}/*WDI_ProcessTdlsChanSwitchReq*/
13855
13856#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013857
Jeff Johnson295189b2012-06-20 16:38:30 -070013858
13859
13860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 @param None
13864
13865 @see
13866 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013867*/
13868void
13869WDI_SetPowerStateCb
13870(
13871 wpt_status status,
13872 unsigned int dxePhyAddr,
13873 void *pContext
13874)
13875{
13876 wpt_status wptStatus;
13877 WDI_ControlBlockType *pCB = NULL;
13878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013879 /*
13880 * Trigger the event to bring the Enter BMPS req function to come
13881 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013882*/
13883 if( NULL != pContext )
13884 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 }
13887 else
13888 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 pCB = &gWDICb;
13891 }
Mihir Shetea4306052014-03-25 00:02:54 +053013892
13893 if(eWLAN_PAL_STATUS_SUCCESS == status )
13894 {
13895 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13896 }
13897 else
13898 {
13899 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13900 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 pCB->dxePhyAddr = dxePhyAddr;
13902 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13903 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13904 {
13905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13906 "Failed to set an event");
13907
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 }
13910 return;
13911}
13912
13913
13914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013917
13918 @param pWDICtx: pointer to the WLAN DAL context
13919 pEventData: pointer to the event information structure
13920
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 @see
13922 @return Result of the function call
13923*/
13924WDI_Status
13925WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013926(
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 WDI_ControlBlockType* pWDICtx,
13928 WDI_EventInfoType* pEventData
13929)
13930{
Jeff Johnson43971f52012-07-17 12:26:56 -070013931 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013933 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 wpt_uint16 usDataOffset = 0;
13935 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013936 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13938
13939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013942 if ((NULL == pEventData ) ||
13943 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13944 (NULL == (pwdiEnterImpsReqParams =
13945 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 {
13947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013949 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013950 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 }
13952
13953 /*-----------------------------------------------------------------------
13954 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 0,
13959 &pSendBuffer, &usDataOffset, &usSendSize))||
13960 ( usSendSize < (usDataOffset )))
13961 {
13962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013963 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 pEventData, wdiEnterImpsRspCb);
13965 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013966 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 }
13968
13969 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013970 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13971 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 {
13973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13974 "WDI Init failed to reset an event");
13975
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013977 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 }
13979
13980 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013981 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13982 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013984 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013985 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013986 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013988
13989 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013992 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13993 WDI_SET_POWER_STATE_TIMEOUT);
13994 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 {
13996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13997 "WDI Init failed to wait on an event");
13998
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014000 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 }
14002
Mihir Shetea4306052014-03-25 00:02:54 +053014003 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14004 {
14005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14006 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14007
14008 goto fail;
14009 }
14010
14011 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14012 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14017 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014018
14019fail:
14020 // Release the message buffer so we don't leak
14021 wpalMemoryFree(pSendBuffer);
14022
14023failRequest:
14024 //WDA should have failure check to avoid the memory leak
14025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014026}/*WDI_ProcessEnterImpsReq*/
14027
14028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014031
14032 @param pWDICtx: pointer to the WLAN DAL context
14033 pEventData: pointer to the event information structure
14034
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 @see
14036 @return Result of the function call
14037*/
14038WDI_Status
14039WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014040(
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 WDI_ControlBlockType* pWDICtx,
14042 WDI_EventInfoType* pEventData
14043)
14044{
14045 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 wpt_uint16 usDataOffset = 0;
14048 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014049 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014056 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14057 (NULL == (pwdiExitImpsReqParams =
14058 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 {
14060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 }
14065
14066 /*-----------------------------------------------------------------------
14067 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 0,
14072 &pSendBuffer, &usDataOffset, &usSendSize))||
14073 ( usSendSize < (usDataOffset )))
14074 {
14075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014076 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 pEventData, wdiExitImpsRspCb);
14078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014081 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14082 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14087 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014088}/*WDI_ProcessExitImpsReq*/
14089
14090/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014093
14094 @param pWDICtx: pointer to the WLAN DAL context
14095 pEventData: pointer to the event information structure
14096
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 @see
14098 @return Result of the function call
14099*/
14100WDI_Status
14101WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014102(
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 WDI_ControlBlockType* pWDICtx,
14104 WDI_EventInfoType* pEventData
14105)
14106{
14107 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14108 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 wpt_uint16 usDataOffset = 0;
14111 wpt_uint16 usSendSize = 0;
14112 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014113 wpt_status wptStatus;
14114
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14116
14117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 -------------------------------------------------------------------------*/
14120 if (( NULL == pEventData ) ||
14121 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14122 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14123 {
14124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014127 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 }
14129
14130 /*-----------------------------------------------------------------------
14131 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 sizeof(enterBmpsReq),
14136 &pSendBuffer, &usDataOffset, &usSendSize))||
14137 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14138 {
14139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014140 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14142 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014143 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 }
14145
14146 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014147 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14148 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 {
14150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14151 "WDI Init failed to reset an event");
14152
Jeff Johnsone7245742012-09-05 17:12:55 -070014153 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014154 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 }
14156
14157 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014158 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14159 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14160 {
14161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014162 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014163 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014164 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014165 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014166
14167/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014170 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14171 WDI_SET_POWER_STATE_TIMEOUT);
14172 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 {
14174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14175 "WDI Init failed to wait on an event");
14176
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014178 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 }
14180
14181 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14182
14183 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14184 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14185 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14186 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14187
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014188 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14190 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14191 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14192
14193 wpalMemoryCopy( pSendBuffer+usDataOffset,
14194 &enterBmpsReq,
14195 sizeof(enterBmpsReq));
14196
14197 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199
14200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14204 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014205
14206fail:
14207 // Release the message buffer so we don't leak
14208 wpalMemoryFree(pSendBuffer);
14209
14210failRequest:
14211 //WDA should have failure check to avoid the memory leak
14212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014213}/*WDI_ProcessEnterBmpsReq*/
14214
14215/**
14216 @brief Process Exit BMPS Request function (called when Main FSM
14217 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014218
14219 @param pWDICtx: pointer to the WLAN DAL context
14220 pEventData: pointer to the event information structure
14221
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 @see
14223 @return Result of the function call
14224*/
14225WDI_Status
14226WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014227(
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 WDI_ControlBlockType* pWDICtx,
14229 WDI_EventInfoType* pEventData
14230)
14231{
14232 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14233 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 wpt_uint16 usDataOffset = 0;
14236 wpt_uint16 usSendSize = 0;
14237 tHalExitBmpsReqParams exitBmpsReq;
14238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14239
14240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 -------------------------------------------------------------------------*/
14243 if (( NULL == pEventData ) ||
14244 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14245 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14246 {
14247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 }
14252
14253 /*-----------------------------------------------------------------------
14254 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 sizeof(exitBmpsReq),
14259 &pSendBuffer, &usDataOffset, &usSendSize))||
14260 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14261 {
14262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014263 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 }
14268 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14269
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14271
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 wpalMemoryCopy( pSendBuffer+usDataOffset,
14273 &exitBmpsReq,
14274 sizeof(exitBmpsReq));
14275
14276 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014278
14279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014280 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14283 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014284}/*WDI_ProcessExitBmpsReq*/
14285
14286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014289
14290 @param pWDICtx: pointer to the WLAN DAL context
14291 pEventData: pointer to the event information structure
14292
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 @see
14294 @return Result of the function call
14295*/
14296WDI_Status
14297WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014298(
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 WDI_ControlBlockType* pWDICtx,
14300 WDI_EventInfoType* pEventData
14301)
14302{
14303 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14304 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 wpt_uint16 usDataOffset = 0;
14307 wpt_uint16 usSendSize = 0;
14308 tUapsdReqParams enterUapsdReq;
14309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14310
14311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 -------------------------------------------------------------------------*/
14314 if (( NULL == pEventData ) ||
14315 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14316 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14317 {
14318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323
14324 /*-----------------------------------------------------------------------
14325 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 sizeof(enterUapsdReq),
14330 &pSendBuffer, &usDataOffset, &usSendSize))||
14331 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14332 {
14333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014334 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 }
14339
14340 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14341 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14342 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14343 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14344 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14345 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14346 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14347 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014349
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 wpalMemoryCopy( pSendBuffer+usDataOffset,
14351 &enterUapsdReq,
14352 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014353
14354 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356
14357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14361 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014362}/*WDI_ProcessEnterUapsdReq*/
14363
14364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014367
14368 @param pWDICtx: pointer to the WLAN DAL context
14369 pEventData: pointer to the event information structure
14370
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 @see
14372 @return Result of the function call
14373*/
14374WDI_Status
14375WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014376(
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 WDI_ControlBlockType* pWDICtx,
14378 WDI_EventInfoType* pEventData
14379)
14380{
14381 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 wpt_uint16 usDataOffset = 0;
14384 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014385 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14386 wpt_uint8 bssIdx = 0;
14387
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14389
14390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 -------------------------------------------------------------------------*/
14393 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014394 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14396 {
14397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 }
14402
14403 /*-----------------------------------------------------------------------
14404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014408 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014410 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 {
14412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014413 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 pEventData, wdiExitUapsdRspCb);
14415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 }
14418
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014419 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14420
14421 wpalMemoryCopy( pSendBuffer+usDataOffset,
14422 &bssIdx,
14423 sizeof(wpt_uint8));
14424
14425 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14426 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14427
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14432 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014433}/*WDI_ProcessExitUapsdReq*/
14434
14435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014438
14439 @param pWDICtx: pointer to the WLAN DAL context
14440 pEventData: pointer to the event information structure
14441
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 @see
14443 @return Result of the function call
14444*/
14445WDI_Status
14446WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014447(
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 WDI_ControlBlockType* pWDICtx,
14449 WDI_EventInfoType* pEventData
14450)
14451{
14452 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14453 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 wpt_uint16 usDataOffset = 0;
14456 wpt_uint16 usSendSize = 0;
14457 tUapsdInfo uapsdAcParamsReq;
14458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14459
14460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 -------------------------------------------------------------------------*/
14463 if (( NULL == pEventData ) ||
14464 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14465 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14466 {
14467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 }
14472
14473 /*-----------------------------------------------------------------------
14474 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 sizeof(uapsdAcParamsReq),
14479 &pSendBuffer, &usDataOffset, &usSendSize))||
14480 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14481 {
14482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014483 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 }
14488
14489 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14490 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14491 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14492 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14493 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14494 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14495
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 wpalMemoryCopy( pSendBuffer+usDataOffset,
14497 &uapsdAcParamsReq,
14498 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014499
14500 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014502
14503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14507 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014508}/*WDI_ProcessSetUapsdAcParamsReq*/
14509
14510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014513
14514 @param pWDICtx: pointer to the WLAN DAL context
14515 pEventData: pointer to the event information structure
14516
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 @see
14518 @return Result of the function call
14519*/
14520WDI_Status
14521WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014522(
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 WDI_ControlBlockType* pWDICtx,
14524 WDI_EventInfoType* pEventData
14525)
14526{
14527 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14528 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 wpt_uint16 usDataOffset = 0;
14531 wpt_uint16 usSendSize = 0;
14532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14533
14534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 -------------------------------------------------------------------------*/
14537 if (( NULL == pEventData ) ||
14538 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14539 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14540 {
14541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 }
14546
14547 /*-----------------------------------------------------------------------
14548 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14553 &pSendBuffer, &usDataOffset, &usSendSize))||
14554 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14555 {
14556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014557 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 }
14562
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 wpalMemoryCopy( pSendBuffer+usDataOffset,
14564 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14565 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014566
14567 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014569
14570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14574 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014575}/*WDI_ProcessUpdateUapsdParamsReq*/
14576
14577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014580
14581 @param pWDICtx: pointer to the WLAN DAL context
14582 pEventData: pointer to the event information structure
14583
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 @see
14585 @return Result of the function call
14586*/
14587WDI_Status
14588WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014589(
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 WDI_ControlBlockType* pWDICtx,
14591 WDI_EventInfoType* pEventData
14592)
14593{
14594 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14595 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 wpt_uint16 usDataOffset = 0;
14598 wpt_uint16 usSendSize = 0;
14599 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14600
14601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14602
14603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 -------------------------------------------------------------------------*/
14606 if (( NULL == pEventData ) ||
14607 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14608 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14609 {
14610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 }
14615
14616 /*-----------------------------------------------------------------------
14617 Get message buffer
14618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 sizeof(halRxpFilterParams),
14621 &pSendBuffer, &usDataOffset, &usSendSize))||
14622 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14623 {
14624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014625 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 }
14630
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14635
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 wpalMemoryCopy( pSendBuffer+usDataOffset,
14637 &halRxpFilterParams,
14638 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014639
14640 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014642
14643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14647 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014648}/*WDI_ProcessConfigureRxpFilterReq*/
14649
14650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014653
14654 @param pWDICtx: pointer to the WLAN DAL context
14655 pEventData: pointer to the event information structure
14656
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 @see
14658 @return Result of the function call
14659*/
14660WDI_Status
14661WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014662(
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 WDI_ControlBlockType* pWDICtx,
14664 WDI_EventInfoType* pEventData
14665)
14666{
14667 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14668 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 wpt_uint16 usDataOffset = 0;
14671 wpt_uint16 usSendSize = 0;
14672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14673
14674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 -------------------------------------------------------------------------*/
14677 if (( NULL == pEventData ) ||
14678 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14679 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14680 {
14681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 }
14686
14687 /*-----------------------------------------------------------------------
14688 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14693 &pSendBuffer, &usDataOffset, &usSendSize))||
14694 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14695 {
14696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014697 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 }
14702
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 wpalMemoryCopy( pSendBuffer+usDataOffset,
14704 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14705 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14706 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14707 &pwdiBeaconFilterParams->aFilters[0],
14708 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014709
14710 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014712
14713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14717 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718}/*WDI_ProcessSetBeaconFilterReq*/
14719
14720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014723
14724 @param pWDICtx: pointer to the WLAN DAL context
14725 pEventData: pointer to the event information structure
14726
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 @see
14728 @return Result of the function call
14729*/
14730WDI_Status
14731WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014732(
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 WDI_ControlBlockType* pWDICtx,
14734 WDI_EventInfoType* pEventData
14735)
14736{
14737 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14738 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 wpt_uint16 usDataOffset = 0;
14741 wpt_uint16 usSendSize = 0;
14742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14743
14744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 -------------------------------------------------------------------------*/
14747 if (( NULL == pEventData ) ||
14748 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14749 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14750 {
14751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 }
14756
14757 /*-----------------------------------------------------------------------
14758 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14763 &pSendBuffer, &usDataOffset, &usSendSize))||
14764 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14765 {
14766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014767 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 }
14772
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 wpalMemoryCopy( pSendBuffer+usDataOffset,
14774 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14775 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014776
14777 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014779
14780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14784 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014785}
14786
14787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014790
14791 @param pWDICtx: pointer to the WLAN DAL context
14792 pEventData: pointer to the event information structure
14793
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 @see
14795 @return Result of the function call
14796*/
14797WDI_Status
14798WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014799(
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 WDI_ControlBlockType* pWDICtx,
14801 WDI_EventInfoType* pEventData
14802)
14803{
14804 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14805 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014806 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 wpt_uint16 usDataOffset = 0;
14808 wpt_uint16 usSendSize = 0;
14809 tHalRSSIThresholds rssiThresholdsReq;
14810 WDI_Status ret_status = 0;
14811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14812
14813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014815 -------------------------------------------------------------------------*/
14816 if (( NULL == pEventData ) ||
14817 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14818 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14819 {
14820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 }
14825
14826 /*-----------------------------------------------------------------------
14827 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 sizeof(rssiThresholdsReq),
14832 &pSendBuffer, &usDataOffset, &usSendSize))||
14833 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14834 {
14835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014836 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 }
14841
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14862
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 wpalMemoryCopy( pSendBuffer+usDataOffset,
14864 &rssiThresholdsReq,
14865 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014866
14867 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014869
14870 /*-------------------------------------------------------------------------
14871 Send Set threshold req to HAL
14872 -------------------------------------------------------------------------*/
14873 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14874 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14875 {
14876 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14877 // req. Then as a result of processing the threshold cross ind, we trigger
14878 // a Set threshold req, then we need to indicate to WDI that it needs to
14879 // go to busy state as a result of the indication as we sent a req in the
14880 // same WDI context.
14881 // Hence expected state transition is to busy.
14882 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14883 }
14884
14885 return ret_status;
14886}
14887
14888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014891
14892 @param pWDICtx: pointer to the WLAN DAL context
14893 pEventData: pointer to the event information structure
14894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 @see
14896 @return Result of the function call
14897*/
14898WDI_Status
14899WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014900(
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 WDI_ControlBlockType* pWDICtx,
14902 WDI_EventInfoType* pEventData
14903)
14904{
14905 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14906 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 wpt_uint16 usDataOffset = 0;
14909 wpt_uint16 usSendSize = 0;
14910 tHalHostOffloadReq hostOffloadParams;
14911 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014912 wpt_uint8 ucCurrentBSSSesIdx = 0;
14913 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914
14915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14916
14917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 -------------------------------------------------------------------------*/
14920 if (( NULL == pEventData ) ||
14921 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14922 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14923 {
14924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014927 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 }
14929
14930 /*-----------------------------------------------------------------------
14931 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14936 &pSendBuffer, &usDataOffset, &usSendSize))||
14937 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14938 {
14939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014940 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14942 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014943 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 }
14945
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014946 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14947 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14948 &pBSSSes);
14949 if ( NULL == pBSSSes )
14950 {
c_hpothu86feba52014-10-28 15:51:18 +053014951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014952 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14953 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014954 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014955 }
14956
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14958 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014959
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14961 {
14962 // ARP Offload
14963 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14964 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14965 4);
14966 }
14967 else
14968 {
14969 // NS Offload
14970 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14971 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14972 16);
14973
14974#ifdef WLAN_NS_OFFLOAD
14975 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14976 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14977 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14978 16);
14979 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14980 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14981 16);
14982 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14983 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14984 16);
14985 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14986 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14987 16);
14988 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14989 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14990 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014991 nsOffloadParams.srcIPv6AddrValid =
14992 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14993
14994 nsOffloadParams.targetIPv6Addr1Valid =
14995 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14996
14997 nsOffloadParams.targetIPv6Addr2Valid =
14998 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14999
15000 nsOffloadParams.slotIndex =
15001 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015002
Jeff Johnson295189b2012-06-20 16:38:30 -070015003#endif // WLAN_NS_OFFLOAD
15004 }
15005
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015006 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15007
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 // copy hostOffloadParams into pSendBuffer
15009 wpalMemoryCopy( pSendBuffer+usDataOffset,
15010 &hostOffloadParams,
15011 sizeof(hostOffloadParams));
15012
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015013 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015015 // copy nsOffloadParams into pSendBuffer
15016 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 &nsOffloadParams,
15018 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015019 }
15020 else
15021 {
15022#ifdef WLAN_NS_OFFLOAD
15023 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15024 {
15025 // copy nsOffloadParams into pSendBuffer
15026 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15027 &nsOffloadParams,
15028 sizeof(nsOffloadParams));
15029 }
15030#endif
15031 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015032
15033 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035
15036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15040 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015041
15042fail:
15043 // Release the message buffer so we don't leak
15044 wpalMemoryFree(pSendBuffer);
15045
15046failRequest:
15047 //WDA should have failure check to avoid the memory leak
15048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015049}/*WDI_ProcessHostOffloadReq*/
15050
15051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015054
15055 @param pWDICtx: pointer to the WLAN DAL context
15056 pEventData: pointer to the event information structure
15057
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 @see
15059 @return Result of the function call
15060*/
15061WDI_Status
15062WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015063(
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 WDI_ControlBlockType* pWDICtx,
15065 WDI_EventInfoType* pEventData
15066)
15067{
15068 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15069 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 wpt_uint16 usDataOffset = 0;
15072 wpt_uint16 usSendSize = 0;
15073 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015074 wpt_uint8 ucCurrentBSSSesIdx = 0;
15075 WDI_BSSSessionType* pBSSSes = NULL;
15076
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15078
15079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -------------------------------------------------------------------------*/
15082 if (( NULL == pEventData ) ||
15083 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15084 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15085 {
15086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15087 "Invalid parameters in Keep Alive req");
15088 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015089 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 }
15091
15092 /*-----------------------------------------------------------------------
15093 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 sizeof(keepAliveReq),
15098 &pSendBuffer, &usDataOffset, &usSendSize))||
15099 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15100 {
15101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015102 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15104 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015105 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 }
15107
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015108 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15109 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15110 &pBSSSes);
15111 if ( NULL == pBSSSes )
15112 {
15113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015114 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015115 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015116 }
15117
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15119 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15120
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015121 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015122
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15124 {
15125 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15126 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15127 HAL_IPV4_ADDR_LEN);
15128 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15129 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 wpalMemoryCopy(keepAliveReq.destMacAddr,
15132 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15133 HAL_MAC_ADDR_LEN);
15134 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015135
15136 wpalMemoryCopy( pSendBuffer+usDataOffset,
15137 &keepAliveReq,
15138 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015139
15140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015141 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015142
15143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015144 "Process keep alive req time period %d",
15145 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015146
15147 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015149
15150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15151 "Sending keep alive req to HAL");
15152
15153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15157 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015158
15159fail:
15160 // Release the message buffer so we don't leak
15161 wpalMemoryFree(pSendBuffer);
15162
15163failRequest:
15164 //WDA should have failure check to avoid the memory leak
15165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015166}/*WDI_ProcessKeepAliveReq*/
15167
15168
15169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015172
15173 @param pWDICtx: pointer to the WLAN DAL context
15174 pEventData: pointer to the event information structure
15175
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 @see
15177 @return Result of the function call
15178*/
15179WDI_Status
15180WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015181(
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 WDI_ControlBlockType* pWDICtx,
15183 WDI_EventInfoType* pEventData
15184)
15185{
15186 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15187 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 wpt_uint16 usDataOffset = 0;
15190 wpt_uint16 usSendSize = 0;
15191 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015192 wpt_uint8 ucCurrentBSSSesIdx = 0;
15193 WDI_BSSSessionType* pBSSSes = NULL;
15194
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15196
15197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 -------------------------------------------------------------------------*/
15200 if (( NULL == pEventData ) ||
15201 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15202 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15203 {
15204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015207 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 }
15209
15210 /*-----------------------------------------------------------------------
15211 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 sizeof(wowlAddBcPtrnReq),
15216 &pSendBuffer, &usDataOffset, &usSendSize))||
15217 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15218 {
15219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015220 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15222 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015223 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 }
15225
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015226 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15227 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15228 &pBSSSes);
15229 if ( NULL == pBSSSes )
15230 {
15231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015232 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015233 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015234 }
15235
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15244
15245 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15246 {
15247 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15248 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15249 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15250 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15251 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15252 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15253 }
15254 else
15255 {
15256 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15257 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15258 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15259 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15260 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15261 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15262
15263 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15264 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15265 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15266 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15267 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15268 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15269 }
15270
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015271 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15272
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 wpalMemoryCopy( pSendBuffer+usDataOffset,
15274 &wowlAddBcPtrnReq,
15275 sizeof(wowlAddBcPtrnReq));
15276
15277 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279
15280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15284 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015285fail:
15286 // Release the message buffer so we don't leak
15287 wpalMemoryFree(pSendBuffer);
15288
15289failRequest:
15290 //WDA should have failure check to avoid the memory leak
15291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015292}/*WDI_ProcessWowlAddBcPtrnReq*/
15293
15294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015297
15298 @param pWDICtx: pointer to the WLAN DAL context
15299 pEventData: pointer to the event information structure
15300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 @see
15302 @return Result of the function call
15303*/
15304WDI_Status
15305WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015306(
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 WDI_ControlBlockType* pWDICtx,
15308 WDI_EventInfoType* pEventData
15309)
15310{
15311 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15312 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 wpt_uint16 usDataOffset = 0;
15315 wpt_uint16 usSendSize = 0;
15316 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015317 wpt_uint8 ucCurrentBSSSesIdx = 0;
15318 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15320
15321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 -------------------------------------------------------------------------*/
15324 if (( NULL == pEventData ) ||
15325 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15326 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15327 {
15328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015331 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 }
15333
15334 /*-----------------------------------------------------------------------
15335 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 sizeof(wowlDelBcPtrnReq),
15340 &pSendBuffer, &usDataOffset, &usSendSize))||
15341 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15342 {
15343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015344 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15346 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015347 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 }
15349
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015350 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15351 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15352 &pBSSSes);
15353 if ( NULL == pBSSSes )
15354 {
15355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015356 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015357 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015358 }
15359
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015362
15363 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15364
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 wpalMemoryCopy( pSendBuffer+usDataOffset,
15366 &wowlDelBcPtrnReq,
15367 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015368
15369 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371
15372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15376 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015377
15378fail:
15379 // Release the message buffer so we don't leak
15380 wpalMemoryFree(pSendBuffer);
15381
15382failRequest:
15383 //WDA should have failure check to avoid the memory leak
15384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385}/*WDI_ProcessWowlDelBcPtrnReq*/
15386
15387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015390
15391 @param pWDICtx: pointer to the WLAN DAL context
15392 pEventData: pointer to the event information structure
15393
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 @see
15395 @return Result of the function call
15396*/
15397WDI_Status
15398WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015399(
Jeff Johnson295189b2012-06-20 16:38:30 -070015400 WDI_ControlBlockType* pWDICtx,
15401 WDI_EventInfoType* pEventData
15402)
15403{
15404 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15405 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 wpt_uint16 usDataOffset = 0;
15408 wpt_uint16 usSendSize = 0;
15409 tHalWowlEnterParams wowlEnterReq;
15410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15411
15412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 -------------------------------------------------------------------------*/
15415 if (( NULL == pEventData ) ||
15416 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15417 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15418 {
15419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 }
15424
15425 /*-----------------------------------------------------------------------
15426 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 sizeof(wowlEnterReq),
15431 &pSendBuffer, &usDataOffset, &usSendSize))||
15432 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15433 {
15434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015435 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 }
15440
Kumar Anandaca924e2013-07-22 14:35:34 -070015441 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15442
Jeff Johnsone7245742012-09-05 17:12:55 -070015443 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15459
15460#ifdef WLAN_WAKEUP_EVENTS
15461 wowlEnterReq.ucWoWEAPIDRequestEnable =
15462 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15463
15464 wowlEnterReq.ucWoWEAPOL4WayEnable =
15465 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15466
15467 wowlEnterReq.ucWowNetScanOffloadMatch =
15468 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15469
15470 wowlEnterReq.ucWowGTKRekeyError =
15471 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15472
15473 wowlEnterReq.ucWoWBSSConnLoss =
15474 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15475#endif // WLAN_WAKEUP_EVENTS
15476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015477 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15478
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15480 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15481 sizeof(tSirMacAddr));
15482
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 wpalMemoryCopy( pSendBuffer+usDataOffset,
15484 &wowlEnterReq,
15485 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015486
15487 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015489
15490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15494 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015495}/*WDI_ProcessWowlEnterReq*/
15496
15497/**
15498 @brief Process Wowl exit Request function (called when Main FSM
15499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015500
15501 @param pWDICtx: pointer to the WLAN DAL context
15502 pEventData: pointer to the event information structure
15503
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 @see
15505 @return Result of the function call
15506*/
15507WDI_Status
15508WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015509(
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 WDI_ControlBlockType* pWDICtx,
15511 WDI_EventInfoType* pEventData
15512)
15513{
15514 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015515 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 wpt_uint16 usDataOffset = 0;
15518 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015519 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15521
15522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 -------------------------------------------------------------------------*/
15525 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015526 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15528 {
15529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 }
15534
15535 /*-----------------------------------------------------------------------
15536 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015540 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015542 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 {
15544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015545 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 pEventData, wdiWowlExitCb);
15547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 }
15550
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015551 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15552
15553 wpalMemoryCopy( pSendBuffer+usDataOffset,
15554 &wowlExitparams,
15555 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15560 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015561}/*WDI_ProcessWowlExitReq*/
15562
15563/**
15564 @brief Process Configure Apps Cpu Wakeup State Request function
15565 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015566
15567 @param pWDICtx: pointer to the WLAN DAL context
15568 pEventData: pointer to the event information structure
15569
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 @see
15571 @return Result of the function call
15572*/
15573WDI_Status
15574WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015575(
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 WDI_ControlBlockType* pWDICtx,
15577 WDI_EventInfoType* pEventData
15578)
15579{
15580 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15581 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 wpt_uint16 usDataOffset = 0;
15584 wpt_uint16 usSendSize = 0;
15585 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15587
15588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 -------------------------------------------------------------------------*/
15591 if (( NULL == pEventData ) ||
15592 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15593 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15594 {
15595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 }
15600
15601 /*-----------------------------------------------------------------------
15602 Get message buffer
15603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 sizeof(halCfgAppsCpuWakeupStateReqParams),
15606 &pSendBuffer, &usDataOffset, &usSendSize))||
15607 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015610 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 }
15615
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15618
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 wpalMemoryCopy( pSendBuffer+usDataOffset,
15620 &halCfgAppsCpuWakeupStateReqParams,
15621 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015622
15623 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015625
15626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15630 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15631 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015632}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15633
15634#ifdef WLAN_FEATURE_VOWIFI_11R
15635/**
15636 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15637 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015638
15639 @param pWDICtx: pointer to the WLAN DAL context
15640 pEventData: pointer to the event information structure
15641
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 @see
15643 @return Result of the function call
15644*/
15645WDI_Status
15646WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015647(
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 WDI_ControlBlockType* pWDICtx,
15649 WDI_EventInfoType* pEventData
15650)
15651{
15652 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15653 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 wpt_uint16 usDataOffset = 0;
15658 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 wpt_macAddr macBSSID;
15661 tAggrAddTsReq halAggrAddTsReq;
15662 int i;
15663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15664
15665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 -------------------------------------------------------------------------*/
15668 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15669 ( NULL == pEventData->pCBfnc ))
15670 {
15671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 }
15676 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15677 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15678 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15679 /*-------------------------------------------------------------------------
15680 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 -------------------------------------------------------------------------*/
15683 wpalMutexAcquire(&pWDICtx->wptMutex);
15684
15685 /*------------------------------------------------------------------------
15686 Find the BSS for which the request is made and identify WDI session
15687 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15689 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 &macBSSID))
15691 {
15692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015693 "This station does not exist in the WDI Station Table %d",
15694 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 }
15698
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15700 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15703 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15704 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015705
15706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015709
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 /*------------------------------------------------------------------------
15711 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015712 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015713 ------------------------------------------------------------------------*/
15714 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15715 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15717 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15718 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015719
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 }
15724
15725 wpalMutexRelease(&pWDICtx->wptMutex);
15726 /*-----------------------------------------------------------------------
15727 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 sizeof(tAggrAddTsParams),
15732 &pSendBuffer, &usDataOffset, &usSendSize))||
15733 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15734 {
15735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015736 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 }
15741
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15746
15747 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15755 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15758 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15761 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015762 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15764 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15767 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15770 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15773 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015774 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15776 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015781
15782
15783 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015789 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015809 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15813 }
15814
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 wpalMemoryCopy( pSendBuffer+usDataOffset,
15816 &halAggrAddTsReq,
15817 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015818
15819 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821
15822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015828}/*WDI_ProcessAggrAddTSpecReq*/
15829#endif /* WLAN_FEATURE_VOWIFI_11R */
15830
15831/**
15832 @brief Process Shutdown Request function (called when Main FSM
15833 allows it)
15834
15835 @param pWDICtx: pointer to the WLAN DAL context
15836 pEventData: pointer to the event information structure
15837
15838 @see
15839 @return Result of the function call
15840*/
15841WDI_Status
15842WDI_ProcessShutdownReq
15843(
15844 WDI_ControlBlockType* pWDICtx,
15845 WDI_EventInfoType* pEventData
15846 )
15847{
15848 wpt_status wptStatus;
15849
15850
15851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15852
15853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 -------------------------------------------------------------------------*/
15856 if ( NULL == pEventData )
15857 {
15858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_ASSERT(0);
15861 return WDI_STATUS_E_FAILURE;
15862 }
15863
15864 wpalMutexAcquire(&pWDICtx->wptMutex);
15865
15866
15867 gWDIInitialized = eWLAN_PAL_FALSE;
15868 /*! TO DO: stop the data services */
15869 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15870 {
15871 /*Stop the STA Table !UT- check this logic again
15872 It is safer to do it here than on the response - because a stop is imminent*/
15873 WDI_STATableStop(pWDICtx);
15874
15875 /* Stop Transport Driver, DXE */
15876 WDTS_Stop(pWDICtx);
15877 }
15878
15879 /*Clear all pending request*/
15880 WDI_ClearPendingRequests(pWDICtx);
15881 /* Close Data transport*/
15882 /* FTM mode does not open Data Path */
15883 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15884 {
15885 WDTS_Close(pWDICtx);
15886 }
15887 /*Close the STA Table !UT- check this logic again*/
15888 WDI_STATableClose(pWDICtx);
15889 /*close the PAL */
15890 wptStatus = wpalClose(pWDICtx->pPALContext);
15891 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15892 {
15893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15894 "Failed to wpal Close %d", wptStatus);
15895 WDI_ASSERT(0);
15896 }
15897
15898 /*Transition back to init state*/
15899 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15900
15901 wpalMutexRelease(&pWDICtx->wptMutex);
15902
15903 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015905
15906
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015908}/*WDI_ProcessShutdownReq*/
15909
15910/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015912========================================================================*/
15913
15914/**
15915 @brief Process Start Response function (called when a response
15916 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015917
15918 @param pWDICtx: pointer to the WLAN DAL context
15919 pEventData: pointer to the event information structure
15920
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 @see
15922 @return Result of the function call
15923*/
15924WDI_Status
15925WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015926(
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 WDI_ControlBlockType* pWDICtx,
15928 WDI_EventInfoType* pEventData
15929)
15930{
15931 WDI_StartRspParamsType wdiRspParams;
15932 WDI_StartRspCb wdiStartRspCb = NULL;
15933
15934 tHalMacStartRspParams* startRspParams;
15935
15936#ifndef HAL_SELF_STA_PER_BSS
15937 WDI_AddStaParams wdiAddSTAParam = {0};
15938#endif
15939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 -------------------------------------------------------------------------*/
15945 if (( NULL == pEventData ) ||
15946 ( NULL == pEventData->pEventData) ||
15947 ( NULL == wdiStartRspCb ))
15948 {
15949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 }
15954
15955 /*-------------------------------------------------------------------------
15956 Extract response and send it to UMAC
15957 -------------------------------------------------------------------------*/
15958 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15959 {
15960 // not enough data was received
15961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015962 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 }
15967
15968 /*-------------------------------------------------------------------------
15969 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 -------------------------------------------------------------------------*/
15972 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15973
15974 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15975 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15976 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15977 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15978 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15979 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15980 wdiRspParams.wlanReportedVersion.major =
15981 startRspParams->wcnssWlanVersion.major;
15982 wdiRspParams.wlanReportedVersion.minor =
15983 startRspParams->wcnssWlanVersion.minor;
15984 wdiRspParams.wlanReportedVersion.version =
15985 startRspParams->wcnssWlanVersion.version;
15986 wdiRspParams.wlanReportedVersion.revision =
15987 startRspParams->wcnssWlanVersion.revision;
15988 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15989 startRspParams->wcnssCrmVersionString,
15990 sizeof(wdiRspParams.wcnssSoftwareVersion));
15991 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15992 startRspParams->wcnssWlanVersionString,
15993 sizeof(wdiRspParams.wcnssHardwareVersion));
15994 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15995
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015996 /*Save the HAL Version*/
15997 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15998
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 wpalMutexAcquire(&pWDICtx->wptMutex);
16000 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16001 {
16002 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16003
16004 /*Cache the start response for further use*/
16005 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 sizeof(pWDICtx->wdiCachedStartRspParams));
16008
16009 }
16010 else
16011 {
16012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16013 "Failed to start device with status %s(%d)",
16014 WDI_getHALStatusMsgString(startRspParams->status),
16015 startRspParams->status);
16016
16017 /*Set the expected state transition to stopped - because the start has
16018 failed*/
16019 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16020
16021 wpalMutexRelease(&pWDICtx->wptMutex);
16022
16023 /*Notify UMAC*/
16024 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016025
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016027 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
16029 /*Although the response is an error - it was processed by our function
16030 so as far as the caller is concerned this is a succesful reponse processing*/
16031 return WDI_STATUS_SUCCESS;
16032 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016033
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 wpalMutexRelease(&pWDICtx->wptMutex);
16035
16036 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16037 {
16038 /* FTM mode does not need to execute below */
16039 /* Notify UMAC */
16040 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16041 return WDI_STATUS_SUCCESS;
16042 }
16043
16044 /* START the Data transport */
16045 WDTS_startTransport(pWDICtx);
16046
16047 /*Start the STA Table !- check this logic again*/
16048 WDI_STATableStart(pWDICtx);
16049
16050#ifndef HAL_SELF_STA_PER_BSS
16051 /* Store the Self STA Index */
16052 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16053
16054 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16055 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16056 WDI_MAC_ADDR_LEN);
16057
16058 /* At this point add the self-STA */
16059
16060 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16061 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16062 /*! TO DO: wdiAddSTAParam.dpuSig */
16063 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16064 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16065 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16066
16067 //all DPU indices are the same for self STA
16068 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16069 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016070 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16072 WDI_MAC_ADDR_LEN);
16073 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16074 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16075
16076 /* Note: Since we don't get an explicit config STA request for self STA, we
16077 add the self STA upon receiving the Start response message. But the
16078 self STA entry in the table is deleted when WDI gets an explicit delete STA
16079 request */
16080 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16081#endif
16082
16083 /*Notify UMAC*/
16084 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16085
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016087}/*WDI_ProcessStartRsp*/
16088
16089
16090/**
16091 @brief Process Stop Response function (called when a response
16092 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016093
16094 @param pWDICtx: pointer to the WLAN DAL context
16095 pEventData: pointer to the event information structure
16096
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 @see
16098 @return Result of the function call
16099*/
16100WDI_Status
16101WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016102(
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 WDI_ControlBlockType* pWDICtx,
16104 WDI_EventInfoType* pEventData
16105)
16106{
16107 WDI_Status wdiStatus;
16108 WDI_StopRspCb wdiStopRspCb = NULL;
16109
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 -------------------------------------------------------------------------*/
16117 if (( NULL == pEventData ) ||
16118 ( NULL == pEventData->pEventData) ||
16119 ( NULL == wdiStopRspCb ))
16120 {
16121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 }
16126
16127 /*-------------------------------------------------------------------------
16128 Extract response and send it to UMAC
16129 -------------------------------------------------------------------------*/
16130 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16131 {
16132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016133 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 pEventData->uEventDataSize);
16135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 }
16138
16139 /*-------------------------------------------------------------------------
16140 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16144 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 sizeof(halMacStopRspMsg.stopRspParams));
16146
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016148
16149 wpalMutexAcquire(&pWDICtx->wptMutex);
16150
16151 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 --------------------------------------------------------------------------*/
16154 if ( WDI_STATUS_SUCCESS != wdiStatus )
16155 {
16156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16157 "Failed to stop the device with status %s (%d)",
16158 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16159 halMacStopRspMsg.stopRspParams.status);
16160
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016162 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016163
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016167
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16169
16170 /*Transition now as WDI may get preempted imediately after it sends
16171 up the Stop Response and it will not get to process the state transition
16172 from Main Rsp function*/
16173 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16174 wpalMutexRelease(&pWDICtx->wptMutex);
16175
16176 /*! TO DO: - STOP the Data transport */
16177
16178 /*Notify UMAC*/
16179 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16180
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016182}/*WDI_ProcessStopRsp*/
16183
16184/**
16185 @brief Process Close Rsp function (called when a response
16186 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016187
16188 @param pWDICtx: pointer to the WLAN DAL context
16189 pEventData: pointer to the event information structure
16190
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 @see
16192 @return Result of the function call
16193*/
16194WDI_Status
16195WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016196(
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 WDI_ControlBlockType* pWDICtx,
16198 WDI_EventInfoType* pEventData
16199)
16200{
16201 /*There is no close response comming from HAL - function just kept for
16202 simmetry */
16203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205}/*WDI_ProcessCloseRsp*/
16206
16207
16208/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016210============================================================================*/
16211
16212/**
16213 @brief Process Init Scan Rsp function (called when a response
16214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016215
16216 @param pWDICtx: pointer to the WLAN DAL context
16217 pEventData: pointer to the event information structure
16218
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 @see
16220 @return Result of the function call
16221*/
16222WDI_Status
16223WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016224(
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 WDI_ControlBlockType* pWDICtx,
16226 WDI_EventInfoType* pEventData
16227)
16228{
16229 WDI_Status wdiStatus;
16230 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016232 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16234
16235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 -------------------------------------------------------------------------*/
16238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16239 ( NULL == pEventData->pEventData))
16240 {
16241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016245 }
16246
16247 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16248 if( NULL == wdiInitScanRspCb)
16249 {
16250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016251 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 }
16255
16256 /*-------------------------------------------------------------------------
16257 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16261 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016262 sizeof(halInitScanRspMsg.initScanRspParams));
16263
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265
16266 if ( pWDICtx->bInBmps )
16267 {
16268 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016269 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16270 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016272 "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 -080016273 WDI_ASSERT(0);
16274 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 }
16276
16277 /*Notify UMAC*/
16278 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16279
Jeff Johnsone7245742012-09-05 17:12:55 -070016280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016281}/*WDI_ProcessInitScanRsp*/
16282
16283
16284/**
16285 @brief Process Start Scan Rsp function (called when a response
16286 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016287
16288 @param pWDICtx: pointer to the WLAN DAL context
16289 pEventData: pointer to the event information structure
16290
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 @see
16292 @return Result of the function call
16293*/
16294WDI_Status
16295WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016296(
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 WDI_ControlBlockType* pWDICtx,
16298 WDI_EventInfoType* pEventData
16299)
16300{
16301 WDI_StartScanRspParamsType wdiStartScanParams;
16302 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016303
16304 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16306
16307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 -------------------------------------------------------------------------*/
16310 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16311 ( NULL == pEventData->pEventData))
16312 {
16313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 }
16318
16319 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16320 if( NULL == wdiStartScanRspCb)
16321 {
16322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016323 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 }
16327
16328 /*-------------------------------------------------------------------------
16329 Extract response and send it to UMAC
16330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16332 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 sizeof(halStartScanRspMsg.startScanRspParams));
16334
16335 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16336 halStartScanRspMsg.startScanRspParams.status);
16337#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 halStartScanRspMsg.startScanRspParams.startTSF,
16342 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016343#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016344
16345 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16346 {
16347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16348 "Start scan failed with status %s (%d)",
16349 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16350 halStartScanRspMsg.startScanRspParams.status);
16351 /* send the status to UMAC, don't return from here*/
16352 }
16353
16354 /*Notify UMAC*/
16355 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16356
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016358
16359}/*WDI_ProcessStartScanRsp*/
16360
16361
16362/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016365
16366 @param pWDICtx: pointer to the WLAN DAL context
16367 pEventData: pointer to the event information structure
16368
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 @see
16370 @return Result of the function call
16371*/
16372WDI_Status
16373WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016374(
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 WDI_ControlBlockType* pWDICtx,
16376 WDI_EventInfoType* pEventData
16377)
16378{
16379 WDI_Status wdiStatus;
16380 tHalEndScanRspMsg halEndScanRspMsg;
16381 WDI_EndScanRspCb wdiEndScanRspCb;
16382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16383
16384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 -------------------------------------------------------------------------*/
16387 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16388 ( NULL == pEventData->pEventData))
16389 {
16390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394 }
16395
16396 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16397
16398 /*-------------------------------------------------------------------------
16399 Extract response and send it to UMAC
16400 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016401 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16402 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 sizeof(halEndScanRspMsg.endScanRspParams));
16404
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016406
16407 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16408 {
16409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16410 "End Scan failed with status %s (%d )",
16411 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16412 halEndScanRspMsg.endScanRspParams.status);
16413 /* send the status to UMAC, don't return from here*/
16414 }
16415
16416 /*Notify UMAC*/
16417 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16418
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016420}/*WDI_ProcessEndScanRsp*/
16421
16422
16423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016426
16427 @param pWDICtx: pointer to the WLAN DAL context
16428 pEventData: pointer to the event information structure
16429
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 @see
16431 @return Result of the function call
16432*/
16433WDI_Status
16434WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016435(
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 WDI_ControlBlockType* pWDICtx,
16437 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016438)
Jeff Johnson295189b2012-06-20 16:38:30 -070016439{
16440 WDI_Status wdiStatus;
16441 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016442
16443 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16445
16446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 -------------------------------------------------------------------------*/
16449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16450 ( NULL == pEventData->pEventData))
16451 {
16452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 }
16457
16458 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16459
16460 /*-------------------------------------------------------------------------
16461 Extract response and send it to UMAC
16462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16464 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16466
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016468
16469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 halFinishScanRspMsg.finishScanRspParams.status);
16472
16473 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16474 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16475 {
16476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16477 "Finish Scan failed with status %s (%d)",
16478 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16479 halFinishScanRspMsg.finishScanRspParams.status);
16480 /* send the status to UMAC, don't return from here*/
16481 }
16482
16483 /*Notify UMAC*/
16484 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16485
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016487}/*WDI_ProcessFinishScanRsp*/
16488
16489/**
16490 @brief Process Join Response function (called when a response
16491 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016492
16493 @param pWDICtx: pointer to the WLAN DAL context
16494 pEventData: pointer to the event information structure
16495
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 @see
16497 @return Result of the function call
16498*/
16499WDI_Status
16500WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016501(
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 WDI_ControlBlockType* pWDICtx,
16503 WDI_EventInfoType* pEventData
16504)
16505{
16506 WDI_Status wdiStatus;
16507 WDI_JoinRspCb wdiJoinRspCb;
16508 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016509
16510 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16512
16513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 -------------------------------------------------------------------------*/
16516 if (( NULL == pWDICtx ) ||
16517 ( NULL == pWDICtx->pfncRspCB ) ||
16518 ( NULL == pEventData ) ||
16519 ( NULL == pEventData->pEventData))
16520 {
16521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 }
16526
16527 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16528
16529 /*-------------------------------------------------------------------------
16530 Extract response and send it to UMAC
16531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16533 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 sizeof(halJoinRspMsg.joinRspParams));
16535
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016537
16538 wpalMutexAcquire(&pWDICtx->wptMutex);
16539
16540 /*-----------------------------------------------------------------------
16541 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16546 {
16547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16549 "association no longer in progress %d - mysterious HAL response",
16550 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016551
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 }
16556
16557 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16558
16559 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 -----------------------------------------------------------------------*/
16562 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16563 {
16564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16565 "Join only allowed in Joining state - failure state is %d "
16566 "strange HAL response", pBSSSes->wdiAssocState);
16567
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16569
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 }
16573
16574
16575 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 -----------------------------------------------------------------------*/
16578 if ( WDI_STATUS_SUCCESS != wdiStatus )
16579 {
16580 /*Association was failed by HAL - remove session*/
16581 WDI_DeleteSession(pWDICtx, pBSSSes);
16582
16583 /*Association no longer in progress */
16584 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16585
16586 /*Association no longer in progress - prepare pending assoc for processing*/
16587 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016588
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 }
16590 else
16591 {
16592 /*Transition to state Joining - this may be redundant as we are supposed
16593 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 }
16596
16597 wpalMutexRelease(&pWDICtx->wptMutex);
16598
16599 /*Notify UMAC*/
16600 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16601
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016603}/*WDI_ProcessJoinRsp*/
16604
16605
16606/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016609
16610 @param pWDICtx: pointer to the WLAN DAL context
16611 pEventData: pointer to the event information structure
16612
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 @see
16614 @return Result of the function call
16615*/
16616WDI_Status
16617WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016618(
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 WDI_ControlBlockType* pWDICtx,
16620 WDI_EventInfoType* pEventData
16621)
16622{
16623 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16624 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 WDI_BSSSessionType* pBSSSes = NULL;
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16630 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016631
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16633
16634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 -------------------------------------------------------------------------*/
16637 if (( NULL == pEventData ) ||
16638 ( NULL == pEventData->pEventData))
16639 {
16640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 }
16645
16646 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16647
16648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16652 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 sizeof(halConfigBssRspMsg.configBssRspParams));
16654
16655 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16656 halConfigBssRspMsg.configBssRspParams.status);
16657 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16658 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16661 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016662
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016664
16665 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016667
16668 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016670
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016672
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16676 #endif
16677 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16678 halConfigBssRspMsg.configBssRspParams.staMac,
16679 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016680
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 wpalMutexAcquire(&pWDICtx->wptMutex);
16682 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16686 wdiConfigBSSParams.macBSSID,
16687 &pBSSSes);
16688
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 /*-----------------------------------------------------------------------
16690 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 -----------------------------------------------------------------------*/
16693 if ( NULL == pBSSSes )
16694 {
16695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16696 "Association sequence for this BSS does not yet exist "
16697 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016698
16699 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16700
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016704
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 /*Save data for this BSS*/
16706 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16707 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16718 pBSSSes->bcastStaIdx =
16719 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016722
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 /*-------------------------------------------------------------------------
16724 Add Peer STA
16725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16728 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 wdiAddSTAParam.ucHTCapable =
16734 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16735 wdiAddSTAParam.ucStaType =
16736 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16740 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016742
16743 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16744 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16745 WDI_MAC_ADDR_LEN);
16746
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016760
Jeff Johnson295189b2012-06-20 16:38:30 -070016761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16762 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016763
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16765 /*-------------------------------------------------------------------------
16766 Add Broadcast STA only in AP mode
16767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016768 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016769 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 {
16771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16772 "Add BCAST STA to table for index: %d",
16773 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016774
16775 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16779 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16780 }
16781 wpalMutexRelease(&pWDICtx->wptMutex);
16782 }
16783 else
16784 {
16785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16786 "Config BSS RSP failed with status : %s(%d)",
16787 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 halConfigBssRspMsg.configBssRspParams.status);
16790
Jeff Johnsone7245742012-09-05 17:12:55 -070016791
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 /*Association was failed by HAL - remove session*/
16793 WDI_DeleteSession(pWDICtx, pBSSSes);
16794
16795 /*Association no longer in progress */
16796 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16797
16798 /*Association no longer in progress - prepare pending assoc for processing*/
16799 WDI_DequeueAssocRequest(pWDICtx);
16800
16801 }
16802
16803 /*Notify UMAC*/
16804 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16805
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016807}/*WDI_ProcessConfigBSSRsp*/
16808
16809
16810/**
16811 @brief Process Del BSS Response function (called when a response
16812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016813
16814 @param pWDICtx: pointer to the WLAN DAL context
16815 pEventData: pointer to the event information structure
16816
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 @see
16818 @return Result of the function call
16819*/
16820WDI_Status
16821WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016822(
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 WDI_ControlBlockType* pWDICtx,
16824 WDI_EventInfoType* pEventData
16825)
16826{
16827 WDI_DelBSSRspParamsType wdiDelBSSParams;
16828 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 WDI_BSSSessionType* pBSSSes = NULL;
16831
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16834
16835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 -------------------------------------------------------------------------*/
16838 if (( NULL == pEventData ) ||
16839 ( NULL == pEventData->pEventData))
16840 {
16841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 }
16846
16847 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16848
16849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16853 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 sizeof(halDelBssRspMsg.deleteBssRspParams));
16855
16856
16857 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016859
16860 wpalMutexAcquire(&pWDICtx->wptMutex);
16861
16862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16866 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16867 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016868
16869 /*-----------------------------------------------------------------------
16870 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 -----------------------------------------------------------------------*/
16873 if ( NULL == pBSSSes )
16874 {
16875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16876 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016877 "association no longer in progress - mysterious HAL response");
16878
16879 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16880
16881 wpalMutexRelease(&pWDICtx->wptMutex);
16882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016884
16885 /*Extract BSSID for the response to UMAC*/
16886 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16887 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16888
16889 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16890
16891 /*-----------------------------------------------------------------------
16892 The current session will be deleted
16893 -----------------------------------------------------------------------*/
16894 WDI_DeleteSession(pWDICtx, pBSSSes);
16895
16896
16897 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016898 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16899 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016901 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016902 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016903
16904 /* Delete the STA's in this BSS */
16905 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16906
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 wpalMutexRelease(&pWDICtx->wptMutex);
16908
16909 /*Notify UMAC*/
16910 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16911
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016913}/*WDI_ProcessDelBSSRsp*/
16914
16915/**
16916 @brief Process Post Assoc Rsp function (called when a response
16917 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016918
16919 @param pWDICtx: pointer to the WLAN DAL context
16920 pEventData: pointer to the event information structure
16921
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 @see
16923 @return Result of the function call
16924*/
16925WDI_Status
16926WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016927(
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 WDI_ControlBlockType* pWDICtx,
16929 WDI_EventInfoType* pEventData
16930)
16931{
16932 WDI_PostAssocRspParamsType wdiPostAssocParams;
16933 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16938
16939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 -------------------------------------------------------------------------*/
16942 if (( NULL == pEventData ) ||
16943 ( NULL == pEventData->pEventData))
16944 {
16945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016949 }
16950
16951 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16952
16953 /*-------------------------------------------------------------------------
16954 Extract response and send it to UMAC
16955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16957 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 sizeof(halPostAssocRspMsg.postAssocRspParams));
16959
16960 /*Extract the Post Assoc STA Params */
16961
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016966 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16968
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 wdiPostAssocParams.wdiStatus =
16970 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016971
16972 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16973 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16975 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 WDI_MAC_ADDR_LEN);
16977
16978 /* Extract Post Assoc BSS Params */
16979
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16981 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16982 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016983
16984 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16985 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16988 .macSTA, WDI_MAC_ADDR_LEN);
16989
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16992
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16995
16996 wdiPostAssocParams.bssParams.ucBSSIdx =
16997 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16998
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17001
17002 wpalMutexAcquire(&pWDICtx->wptMutex);
17003
17004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017009 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017010
17011 /*-----------------------------------------------------------------------
17012 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 -----------------------------------------------------------------------*/
17015 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17018 {
17019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17020 "Association sequence for this BSS does not yet exist or "
17021 "association no longer in progress - mysterious HAL response");
17022
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17024
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 }
17028
17029 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 -----------------------------------------------------------------------*/
17032 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17033 {
17034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17035 "Post Assoc not allowed before JOIN - failing request "
17036 "strange HAL response");
17037
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17039
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 }
17043
17044 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 -----------------------------------------------------------------------*/
17047 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17048 {
17049 /*Association was failed by HAL - remove session*/
17050 WDI_DeleteSession(pWDICtx, pBSSSes);
17051 }
17052 else
17053 {
17054 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017055 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017056
17057 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17066
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17069 }
17070
17071 /*Association no longer in progress */
17072 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17073
17074 /*Association no longer in progress - prepare pending assoc for processing*/
17075 WDI_DequeueAssocRequest(pWDICtx);
17076
17077 wpalMutexRelease(&pWDICtx->wptMutex);
17078
17079 /*Notify UMAC*/
17080 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17081
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017083}/*WDI_ProcessPostAssocRsp*/
17084
17085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017088
17089 @param pWDICtx: pointer to the WLAN DAL context
17090 pEventData: pointer to the event information structure
17091
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 @see
17093 @return Result of the function call
17094*/
17095WDI_Status
17096WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017097(
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 WDI_ControlBlockType* pWDICtx,
17099 WDI_EventInfoType* pEventData
17100)
17101{
17102 WDI_DelSTARspParamsType wdiDelSTARsp;
17103 WDI_DelSTARspCb wdiDelSTARspCb;
17104 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017105 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17107
17108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 -------------------------------------------------------------------------*/
17111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17112 ( NULL == pEventData->pEventData))
17113 {
17114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 }
17119
17120 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17121
17122 /*-------------------------------------------------------------------------
17123 Extract response and send it to UMAC
17124 -------------------------------------------------------------------------*/
17125 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 sizeof(halDelStaRspMsg.delStaRspParams));
17128
17129 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 wdiDelSTARsp.wdiStatus =
17131 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017132
17133 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17134
17135 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17136 if(staType == WDI_STA_ENTRY_SELF)
17137 {
17138 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17139
17140 /* At this point add the self-STA */
17141
17142 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17143 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17144 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17145
17146#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17147#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17148
17149 //all DPU indices are the same for self STA
17150 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17151 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17152 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17153 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17154 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17155 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017156
17157 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 }
17159 else
17160 {
17161 //Delete the station in the table
17162 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17163 }
17164
17165 /*Notify UMAC*/
17166 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17167
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017169}/*WDI_ProcessDelSTARsp*/
17170
17171
17172/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017174==========================================================================*/
17175
17176/**
17177 @brief Process Set BSS Key Rsp function (called when a response
17178 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017179
17180 @param pWDICtx: pointer to the WLAN DAL context
17181 pEventData: pointer to the event information structure
17182
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 @see
17184 @return Result of the function call
17185*/
17186WDI_Status
17187WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017188(
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 WDI_ControlBlockType* pWDICtx,
17190 WDI_EventInfoType* pEventData
17191)
17192{
17193 WDI_Status wdiStatus;
17194 eHalStatus halStatus;
17195 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17197
17198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 -------------------------------------------------------------------------*/
17201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17202 ( NULL == pEventData->pEventData))
17203 {
17204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 }
17209
17210 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17211
17212 /*-------------------------------------------------------------------------
17213 Extract response and send it to UMAC
17214 -------------------------------------------------------------------------*/
17215 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017217
17218 if ( eHAL_STATUS_SUCCESS != halStatus )
17219 {
17220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17221 "Set BSS Key failed with status %s (%d)",
17222 WDI_getHALStatusMsgString(halStatus),
17223 halStatus);
17224 /* send the status to UMAC, don't return from here*/
17225 }
17226
17227 /*Notify UMAC*/
17228 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17229
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017231}/*WDI_ProcessSetBssKeyRsp*/
17232
17233/**
17234 @brief Process Remove BSS Key Rsp function (called when a response
17235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017236
17237 @param pWDICtx: pointer to the WLAN DAL context
17238 pEventData: pointer to the event information structure
17239
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 @see
17241 @return Result of the function call
17242*/
17243WDI_Status
17244WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017245(
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_ControlBlockType* pWDICtx,
17247 WDI_EventInfoType* pEventData
17248)
17249{
17250 WDI_Status wdiStatus;
17251 eHalStatus halStatus;
17252 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17254
17255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 -------------------------------------------------------------------------*/
17258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17259 ( NULL == pEventData->pEventData))
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266
17267 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17268
17269 /*-------------------------------------------------------------------------
17270 Extract response and send it to UMAC
17271 -------------------------------------------------------------------------*/
17272 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017274
17275 if ( eHAL_STATUS_SUCCESS != halStatus )
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17278 "Remove BSS Key failed with status %s (%d )",
17279 WDI_getHALStatusMsgString(halStatus),
17280 halStatus);
17281 /* send the status to UMAC, don't return from here*/
17282 }
17283
17284 /*Notify UMAC*/
17285 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17286
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017288}/*WDI_ProcessSetBssKeyRsp*/
17289
17290
17291/**
17292 @brief Process Set STA Key Rsp function (called when a response
17293 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017294
17295 @param pWDICtx: pointer to the WLAN DAL context
17296 pEventData: pointer to the event information structure
17297
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 @see
17299 @return Result of the function call
17300*/
17301WDI_Status
17302WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017303(
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 WDI_ControlBlockType* pWDICtx,
17305 WDI_EventInfoType* pEventData
17306)
17307{
17308 WDI_Status wdiStatus;
17309 eHalStatus halStatus;
17310 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17312
17313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 -------------------------------------------------------------------------*/
17316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17317 ( NULL == pEventData->pEventData))
17318 {
17319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 }
17324
17325 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17326
17327 /*-------------------------------------------------------------------------
17328 Extract response and send it to UMAC
17329 -------------------------------------------------------------------------*/
17330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332
17333 if ( eHAL_STATUS_SUCCESS != halStatus )
17334 {
17335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17336 "Set STA Key failed with status %s (%d)",
17337 WDI_getHALStatusMsgString(halStatus),
17338 halStatus);
17339 /* send the status to UMAC, don't return from here*/
17340 }
17341
17342 /*Notify UMAC*/
17343 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17344
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017346}/*WDI_ProcessSetSTAKeyRsp*/
17347
17348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017349 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_Status wdiStatus;
17366 eHalStatus halStatus;
17367 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
17387 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389
17390 if ( eHAL_STATUS_SUCCESS != halStatus )
17391 {
17392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17393 "Remove STA Key failed with status %s (%d)",
17394 WDI_getHALStatusMsgString(halStatus),
17395 halStatus);
17396 /* send the status to UMAC, don't return from here*/
17397 }
17398
17399 /*Notify UMAC*/
17400 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessRemoveStaKeyRsp*/
17404
17405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017408
17409 @param pWDICtx: pointer to the WLAN DAL context
17410 pEventData: pointer to the event information structure
17411
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 @see
17413 @return Result of the function call
17414*/
17415WDI_Status
17416WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017417(
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 WDI_ControlBlockType* pWDICtx,
17419 WDI_EventInfoType* pEventData
17420)
17421{
17422 WDI_Status wdiStatus;
17423 eHalStatus halStatus;
17424 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17426
17427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 -------------------------------------------------------------------------*/
17430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17431 ( NULL == pEventData->pEventData))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 }
17438
17439 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17440
17441 /*-------------------------------------------------------------------------
17442 Extract response and send it to UMAC
17443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017444 wpalMemoryCopy( &halStatus,
17445 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 sizeof(halStatus));
17447
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017449
17450 if ( eHAL_STATUS_SUCCESS != halStatus )
17451 {
17452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17453 "Set STA Key failed with status %s (%d)",
17454 WDI_getHALStatusMsgString(halStatus),
17455 halStatus);
17456 /* send the status to UMAC, don't return from here*/
17457 }
17458
17459 /*Notify UMAC*/
17460 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17461
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017463}/*WDI_ProcessSetSTABcastKeyRsp*/
17464
17465/**
17466 @brief Process Remove STA Bcast Key Rsp function (called when a
17467 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017468
17469 @param pWDICtx: pointer to the WLAN DAL context
17470 pEventData: pointer to the event information structure
17471
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 @see
17473 @return Result of the function call
17474*/
17475WDI_Status
17476WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017477(
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 WDI_ControlBlockType* pWDICtx,
17479 WDI_EventInfoType* pEventData
17480)
17481{
17482 WDI_Status wdiStatus;
17483 eHalStatus halStatus;
17484 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17486
17487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 -------------------------------------------------------------------------*/
17490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17491 ( NULL == pEventData->pEventData))
17492 {
17493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 }
17498
17499 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17500
17501 /*-------------------------------------------------------------------------
17502 Extract response and send it to UMAC
17503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 wpalMemoryCopy( &halStatus,
17505 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 sizeof(halStatus));
17507
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017509
17510 if ( eHAL_STATUS_SUCCESS != halStatus )
17511 {
17512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17513 "Remove STA Key failed with status %s (%d)",
17514 WDI_getHALStatusMsgString(halStatus),
17515 halStatus);
17516 /* send the status to UMAC, don't return from here*/
17517 }
17518
17519 /*Notify UMAC*/
17520 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17521
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017523}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17524
17525
17526/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017528==========================================================================*/
17529
17530/**
17531 @brief Process Add TSpec Rsp function (called when a response
17532 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017533
17534 @param pWDICtx: pointer to the WLAN DAL context
17535 pEventData: pointer to the event information structure
17536
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 @see
17538 @return Result of the function call
17539*/
17540WDI_Status
17541WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017542(
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 WDI_ControlBlockType* pWDICtx,
17544 WDI_EventInfoType* pEventData
17545)
17546{
17547 WDI_Status wdiStatus;
17548 eHalStatus halStatus;
17549 WDI_AddTsRspCb wdiAddTsRspCb;
17550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17551
17552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 -------------------------------------------------------------------------*/
17555 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17556 ( NULL == pEventData->pEventData))
17557 {
17558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 }
17563
17564 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17565
17566 /*-------------------------------------------------------------------------
17567 Extract response and send it to UMAC
17568 -------------------------------------------------------------------------*/
17569 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017571
17572 /*Notify UMAC*/
17573 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17574
Jeff Johnsone7245742012-09-05 17:12:55 -070017575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017576}/*WDI_ProcessAddTSpecRsp*/
17577
17578
Sunil Duttbd736ed2014-05-26 21:19:41 +053017579
17580#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17581
17582WDI_Status
17583WDI_ProcessLLStatsSetRsp
17584(
17585 WDI_ControlBlockType* pWDICtx,
17586 WDI_EventInfoType* pEventData
17587)
17588{
17589 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17590
17591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17592 "%s: Enter ", __func__);
17593 /*-------------------------------------------------------------------------
17594 Sanity check
17595 -------------------------------------------------------------------------*/
17596 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17597 ( NULL == pEventData->pEventData))
17598 {
17599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17600 "%s: Invalid parameters", __func__);
17601 WDI_ASSERT(0);
17602 return WDI_STATUS_E_FAILURE;
17603 }
17604
17605 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17606
17607 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17608
17609 return WDI_STATUS_SUCCESS;
17610}
17611
17612WDI_Status
17613WDI_ProcessLLStatsGetRsp
17614(
17615 WDI_ControlBlockType* pWDICtx,
17616 WDI_EventInfoType* pEventData
17617)
17618{
17619 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17620
17621 /*-------------------------------------------------------------------------
17622 Sanity check
17623 -------------------------------------------------------------------------*/
17624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17625 ( NULL == pEventData->pEventData))
17626 {
17627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17628 "%s: Invalid parameters", __func__);
17629 WDI_ASSERT(0);
17630 return WDI_STATUS_E_FAILURE;
17631 }
17632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17633 "%s: Enter ", __func__);
17634
17635 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17636
17637 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17638
17639 return WDI_STATUS_SUCCESS;
17640}
17641
17642WDI_Status
17643WDI_ProcessLLStatsClearRsp
17644(
17645 WDI_ControlBlockType* pWDICtx,
17646 WDI_EventInfoType* pEventData
17647)
17648{
17649 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17650
17651 /*-------------------------------------------------------------------------
17652 Sanity check
17653 -------------------------------------------------------------------------*/
17654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17655 ( NULL == pEventData->pEventData))
17656 {
17657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17658 "%s: Invalid parameters", __func__);
17659 WDI_ASSERT(0);
17660 return WDI_STATUS_E_FAILURE;
17661 }
17662
17663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17664 "%s: CLEAR RESPONSE CALL BACK", __func__);
17665 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17666
17667 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17668
17669 return WDI_STATUS_SUCCESS;
17670}
17671#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17672
Jeff Johnson295189b2012-06-20 16:38:30 -070017673/**
17674 @brief Process Del TSpec Rsp function (called when a response
17675 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017676
17677 @param pWDICtx: pointer to the WLAN DAL context
17678 pEventData: pointer to the event information structure
17679
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 @see
17681 @return Result of the function call
17682*/
17683WDI_Status
17684WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017685(
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 WDI_ControlBlockType* pWDICtx,
17687 WDI_EventInfoType* pEventData
17688)
17689{
17690 WDI_Status wdiStatus;
17691 eHalStatus halStatus;
17692 WDI_DelTsRspCb wdiDelTsRspCb;
17693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17694
17695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 -------------------------------------------------------------------------*/
17698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17699 ( NULL == pEventData->pEventData))
17700 {
17701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 }
17706
17707 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17708
17709 /*-------------------------------------------------------------------------
17710 Extract response and send it to UMAC
17711 -------------------------------------------------------------------------*/
17712 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017713 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017714
17715 /*Notify UMAC*/
17716 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17717
Jeff Johnsone7245742012-09-05 17:12:55 -070017718 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017719}/*WDI_ProcessDelTSpecRsp*/
17720
17721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017722 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017724
17725 @param pWDICtx: pointer to the WLAN DAL context
17726 pEventData: pointer to the event information structure
17727
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 @see
17729 @return Result of the function call
17730*/
17731WDI_Status
17732WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017733(
Jeff Johnson295189b2012-06-20 16:38:30 -070017734 WDI_ControlBlockType* pWDICtx,
17735 WDI_EventInfoType* pEventData
17736)
17737{
17738 WDI_Status wdiStatus;
17739 eHalStatus halStatus;
17740 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17742
17743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017745 -------------------------------------------------------------------------*/
17746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17747 ( NULL == pEventData->pEventData))
17748 {
17749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 }
17754
17755 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17756
17757 /*-------------------------------------------------------------------------
17758 Extract response and send it to UMAC
17759 -------------------------------------------------------------------------*/
17760 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017762
17763 /*Notify UMAC*/
17764 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17765
Jeff Johnsone7245742012-09-05 17:12:55 -070017766 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017767}/*WDI_ProcessUpdateEDCAParamsRsp*/
17768
17769
17770/**
17771 @brief Process Add BA Rsp function (called when a response
17772 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017773
17774 @param pWDICtx: pointer to the WLAN DAL context
17775 pEventData: pointer to the event information structure
17776
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 @see
17778 @return Result of the function call
17779*/
17780WDI_Status
17781WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017782(
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 WDI_ControlBlockType* pWDICtx,
17784 WDI_EventInfoType* pEventData
17785)
17786{
17787 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17788
17789 tAddBASessionRspParams halBASessionRsp;
17790 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17791
Jeff Johnsone7245742012-09-05 17:12:55 -070017792
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17794
17795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017797 -------------------------------------------------------------------------*/
17798 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17799 ( NULL == pEventData->pEventData))
17800 {
17801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017805 }
17806
17807 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17808
17809 /*-------------------------------------------------------------------------
17810 Extract response and send it to UMAC
17811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 wpalMemoryCopy( &halBASessionRsp,
17813 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017814 sizeof(halBASessionRsp));
17815
17816 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17817
Jeff Johnson43971f52012-07-17 12:26:56 -070017818 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017819 {
17820 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17821 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17822 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17823 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17824 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17825 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17826 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17827 }
17828
17829 /*Notify UMAC*/
17830 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17831
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017833}/*WDI_ProcessAddSessionBARsp*/
17834
17835
17836/**
17837 @brief Process Del BA Rsp function (called when a response
17838 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017839
17840 @param pWDICtx: pointer to the WLAN DAL context
17841 pEventData: pointer to the event information structure
17842
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 @see
17844 @return Result of the function call
17845*/
17846WDI_Status
17847WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017848(
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 WDI_ControlBlockType* pWDICtx,
17850 WDI_EventInfoType* pEventData
17851)
17852{
17853 WDI_Status wdiStatus;
17854 eHalStatus halStatus;
17855 WDI_DelBARspCb wdiDelBARspCb;
17856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17857
17858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 -------------------------------------------------------------------------*/
17861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17862 ( NULL == pEventData->pEventData))
17863 {
17864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 }
17869
17870 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17871
17872 /*-------------------------------------------------------------------------
17873 Extract response and send it to UMAC
17874 -------------------------------------------------------------------------*/
17875 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017876 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017877
17878 if ( eHAL_STATUS_SUCCESS == halStatus )
17879 {
17880 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17881 }
17882
17883 /*Notify UMAC*/
17884 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17885
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017887}/*WDI_ProcessDelBARsp*/
17888
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017889#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017890/**
17891 @brief Process TSM Stats Rsp function (called when a response
17892 is being received over the bus from HAL)
17893
17894 @param pWDICtx: pointer to the WLAN DAL context
17895 pEventData: pointer to the event information structure
17896
17897 @see
17898 @return Result of the function call
17899*/
17900WDI_Status
17901WDI_ProcessTsmStatsRsp
17902(
17903 WDI_ControlBlockType* pWDICtx,
17904 WDI_EventInfoType* pEventData
17905)
17906{
17907 WDI_TsmRspCb wdiTsmStatsRspCb;
17908 tTsmStatsRspMsg halTsmStatsRspMsg;
17909 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17911
17912 /*-------------------------------------------------------------------------
17913 Sanity check
17914 -------------------------------------------------------------------------*/
17915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17916 ( NULL == pEventData->pEventData))
17917 {
17918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 WDI_ASSERT(0);
17921 return WDI_STATUS_E_FAILURE;
17922 }
17923
17924 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17925
17926 /*-------------------------------------------------------------------------
17927 Unpack HAL Response Message - the header was already extracted by the
17928 main Response Handling procedure
17929 -------------------------------------------------------------------------*/
17930 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17931 pEventData->pEventData,
17932 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17933
17934 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17935 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17936 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17937 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17938 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17939 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17940 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17941 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17942 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17943 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17944 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17945 halTsmStatsRspMsg.tsmStatsRspParams.status);
17946
17947 /*Notify UMAC*/
17948 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17949
17950 return WDI_STATUS_SUCCESS;
17951}/*WDI_ProcessTsmStatsRsp*/
17952
17953#endif
17954
17955
17956
17957/**
17958 @brief Process Flush AC Rsp function (called when a response
17959 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017960
17961 @param pWDICtx: pointer to the WLAN DAL context
17962 pEventData: pointer to the event information structure
17963
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 @see
17965 @return Result of the function call
17966*/
17967WDI_Status
17968WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017969(
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 WDI_ControlBlockType* pWDICtx,
17971 WDI_EventInfoType* pEventData
17972)
17973{
17974 WDI_Status wdiStatus;
17975 eHalStatus halStatus;
17976 WDI_FlushAcRspCb wdiFlushAcRspCb;
17977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17978
17979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 -------------------------------------------------------------------------*/
17982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17983 ( NULL == pEventData->pEventData))
17984 {
17985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 }
17990
17991 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17992
17993 /*-------------------------------------------------------------------------
17994 Extract response and send it to UMAC
17995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 wpalMemoryCopy( &halStatus,
17997 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 sizeof(halStatus));
17999
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018001
18002 /*Notify UMAC*/
18003 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18004
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018006}/*WDI_ProcessFlushAcRsp*/
18007
18008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018009 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018011
18012 @param pWDICtx: pointer to the WLAN DAL context
18013 pEventData: pointer to the event information structure
18014
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 @see
18016 @return Result of the function call
18017*/
18018WDI_Status
18019WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018020(
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 WDI_ControlBlockType* pWDICtx,
18022 WDI_EventInfoType* pEventData
18023)
18024{
18025 WDI_Status wdiStatus;
18026 eHalStatus halStatus;
18027 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18029
18030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 -------------------------------------------------------------------------*/
18033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18034 ( NULL == pEventData->pEventData))
18035 {
18036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 }
18041
18042 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18043
18044 /*-------------------------------------------------------------------------
18045 Extract response and send it to UMAC
18046 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018047 wpalMemoryCopy( &halStatus,
18048 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 sizeof(halStatus));
18050
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018052
18053 /*Notify UMAC*/
18054 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18055
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057}/*WDI_ProcessBtAmpEventRsp*/
18058
18059
18060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018061 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018063
18064 @param pWDICtx: pointer to the WLAN DAL context
18065 pEventData: pointer to the event information structure
18066
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 @see
18068 @return Result of the function call
18069*/
18070WDI_Status
18071WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018072(
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 WDI_ControlBlockType* pWDICtx,
18074 WDI_EventInfoType* pEventData
18075)
18076{
18077 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18078 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18079 tAddStaSelfRspMsg halAddStaSelfRsp;
18080 WDI_AddStaParams wdiAddSTAParam = {0};
18081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18082
18083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 -------------------------------------------------------------------------*/
18086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18087 ( NULL == pEventData->pEventData))
18088 {
18089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 }
18094
Jeff Johnsone7245742012-09-05 17:12:55 -070018095 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18097
18098 /*-------------------------------------------------------------------------
18099 Extract response and send it to UMAC
18100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18102 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18104
18105
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 wdiAddSTASelfParams.wdiStatus =
18107 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018108
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18115
18116 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18117 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18118 WDI_MAC_ADDR_LEN);
18119
18120
18121#ifdef HAL_SELF_STA_PER_BSS
18122
18123 /* At this point add the self-STA */
18124
18125 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18126 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18127 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18128
18129 //all DPU indices are the same for self STA
18130
18131 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18134 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18135 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18136 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18137 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18138
18139 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18140 WDI_MAC_ADDR_LEN);
18141
18142 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18143 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18144
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18147 {
18148 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18149 }
18150#endif
18151
18152 /*Notify UMAC*/
18153 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18154
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018156}/*WDI_ProcessAddSTASelfRsp*/
18157
18158
18159
18160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018163
18164 @param pWDICtx: pointer to the WLAN DAL context
18165 pEventData: pointer to the event information structure
18166
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 @see
18168 @return Result of the function call
18169*/
18170WDI_Status
18171WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018172(
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 WDI_ControlBlockType* pWDICtx,
18174 WDI_EventInfoType* pEventData
18175)
18176{
18177 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18178 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18179 tDelStaSelfRspParams delStaSelfRspParams;
18180 wpt_uint8 ucStaIdx;
18181
18182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18183
18184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018186 -------------------------------------------------------------------------*/
18187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18188 ( NULL == pEventData->pEventData))
18189 {
18190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 }
18195
18196 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18197
18198 /*-------------------------------------------------------------------------
18199 Extract response and send it to UMAC
18200 -------------------------------------------------------------------------*/
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 (wpt_uint8*)pEventData->pEventData,
18204 sizeof(tDelStaSelfRspParams));
18205
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 wdiDelStaSelfRspParams.wdiStatus =
18207 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018208
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18211 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18212 {
18213 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018214 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 delStaSelfRspParams.selfMacAddr,
18216 &ucStaIdx);
18217 if(WDI_STATUS_E_FAILURE == wdiStatus)
18218 {
18219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018220 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 }
18224 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18225 }
18226
18227 /*Notify UMAC*/
18228 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18229
18230 return WDI_STATUS_SUCCESS;
18231}
18232
Jeff Johnsone7245742012-09-05 17:12:55 -070018233#ifdef FEATURE_OEM_DATA_SUPPORT
18234/**
18235 @brief Start Oem Data Rsp function (called when a
18236 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018237
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 @param pWDICtx: pointer to the WLAN DAL context
18239 pEventData: pointer to the event information structure
18240
18241 @see
18242 @return Result of the function call
18243*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018244
18245WDI_Status
18246WDI_ProcessStartOemDataRsp
18247(
18248 WDI_ControlBlockType* pWDICtx,
18249 WDI_EventInfoType* pEventData
18250)
18251{
18252 WDI_oemDataRspCb wdiOemDataRspCb;
18253 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18254 tStartOemDataRspParams* halStartOemDataRspParams;
18255
18256 /*-------------------------------------------------------------------------
18257 Sanity check
18258 -------------------------------------------------------------------------*/
18259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18260 ( NULL == pEventData->pEventData))
18261 {
18262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018263 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018264 WDI_ASSERT(0);
18265 return WDI_STATUS_E_FAILURE;
18266 }
18267
18268 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18269
18270 /*-------------------------------------------------------------------------
18271 Extract response and send it to UMAC
18272 -------------------------------------------------------------------------*/
18273 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18274
18275
18276 //It is the responsibility of the application code to check for failure
18277 //conditions!
18278
18279 //Allocate memory for WDI OEM DATA RSP structure
18280 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18281
18282 if(NULL == wdiOemDataRspParams)
18283 {
18284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018285 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018286 pWDICtx, pEventData, pEventData->pEventData);
18287 WDI_ASSERT(0);
18288 return WDI_STATUS_E_FAILURE;
18289 }
18290
18291 /* Populate WDI structure members */
18292 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18293
18294 /*Notify UMAC*/
18295 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18296
18297 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18298 wpalMemoryFree(wdiOemDataRspParams);
18299
18300 return WDI_STATUS_SUCCESS;
18301}/*WDI_PrcoessStartOemDataRsp*/
18302#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018303
18304/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018306===========================================================================*/
18307
18308/**
18309 @brief Process Channel Switch Rsp function (called when a response
18310 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018311
18312 @param pWDICtx: pointer to the WLAN DAL context
18313 pEventData: pointer to the event information structure
18314
Jeff Johnson295189b2012-06-20 16:38:30 -070018315 @see
18316 @return Result of the function call
18317*/
18318WDI_Status
18319WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018320(
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 WDI_ControlBlockType* pWDICtx,
18322 WDI_EventInfoType* pEventData
18323)
18324{
18325 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18326 WDI_SwitchChRspCb wdiChSwitchRspCb;
18327 tSwitchChannelRspParams halSwitchChannelRsp;
18328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18329
18330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 -------------------------------------------------------------------------*/
18333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18334 ( NULL == pEventData->pEventData))
18335 {
18336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 }
18341
18342 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18343
18344 /*-------------------------------------------------------------------------
18345 Extract response and send it to UMAC
18346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 (wpt_uint8*)pEventData->pEventData,
18349 sizeof(halSwitchChannelRsp));
18350
Jeff Johnsone7245742012-09-05 17:12:55 -070018351 wdiSwitchChRsp.wdiStatus =
18352 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018353 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18354
18355#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018356 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018357#endif
18358
18359 /*Notify UMAC*/
18360 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18361
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018363}/*WDI_ProcessChannelSwitchRsp*/
18364
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018365/**
18366 @brief Process Channel Switch Rsp function (called when a response
18367 is being received over the bus from HAL against
18368 WDI_ProcessChannelSwitchReq_V1)
18369
18370 @param pWDICtx: pointer to the WLAN DAL context
18371 pEventData: pointer to the event information structure
18372
18373 @see
18374 @return Result of the function call
18375*/
18376
18377WDI_Status
18378WDI_ProcessChannelSwitchRsp_V1
18379(
18380 WDI_ControlBlockType* pWDICtx,
18381 WDI_EventInfoType* pEventData
18382)
18383{
18384 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18385 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18386 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18388
18389 /*-------------------------------------------------------------------------
18390 Sanity check
18391 -------------------------------------------------------------------------*/
18392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18393 ( NULL == pEventData->pEventData))
18394 {
18395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18396 "%s: Invalid parameters", __func__);
18397 WDI_ASSERT(0);
18398 return WDI_STATUS_E_FAILURE;
18399 }
18400
18401 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18402
18403 /*-------------------------------------------------------------------------
18404 Extract response and send it to UMAC
18405 -------------------------------------------------------------------------*/
18406 wpalMemoryCopy( &halSwitchChannelRsp,
18407 (wpt_uint8*)pEventData->pEventData,
18408 sizeof(halSwitchChannelRsp));
18409
18410 wdiSwitchChRsp.wdiStatus =
18411 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18412 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18413
18414#ifdef WLAN_FEATURE_VOWIFI
18415 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18416#endif
18417
18418 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18419 if (( NULL == wdiChSwitchRspCb ) )
18420 {
18421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18422 "%s: ### Call back function is null", __func__);
18423 WDI_ASSERT(0);
18424 return WDI_STATUS_E_FAILURE;
18425 }
18426 /*Notify UMAC*/
18427 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18428
18429 return WDI_STATUS_SUCCESS;
18430}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018431
18432/**
18433 @brief Process Config STA Rsp function (called when a response
18434 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018435
18436 @param pWDICtx: pointer to the WLAN DAL context
18437 pEventData: pointer to the event information structure
18438
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 @see
18440 @return Result of the function call
18441*/
18442WDI_Status
18443WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018444(
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 WDI_ControlBlockType* pWDICtx,
18446 WDI_EventInfoType* pEventData
18447)
18448{
18449 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18450 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18451 WDI_AddStaParams wdiAddSTAParam;
18452
18453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018455
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18458
18459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 -------------------------------------------------------------------------*/
18462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18463 ( NULL == pEventData->pEventData))
18464 {
18465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 }
18470
18471 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18472
18473 /*-------------------------------------------------------------------------
18474 Extract response and send it to UMAC
18475 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18477 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 sizeof(halConfigStaRsp.configStaRspParams));
18479
18480
18481 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18482 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18483 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18484 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18485 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18486
18487 /* MAC Address of STA - take from cache as it does not come back in the
18488 response*/
18489 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
18493 wdiCfgSTAParams.wdiStatus =
18494 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018495
18496 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18497 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18498 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18499
18500 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18501 {
18502 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18503 {
18504 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18507 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018508
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 wdiAddSTAParam.ucHTCapable =
18513 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18514 wdiAddSTAParam.ucStaType =
18515 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018516 wdiAddSTAParam.ucRmfEnabled =
18517 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018518
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18521 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018523
18524 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18525 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18526 WDI_MAC_ADDR_LEN);
18527
18528 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18529 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18530 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018531
18532 if ( NULL == pBSSSes )
18533 {
18534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18535 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018536
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 }
18540
18541 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018551
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18553 }
18554 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18555 {
18556 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18557
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018568 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 halConfigStaRsp.configStaRspParams.ucUcastSig;
18572 }
18573 }
18574
18575 /*Notify UMAC*/
18576 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18577
Jeff Johnsone7245742012-09-05 17:12:55 -070018578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018579}/*WDI_ProcessConfigStaRsp*/
18580
18581
18582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018585
18586 @param pWDICtx: pointer to the WLAN DAL context
18587 pEventData: pointer to the event information structure
18588
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 @see
18590 @return Result of the function call
18591*/
18592WDI_Status
18593WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018594(
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 WDI_ControlBlockType* pWDICtx,
18596 WDI_EventInfoType* pEventData
18597)
18598{
18599 WDI_Status wdiStatus;
18600 eHalStatus halStatus;
18601 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18602
18603 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18606
18607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 -------------------------------------------------------------------------*/
18610 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18611 ( NULL == pEventData->pEventData))
18612 {
18613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 }
18618
18619 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18620
18621 wpalMutexAcquire(&pWDICtx->wptMutex);
18622
18623 /*If the link is being transitioned to idle - the BSS is to be deleted
18624 - this type of ending a session is possible when UMAC has failed an
18625 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018626 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18628 {
18629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018630 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18633 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18634 &pBSSSes);
18635
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 /*-----------------------------------------------------------------------
18637 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 -----------------------------------------------------------------------*/
18640 if ( NULL == pBSSSes )
18641 {
18642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18643 "Set link response received outside association session");
18644 }
18645 else
18646 {
18647 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18648 will be del BSS coming after this to stop the beaconing & cleaning up the
18649 sessions*/
18650 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18651 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18652 {
18653 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 -----------------------------------------------------------------------*/
18656 WDI_DeleteSession(pWDICtx, pBSSSes);
18657
18658 /*-----------------------------------------------------------------------
18659 Check to see if this association is in progress - if so disable the
18660 flag as this has ended
18661 -----------------------------------------------------------------------*/
18662 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018664 /*Association no longer in progress */
18665 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18666 /*Association no longer in progress - prepare pending assoc for processing*/
18667 WDI_DequeueAssocRequest(pWDICtx);
18668 }
18669 }
18670 }
18671 }
18672 /* If the link state has been set to POST ASSOC, reset the "association in
18673 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18676 {
18677 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18678 WDI_DequeueAssocRequest(pWDICtx);
18679 }
18680
18681 wpalMutexRelease(&pWDICtx->wptMutex);
18682
18683 /*-------------------------------------------------------------------------
18684 Extract response and send it to UMAC
18685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 wpalMemoryCopy( &halStatus,
18687 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 sizeof(halStatus));
18689
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018691
18692 /*Notify UMAC*/
18693 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18694
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018696}/*WDI_ProcessSetLinkStateRsp*/
18697
18698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018701
18702 @param pWDICtx: pointer to the WLAN DAL context
18703 pEventData: pointer to the event information structure
18704
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 @see
18706 @return Result of the function call
18707*/
18708WDI_Status
18709WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018710(
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 WDI_ControlBlockType* pWDICtx,
18712 WDI_EventInfoType* pEventData
18713)
18714{
18715 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18716 WDI_GetStatsRspCb wdiGetStatsRspCb;
18717 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018718
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18720
18721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 -------------------------------------------------------------------------*/
18724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18725 ( NULL == pEventData->pEventData))
18726 {
18727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 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 /*-------------------------------------------------------------------------
18734 Extract response and send it to UMAC
18735 -------------------------------------------------------------------------*/
18736 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18737
18738 /*allocate the stats response buffer */
18739 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18740 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18741 + sizeof(WDI_GetStatsRspParamsType));
18742
18743 if(NULL == wdiGetStatsRsp)
18744 {
18745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018746 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 pWDICtx, pEventData, pEventData->pEventData);
18748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 }
18751
18752 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18753
18754 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18755 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18756 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18757 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18758 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18759 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18760
18761 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18762 wpalMemoryCopy(wdiGetStatsRsp + 1,
18763 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18764 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18765
18766 /*Notify UMAC*/
18767 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18768
18769 wpalMemoryFree(wdiGetStatsRsp);
18770
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018772}/*WDI_ProcessGetStatsRsp*/
18773
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018774#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018775/**
18776 @brief Process Get Roam Rssi Rsp function (called when a response is
18777 being received over the bus from HAL)
18778
18779 @param pWDICtx: pointer to the WLAN DAL context
18780 pEventData: pointer to the event information structure
18781
18782 @see
18783 @return Result of the function call
18784*/
18785WDI_Status
18786WDI_ProcessGetRoamRssiRsp
18787(
18788 WDI_ControlBlockType* pWDICtx,
18789 WDI_EventInfoType* pEventData
18790)
18791{
18792 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18793 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18794 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18796
18797 /*-------------------------------------------------------------------------
18798 Sanity check
18799 -------------------------------------------------------------------------*/
18800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18801 ( NULL == pEventData->pEventData))
18802 {
18803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18804 "%s: Invalid parameters", __func__);
18805 WDI_ASSERT(0);
18806 return WDI_STATUS_E_FAILURE;
18807 }
18808
18809 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18810 if(NULL == wdiGetRoamRssiRspCb)
18811 {
18812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18813 "%s: call back function is NULL", __func__);
18814 WDI_ASSERT(0);
18815 return WDI_STATUS_E_FAILURE;
18816 }
18817
18818 /*-------------------------------------------------------------------------
18819 Extract response and send it to UMAC
18820 -------------------------------------------------------------------------*/
18821 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18822 pEventData->pEventData,
18823 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18824
18825 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18826 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18827 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18828
18829 /*Notify UMAC*/
18830 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18831
18832 return WDI_STATUS_SUCCESS;
18833}/*WDI_ProcessGetRoamRssiRsp*/
18834#endif
18835
Jeff Johnson295189b2012-06-20 16:38:30 -070018836
18837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018838 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018840
18841 @param pWDICtx: pointer to the WLAN DAL context
18842 pEventData: pointer to the event information structure
18843
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 @see
18845 @return Result of the function call
18846*/
18847WDI_Status
18848WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018849(
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 WDI_ControlBlockType* pWDICtx,
18851 WDI_EventInfoType* pEventData
18852)
18853{
18854 WDI_Status wdiStatus;
18855 eHalStatus halStatus;
18856 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18858
18859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 -------------------------------------------------------------------------*/
18862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18863 ( NULL == pEventData->pEventData))
18864 {
18865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 }
18870
18871 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18872
18873 /*-------------------------------------------------------------------------
18874 Extract response and send it to UMAC
18875 -------------------------------------------------------------------------*/
18876 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018878
18879 /*Notify UMAC*/
18880 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18881
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018883}/*WDI_ProcessUpdateCfgRsp*/
18884
18885
18886
18887/**
18888 @brief Process Add BA Rsp function (called when a response
18889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 @param pWDICtx: pointer to the WLAN DAL context
18892 pEventData: pointer to the event information structure
18893
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 @see
18895 @return Result of the function call
18896*/
18897WDI_Status
18898WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018899(
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 WDI_ControlBlockType* pWDICtx,
18901 WDI_EventInfoType* pEventData
18902)
18903{
18904 WDI_AddBARspCb wdiAddBARspCb;
18905
18906 tAddBARspParams halAddBARsp;
18907 WDI_AddBARspinfoType wdiAddBARsp;
18908
18909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18910
18911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 -------------------------------------------------------------------------*/
18914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18915 ( NULL == pEventData->pEventData))
18916 {
18917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 }
18922
18923 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18924
18925 /*-------------------------------------------------------------------------
18926 Extract response and send it to UMAC
18927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 wpalMemoryCopy( &halAddBARsp,
18929 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 sizeof(halAddBARsp));
18931
18932 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18933
Jeff Johnson43971f52012-07-17 12:26:56 -070018934 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 {
18936 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18937 }
18938
18939 /*Notify UMAC*/
18940 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18941
Jeff Johnsone7245742012-09-05 17:12:55 -070018942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018943}/*WDI_ProcessAddSessionBARsp*/
18944
18945/**
18946 @brief Process Add BA Rsp function (called when a response
18947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018948
18949 @param pWDICtx: pointer to the WLAN DAL context
18950 pEventData: pointer to the event information structure
18951
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 @see
18953 @return Result of the function call
18954*/
18955WDI_Status
18956WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018957(
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 WDI_ControlBlockType* pWDICtx,
18959 WDI_EventInfoType* pEventData
18960)
18961{
18962 WDI_TriggerBARspCb wdiTriggerBARspCb;
18963
18964 tTriggerBARspParams* halTriggerBARsp;
18965 tTriggerBaRspCandidate* halBaCandidate;
18966 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18967 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18968 wpt_uint16 index;
18969 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018970 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18972
18973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 -------------------------------------------------------------------------*/
18976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18977 ( NULL == pEventData->pEventData))
18978 {
18979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 }
18984
18985 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18986
18987 /*-------------------------------------------------------------------------
18988 Extract response and send it to UMAC
18989 -------------------------------------------------------------------------*/
18990 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18991
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018992 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18993
18994 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18995 {
18996 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018999
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019000 if(NULL == wdiTriggerBARsp)
19001 {
19002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019003 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019004 pWDICtx, pEventData, pEventData->pEventData);
19005 WDI_ASSERT(0);
19006 return WDI_STATUS_E_FAILURE;
19007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019008
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019009 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19010
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019012 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19014
19015 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19016 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19017
19018 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19019 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19022 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19023 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19028 }
19029 wdiTriggerBARspCandidate++;
19030 halBaCandidate++;
19031 }
19032 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019033 else
19034 {
19035 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19036
19037 if(NULL == wdiTriggerBARsp)
19038 {
19039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019040 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019041 pWDICtx, pEventData, pEventData->pEventData);
19042 WDI_ASSERT(0);
19043 return WDI_STATUS_E_FAILURE;
19044 }
19045
19046 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19047
19048 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019049
19050 /*Notify UMAC*/
19051 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19052
19053 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019055}/*WDI_ProcessAddSessionBARsp*/
19056
19057/**
19058 @brief Process Update Beacon Params Rsp function (called when a response
19059 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019060
19061 @param pWDICtx: pointer to the WLAN DAL context
19062 pEventData: pointer to the event information structure
19063
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 @see
19065 @return Result of the function call
19066*/
19067WDI_Status
19068WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019069(
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 WDI_ControlBlockType* pWDICtx,
19071 WDI_EventInfoType* pEventData
19072)
19073{
19074 WDI_Status wdiStatus;
19075 eHalStatus halStatus;
19076 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19078
19079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 -------------------------------------------------------------------------*/
19082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19083 ( NULL == pEventData->pEventData))
19084 {
19085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 }
19090
19091 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19092
19093 /*-------------------------------------------------------------------------
19094 Extract response and send it to UMAC
19095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 wpalMemoryCopy( &halStatus,
19097 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 sizeof(halStatus));
19099
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019101
19102 /*Notify UMAC*/
19103 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19104
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106}/*WDI_ProcessUpdateBeaconParamsRsp*/
19107
19108/**
19109 @brief Process Send Beacon template Rsp function (called when a response
19110 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019111
19112 @param pWDICtx: pointer to the WLAN DAL context
19113 pEventData: pointer to the event information structure
19114
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 @see
19116 @return Result of the function call
19117*/
19118WDI_Status
19119WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019120(
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 WDI_ControlBlockType* pWDICtx,
19122 WDI_EventInfoType* pEventData
19123)
19124{
19125 WDI_Status wdiStatus;
19126 eHalStatus halStatus;
19127 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19129
19130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 -------------------------------------------------------------------------*/
19133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19134 ( NULL == pEventData->pEventData))
19135 {
19136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 }
19141
19142 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19143
19144 /*-------------------------------------------------------------------------
19145 Extract response and send it to UMAC
19146 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 wpalMemoryCopy( &halStatus,
19148 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 sizeof(halStatus));
19150
Jeff Johnsone7245742012-09-05 17:12:55 -070019151 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019152
19153 /*Notify UMAC*/
19154 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19155
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019157}/*WDI_ProcessSendBeaconParamsRsp*/
19158
Jeff Johnsone7245742012-09-05 17:12:55 -070019159
Jeff Johnson295189b2012-06-20 16:38:30 -070019160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019163
19164 @param pWDICtx: pointer to the WLAN DAL context
19165 pEventData: pointer to the event information structure
19166
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 @see
19168 @return Result of the function call
19169*/
19170WDI_Status
19171WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019172(
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 WDI_ControlBlockType* pWDICtx,
19174 WDI_EventInfoType* pEventData
19175)
19176{
19177 WDI_Status wdiStatus;
19178 eHalStatus halStatus;
19179 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19181
19182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019184 -------------------------------------------------------------------------*/
19185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19186 ( NULL == pEventData->pEventData))
19187 {
19188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 }
19193
19194 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19195
19196 /*-------------------------------------------------------------------------
19197 Extract response and send it to UMAC
19198 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019199 wpalMemoryCopy( &halStatus,
19200 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 sizeof(halStatus));
19202
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019204
19205 /*Notify UMAC*/
19206 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019209}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19210
19211 /**
19212 @brief Process Set Max Tx Power Rsp function (called when a response
19213 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019214
19215 @param pWDICtx: pointer to the WLAN DAL context
19216 pEventData: pointer to the event information structure
19217
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 @see
19219 @return Result of the function call
19220*/
19221WDI_Status
19222WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019223(
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ControlBlockType* pWDICtx,
19225 WDI_EventInfoType* pEventData
19226)
19227{
19228 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019229
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019231
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19234
19235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 -------------------------------------------------------------------------*/
19238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19239 ( NULL == pEventData->pEventData))
19240 {
19241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 }
19246
19247 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19248
19249 /*-------------------------------------------------------------------------
19250 Extract response and send it to UMAC
19251 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19253 pEventData->pEventData,
19254 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019255
19256 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19257 {
19258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19259 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 }
19262
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266
19267 /*Notify UMAC*/
19268 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19269
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271}
19272
schang86c22c42013-03-13 18:41:24 -070019273 /**
19274 @brief Process Set Tx Power Rsp function (called when a response
19275 is being received over the bus from HAL)
19276
19277 @param pWDICtx: pointer to the WLAN DAL context
19278 pEventData: pointer to the event information structure
19279
19280 @see
19281 @return Result of the function call
19282*/
19283WDI_Status
19284WDI_ProcessSetTxPowerRsp
19285(
19286 WDI_ControlBlockType* pWDICtx,
19287 WDI_EventInfoType* pEventData
19288)
19289{
19290 tSetTxPwrRspMsg halTxpowerrsp;
19291 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19292 WDA_SetTxPowerRspCb wdiReqStatusCb;
19293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19294
19295 /*-------------------------------------------------------------------------
19296 Sanity check
19297 -------------------------------------------------------------------------*/
19298 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19299 ( NULL == pEventData->pEventData))
19300 {
19301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19302 "%s: Invalid parameters", __func__);
19303 WDI_ASSERT(0);
19304 return WDI_STATUS_E_FAILURE;
19305 }
19306
19307 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19308
19309 /*-------------------------------------------------------------------------
19310 Extract response and send it to UMAC
19311 -------------------------------------------------------------------------*/
19312 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19313 pEventData->pEventData,
19314 sizeof(halTxpowerrsp.setTxPwrRspParams));
19315
19316 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19317 {
19318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19319 "Error status returned in Set Tx Power Response ");
19320 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19321 return WDI_STATUS_E_FAILURE;
19322 }
19323
19324 wdiSetTxPowerRspMsg.wdiStatus =
19325 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19326
19327 /*Notify UMAC*/
19328 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19329
19330 return WDI_STATUS_SUCCESS;
19331}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019332
19333/**
19334 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19335 is being received over the bus from HAL)
19336
19337 @param pWDICtx: pointer to the WLAN DAL context
19338 pEventData: pointer to the event information structure
19339
19340 @see
19341 @return Result of the function call
19342*/
19343WDI_Status
19344WDI_ProcessSetMaxTxPowerPerBandRsp
19345(
19346 WDI_ControlBlockType* pWDICtx,
19347 WDI_EventInfoType* pEventData
19348)
19349{
19350 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19351 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19352 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19354
19355 /*-------------------------------------------------------------------------
19356 Sanity check
19357 -------------------------------------------------------------------------*/
19358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19359 ( NULL == pEventData->pEventData))
19360 {
19361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19362 "%s: Invalid parameters", __func__);
19363 WDI_ASSERT(0);
19364 return WDI_STATUS_E_FAILURE;
19365 }
19366
19367 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19368
19369 /*-------------------------------------------------------------------------
19370 Extract response and send it to UMAC
19371 -------------------------------------------------------------------------*/
19372 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19373 pEventData->pEventData,
19374 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19375
19376 if (eHAL_STATUS_SUCCESS !=
19377 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19378 {
19379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19380 "Error status returned in Set Max Tx Power Per Band Response");
19381 return WDI_STATUS_E_FAILURE;
19382 }
19383
19384 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19385 WDI_HAL_2_WDI_STATUS(
19386 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19387
19388 /* Notify UMAC */
19389 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19390
19391 return WDI_STATUS_SUCCESS;
19392}
19393
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019394#ifdef FEATURE_WLAN_TDLS
19395/**
19396 @brief Process TDLS Link Establish Rsp function (called
19397 when a response is being received over the bus from HAL)
19398
19399 @param pWDICtx: pointer to the WLAN DAL context
19400 pEventData: pointer to the event information structure
19401
19402 @see
19403 @return Result of the function call
19404*/
19405WDI_Status
19406WDI_ProcessLinkEstablishReqRsp
19407(
19408 WDI_ControlBlockType* pWDICtx,
19409 WDI_EventInfoType* pEventData
19410)
19411{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019412 eHalStatus halStatus;
19413 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019414 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19415 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19416
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19418
19419 /*-------------------------------------------------------------------------
19420 Sanity check
19421 -------------------------------------------------------------------------*/
19422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19423 ( NULL == pEventData->pEventData))
19424 {
19425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19426 "%s: Invalid parameters", __func__);
19427 WDI_ASSERT(0);
19428 return WDI_STATUS_E_FAILURE;
19429 }
19430
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019431 /*-------------------------------------------------------------------------
19432 Extract indication and send it to UMAC
19433 -------------------------------------------------------------------------*/
19434 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19435 pEventData->pEventData,
19436 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19437
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019438 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19439
19440 /*-------------------------------------------------------------------------
19441 Extract response and send it to UMAC
19442 -------------------------------------------------------------------------*/
19443 wpalMemoryCopy( &halStatus,
19444 pEventData->pEventData,
19445 sizeof(halStatus));
19446
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019447 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19448 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019449
19450 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019451 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019452
19453 return WDI_STATUS_SUCCESS;
19454}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019455
19456
19457
19458/**
19459 @brief Process TDLS Chan switch Rsp function (called
19460 when a response is being received over the bus from HAL)
19461
19462 @param pWDICtx: pointer to the WLAN DAL context
19463 pEventData: pointer to the event information structure
19464
19465 @see
19466 @return Result of the function call
19467*/
19468WDI_Status
19469WDI_ProcessChanSwitchReqRsp
19470(
19471 WDI_ControlBlockType* pWDICtx,
19472 WDI_EventInfoType* pEventData
19473)
19474{
19475 eHalStatus halStatus;
19476 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19477 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19478 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19479
19480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19481
19482 /*-------------------------------------------------------------------------
19483 Sanity check
19484 -------------------------------------------------------------------------*/
19485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19486 ( NULL == pEventData->pEventData))
19487 {
19488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19489 "%s: Invalid parameters", __func__);
19490 WDI_ASSERT(0);
19491 return WDI_STATUS_E_FAILURE;
19492 }
19493
19494 /*-------------------------------------------------------------------------
19495 Extract indication and send it to UMAC
19496 -------------------------------------------------------------------------*/
19497 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19498 pEventData->pEventData,
19499 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19500
19501 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19502
19503 /*-------------------------------------------------------------------------
19504 Extract response and send it to UMAC
19505 -------------------------------------------------------------------------*/
19506 wpalMemoryCopy( &halStatus,
19507 pEventData->pEventData,
19508 sizeof(halStatus));
19509
19510 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19511 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19512
19513 /*Notify UMAC*/
19514 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19515
19516 return WDI_STATUS_SUCCESS;
19517}/*WDI_ProcessChanSwitchReqRsp*/
19518
19519
19520
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019521#endif
schang86c22c42013-03-13 18:41:24 -070019522
Jeff Johnson295189b2012-06-20 16:38:30 -070019523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019526
19527 @param pWDICtx: pointer to the WLAN DAL context
19528 pEventData: pointer to the event information structure
19529
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 @see
19531 @return Result of the function call
19532*/
19533WDI_Status
19534WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019535(
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 WDI_ControlBlockType* pWDICtx,
19537 WDI_EventInfoType* pEventData
19538)
19539{
19540 WDI_Status wdiStatus;
19541 eHalStatus halStatus;
19542 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19544
19545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 -------------------------------------------------------------------------*/
19548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData))
19550 {
19551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 }
19556
19557 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19558
19559 /*-------------------------------------------------------------------------
19560 Extract response and send it to UMAC
19561 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 wpalMemoryCopy( &halStatus,
19563 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 sizeof(halStatus));
19565
Jeff Johnsone7245742012-09-05 17:12:55 -070019566 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019567
19568 /*Notify UMAC*/
19569 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19570
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019572}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019576
19577 @param pWDICtx: pointer to the WLAN DAL context
19578 pEventData: pointer to the event information structure
19579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 @see
19581 @return Result of the function call
19582*/
19583WDI_Status
19584WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019585(
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 WDI_ControlBlockType* pWDICtx,
19587 WDI_EventInfoType* pEventData
19588)
19589{
19590 WDI_Status wdiStatus;
19591 eHalStatus halStatus;
19592 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019593 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19595
19596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019598 -------------------------------------------------------------------------*/
19599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19600 ( NULL == pEventData->pEventData))
19601 {
19602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 }
19607
19608 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19609
19610 /*-------------------------------------------------------------------------
19611 Extract response and send it to UMAC
19612 -------------------------------------------------------------------------*/
19613 halStatus = *((eHalStatus*)pEventData->pEventData);
19614
Jeff Johnsone7245742012-09-05 17:12:55 -070019615 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019616
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019617 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19618 * Other module states are taken care by PMC.
19619 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19620 */
19621 if (wdiStatus != WDI_STATUS_SUCCESS) {
19622
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19624 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19625 halStatus);
19626 /* Call Back is not required as we are putting the DXE in FULL
19627 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019628 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19629
19630 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019632 "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 -080019633 WDI_ASSERT(0);
19634 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019635 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 /*Notify UMAC*/
19637 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19638
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019640}/*WDI_ProcessEnterImpsRsp*/
19641
19642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019645
19646 @param pWDICtx: pointer to the WLAN DAL context
19647 pEventData: pointer to the event information structure
19648
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 @see
19650 @return Result of the function call
19651*/
19652WDI_Status
19653WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019654(
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 WDI_ControlBlockType* pWDICtx,
19656 WDI_EventInfoType* pEventData
19657)
19658{
19659 WDI_Status wdiStatus;
19660 eHalStatus halStatus;
19661 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019662 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19664
19665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019667 -------------------------------------------------------------------------*/
19668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19669 ( NULL == pEventData->pEventData))
19670 {
19671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 }
19676
19677 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19678
19679 /*-------------------------------------------------------------------------
19680 Extract response and send it to UMAC
19681 -------------------------------------------------------------------------*/
19682 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019683 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019684
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019685 if (halStatus != eHAL_STATUS_SUCCESS)
19686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19687 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19688
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019690 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19691 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19692 {
19693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019694 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019695 WDI_ASSERT(0);
19696 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 /*Notify UMAC*/
19698 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19699
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019701}/*WDI_ProcessExitImpsRsp*/
19702
19703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019706
19707 @param pWDICtx: pointer to the WLAN DAL context
19708 pEventData: pointer to the event information structure
19709
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 @see
19711 @return Result of the function call
19712*/
19713WDI_Status
19714WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019715(
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 WDI_ControlBlockType* pWDICtx,
19717 WDI_EventInfoType* pEventData
19718)
19719{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019720 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19721 tHalEnterBmpsRspParams halEnterBmpsRsp;
19722 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19723 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019724 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19726
19727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 -------------------------------------------------------------------------*/
19730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19731 ( NULL == pEventData->pEventData))
19732 {
19733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019737 }
19738
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019740 Extract response and send it to UMAC
19741 -------------------------------------------------------------------------*/
19742 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19743 {
19744 wpalMemoryCopy( &halEnterBmpsRsp,
19745 pEventData->pEventData,
19746 sizeof(halEnterBmpsRsp));
19747
19748 //Used to print debug message
19749 halStatus = halEnterBmpsRsp.status;
19750 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19751 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19752 }
19753 else
19754 {
19755 halStatus = *((eHalStatus*)pEventData->pEventData);
19756 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19757 }
19758
19759 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019760
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019761 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19762 * Other module states are taken care by PMC.
19763 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19764 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019765 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19766 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019767
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019769 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19770 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019771 /* Call Back is not required as we are putting the DXE in FULL
19772 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019773 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19774 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19775 {
19776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019777 "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 -080019778 WDI_ASSERT(0);
19779 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019780 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019781 }
19782
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019784 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019785
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019787}/*WDI_ProcessEnterBmpsRsp*/
19788
19789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019790 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019792
19793 @param pWDICtx: pointer to the WLAN DAL context
19794 pEventData: pointer to the event information structure
19795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 @see
19797 @return Result of the function call
19798*/
19799WDI_Status
19800WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019801(
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 WDI_ControlBlockType* pWDICtx,
19803 WDI_EventInfoType* pEventData
19804)
19805{
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 eHalStatus halStatus;
19807 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019808 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019809 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19810 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19812
19813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 -------------------------------------------------------------------------*/
19816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19817 ( NULL == pEventData->pEventData))
19818 {
19819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 }
19824
19825 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19826
19827 /*-------------------------------------------------------------------------
19828 Extract response and send it to UMAC
19829 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019830
19831 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19832 {
19833 wpalMemoryCopy( &halExitBmpsRsp,
19834 pEventData->pEventData,
19835 sizeof(halExitBmpsRsp));
19836
19837 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19838 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19839 }
19840 else
19841 {
19842 halStatus = *((eHalStatus*)pEventData->pEventData);
19843 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19844 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019845
19846 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019847 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19848 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19849 {
19850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019851 "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 -080019852 WDI_ASSERT(0);
19853 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019854 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19855
19856 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019857 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019858
Jeff Johnsone7245742012-09-05 17:12:55 -070019859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019860}/*WDI_ProcessExitBmpsRsp*/
19861
19862/**
19863 @brief Process Enter UAPSD Rsp function (called when a response
19864 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019865
19866 @param pWDICtx: pointer to the WLAN DAL context
19867 pEventData: pointer to the event information structure
19868
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 @see
19870 @return Result of the function call
19871*/
19872WDI_Status
19873WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019874(
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 WDI_ControlBlockType* pWDICtx,
19876 WDI_EventInfoType* pEventData
19877)
19878{
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019880 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019882 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19883
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19885
19886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019888 -------------------------------------------------------------------------*/
19889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19890 ( NULL == pEventData->pEventData))
19891 {
19892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 }
19897
19898 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19899
19900 /*-------------------------------------------------------------------------
19901 Extract response and send it to UMAC
19902 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019903 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19904 {
19905 wpalMemoryCopy( &halEnterUapsdRsp,
19906 pEventData->pEventData,
19907 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019908
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019909 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19910 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19911 }
19912 else
19913 {
19914 halStatus = *((eHalStatus*)pEventData->pEventData);
19915 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19916 }
19917
19918 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 {
19920 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19921 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19922 // the traffic to decide when to suspend the trigger frames when there is no traffic
19923 // activity on the trigger enabled ACs
19924 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19925
19926#ifdef WLAN_PERF
19927 // Increment the BD signature to refresh the fast path BD utilization
19928 pWDICtx->uBdSigSerialNum++;
19929#endif
19930 }
19931
19932 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019933 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019934
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019936}/*WDI_ProcessEnterUapsdRsp*/
19937
19938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019941
19942 @param pWDICtx: pointer to the WLAN DAL context
19943 pEventData: pointer to the event information structure
19944
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 @see
19946 @return Result of the function call
19947*/
19948WDI_Status
19949WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019950(
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ControlBlockType* pWDICtx,
19952 WDI_EventInfoType* pEventData
19953)
19954{
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 eHalStatus halStatus;
19956 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019957 tHalExitUapsdRspParams halExitUapsdRsp;
19958 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19960
19961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 -------------------------------------------------------------------------*/
19964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19965 ( NULL == pEventData->pEventData))
19966 {
19967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 }
19972
19973 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19974
19975 /*-------------------------------------------------------------------------
19976 Extract response and send it to UMAC
19977 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019978 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19979 {
19980 wpalMemoryCopy( &halExitUapsdRsp,
19981 pEventData->pEventData,
19982 sizeof(halExitUapsdRsp));
19983
19984 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19985 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19986 }
19987 else
19988 {
19989 halStatus = *((eHalStatus*)pEventData->pEventData);
19990 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19991 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19993 // directly instead of the FW WQ.
19994 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19995
19996#ifdef WLAN_PERF
19997 // Increment the BD signature to refresh the fast path BD utilization
19998 pWDICtx->uBdSigSerialNum++;
19999#endif
20000
20001 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020002 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005}/*WDI_ProcessExitUapsdRsp*/
20006
20007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020010
20011 @param pWDICtx: pointer to the WLAN DAL context
20012 pEventData: pointer to the event information structure
20013
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 @see
20015 @return Result of the function call
20016*/
20017WDI_Status
20018WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020019(
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 WDI_ControlBlockType* pWDICtx,
20021 WDI_EventInfoType* pEventData
20022)
20023{
20024 WDI_Status wdiStatus;
20025 eHalStatus halStatus;
20026 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20028
20029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 -------------------------------------------------------------------------*/
20032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20033 ( NULL == pEventData->pEventData))
20034 {
20035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 }
20040
20041 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20042
20043 /*-------------------------------------------------------------------------
20044 Extract response and send it to UMAC
20045 -------------------------------------------------------------------------*/
20046 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020047 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020048
20049 /*Notify UMAC*/
20050 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20051
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020053}/*WDI_ProcessSetUapsdAcParamsRsp*/
20054
20055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020056 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020058
20059 @param pWDICtx: pointer to the WLAN DAL context
20060 pEventData: pointer to the event information structure
20061
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 @see
20063 @return Result of the function call
20064*/
20065WDI_Status
20066WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020067(
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 WDI_ControlBlockType* pWDICtx,
20069 WDI_EventInfoType* pEventData
20070)
20071{
20072 WDI_Status wdiStatus;
20073 eHalStatus halStatus;
20074 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20076
20077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 -------------------------------------------------------------------------*/
20080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20081 ( NULL == pEventData->pEventData))
20082 {
20083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 }
20088
20089 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20090
20091 /*-------------------------------------------------------------------------
20092 Extract response and send it to UMAC
20093 -------------------------------------------------------------------------*/
20094 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020096
20097 /*Notify UMAC*/
20098 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20099
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101}/*WDI_ProcessUpdateUapsdParamsRsp*/
20102
20103/**
20104 @brief Process Configure RXP filter Rsp function (called when a
20105 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020106
20107 @param pWDICtx: pointer to the WLAN DAL context
20108 pEventData: pointer to the event information structure
20109
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 @see
20111 @return Result of the function call
20112*/
20113WDI_Status
20114WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020115(
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 WDI_ControlBlockType* pWDICtx,
20117 WDI_EventInfoType* pEventData
20118)
20119{
20120 WDI_Status wdiStatus;
20121 eHalStatus halStatus;
20122 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20124
20125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 -------------------------------------------------------------------------*/
20128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20129 ( NULL == pEventData->pEventData))
20130 {
20131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 }
20136
20137 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20138
20139 /*-------------------------------------------------------------------------
20140 Extract response and send it to UMAC
20141 -------------------------------------------------------------------------*/
20142 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020144
20145 /*Notify UMAC*/
20146 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20147
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020149}/*WDI_ProcessConfigureRxpFilterRsp*/
20150
20151/**
20152 @brief Process Set beacon filter Rsp function (called when a
20153 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020154
20155 @param pWDICtx: pointer to the WLAN DAL context
20156 pEventData: pointer to the event information structure
20157
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 @see
20159 @return Result of the function call
20160*/
20161WDI_Status
20162WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020163(
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 WDI_ControlBlockType* pWDICtx,
20165 WDI_EventInfoType* pEventData
20166)
20167{
20168 WDI_Status wdiStatus;
20169 eHalStatus halStatus;
20170 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20172
20173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 -------------------------------------------------------------------------*/
20176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20177 ( NULL == pEventData->pEventData))
20178 {
20179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 }
20184
20185 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20186
20187 /*-------------------------------------------------------------------------
20188 Extract response and send it to UMAC
20189 -------------------------------------------------------------------------*/
20190 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020192
20193 /*Notify UMAC*/
20194 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20195
Jeff Johnsone7245742012-09-05 17:12:55 -070020196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020197}/*WDI_ProcessSetBeaconFilterRsp*/
20198
20199/**
20200 @brief Process remove beacon filter Rsp function (called when a
20201 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020202
20203 @param pWDICtx: pointer to the WLAN DAL context
20204 pEventData: pointer to the event information structure
20205
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 @see
20207 @return Result of the function call
20208*/
20209WDI_Status
20210WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020211(
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 WDI_ControlBlockType* pWDICtx,
20213 WDI_EventInfoType* pEventData
20214)
20215{
20216 WDI_Status wdiStatus;
20217 eHalStatus halStatus;
20218 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20220
20221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 -------------------------------------------------------------------------*/
20224 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20225 ( NULL == pEventData->pEventData))
20226 {
20227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 }
20232
20233 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20234
20235 /*-------------------------------------------------------------------------
20236 Extract response and send it to UMAC
20237 -------------------------------------------------------------------------*/
20238 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020240
20241 /*Notify UMAC*/
20242 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20243
Jeff Johnsone7245742012-09-05 17:12:55 -070020244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020245}/*WDI_ProcessRemBeaconFilterRsp*/
20246
20247/**
20248 @brief Process set RSSI thresholds Rsp function (called when a
20249 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020250
20251 @param pWDICtx: pointer to the WLAN DAL context
20252 pEventData: pointer to the event information structure
20253
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 @see
20255 @return Result of the function call
20256*/
20257WDI_Status
20258WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020259(
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 WDI_ControlBlockType* pWDICtx,
20261 WDI_EventInfoType* pEventData
20262)
20263{
20264 WDI_Status wdiStatus;
20265 eHalStatus halStatus;
20266 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20268
20269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 -------------------------------------------------------------------------*/
20272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20273 ( NULL == pEventData->pEventData))
20274 {
20275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 }
20280
20281 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20282
20283 /*-------------------------------------------------------------------------
20284 Extract response and send it to UMAC
20285 -------------------------------------------------------------------------*/
20286 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020287 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020288
20289 /*Notify UMAC*/
20290 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20291
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020293}/*WDI_ProcessSetRSSIThresoldsRsp*/
20294
20295/**
20296 @brief Process host offload Rsp function (called when a
20297 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020298
20299 @param pWDICtx: pointer to the WLAN DAL context
20300 pEventData: pointer to the event information structure
20301
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 @see
20303 @return Result of the function call
20304*/
20305WDI_Status
20306WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020307(
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ControlBlockType* pWDICtx,
20309 WDI_EventInfoType* pEventData
20310)
20311{
20312 WDI_Status wdiStatus;
20313 eHalStatus halStatus;
20314 WDI_HostOffloadCb wdiHostOffloadCb;
20315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20316
20317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 -------------------------------------------------------------------------*/
20320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20321 ( NULL == pEventData->pEventData))
20322 {
20323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 }
20328
20329 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20330
20331 /*-------------------------------------------------------------------------
20332 Extract response and send it to UMAC
20333 -------------------------------------------------------------------------*/
20334 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020336
20337 /*Notify UMAC*/
20338 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20339
Jeff Johnsone7245742012-09-05 17:12:55 -070020340 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020341}/*WDI_ProcessHostOffloadRsp*/
20342
20343/**
20344 @brief Process keep alive Rsp function (called when a
20345 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020346
20347 @param pWDICtx: pointer to the WLAN DAL context
20348 pEventData: pointer to the event information structure
20349
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 @see
20351 @return Result of the function call
20352*/
20353WDI_Status
20354WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020355(
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 WDI_ControlBlockType* pWDICtx,
20357 WDI_EventInfoType* pEventData
20358)
20359{
20360 WDI_Status wdiStatus;
20361 eHalStatus halStatus;
20362 WDI_KeepAliveCb wdiKeepAliveCb;
20363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20365 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20366
20367
20368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 -------------------------------------------------------------------------*/
20371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20372 ( NULL == pEventData->pEventData))
20373 {
20374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 }
20379
Jeff Johnsone7245742012-09-05 17:12:55 -070020380 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 /*-------------------------------------------------------------------------
20383 Extract response and send it to UMAC
20384 -------------------------------------------------------------------------*/
20385 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020387
20388 /*Notify UMAC*/
20389 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20390
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020392}/*WDI_ProcessKeepAliveRsp*/
20393
20394/**
20395 @brief Process wowl add ptrn Rsp function (called when a
20396 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020397
20398 @param pWDICtx: pointer to the WLAN DAL context
20399 pEventData: pointer to the event information structure
20400
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 @see
20402 @return Result of the function call
20403*/
20404WDI_Status
20405WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020406(
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 WDI_ControlBlockType* pWDICtx,
20408 WDI_EventInfoType* pEventData
20409)
20410{
Jeff Johnson295189b2012-06-20 16:38:30 -070020411 eHalStatus halStatus;
20412 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020413 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20414 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20415
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20417
20418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 -------------------------------------------------------------------------*/
20421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20422 ( NULL == pEventData->pEventData))
20423 {
20424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 }
20429
20430 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20431
20432 /*-------------------------------------------------------------------------
20433 Extract response and send it to UMAC
20434 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020435 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20436 {
20437 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20438 pEventData->pEventData,
20439 sizeof(halAddWowlBcastPtrRsp));
20440
20441 wdiWowlAddBcPtrRsp.wdiStatus =
20442 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20443 }
20444 else
20445 {
20446 halStatus = *((eHalStatus*)pEventData->pEventData);
20447 wdiWowlAddBcPtrRsp.wdiStatus =
20448 WDI_HAL_2_WDI_STATUS(halStatus);
20449 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020450
20451 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020452 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020453
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455}/*WDI_ProcessWowlAddBcPtrnRsp*/
20456
20457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020460
20461 @param pWDICtx: pointer to the WLAN DAL context
20462 pEventData: pointer to the event information structure
20463
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 @see
20465 @return Result of the function call
20466*/
20467WDI_Status
20468WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020469(
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 WDI_ControlBlockType* pWDICtx,
20471 WDI_EventInfoType* pEventData
20472)
20473{
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 eHalStatus halStatus;
20475 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020476 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20477 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20479
20480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 -------------------------------------------------------------------------*/
20483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20484 ( NULL == pEventData->pEventData))
20485 {
20486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 }
20491
20492 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20493
20494 /*-------------------------------------------------------------------------
20495 Extract response and send it to UMAC
20496 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020497 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20498 {
20499 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20500 pEventData->pEventData,
20501 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020503 wdiWowlDelBcstPtrRsp.wdiStatus =
20504 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20505 }
20506 else
20507 {
20508 halStatus = *((eHalStatus*)pEventData->pEventData);
20509 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20510 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020512 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020513
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020515}/*WDI_ProcessWowlDelBcPtrnRsp*/
20516
20517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020520
20521 @param pWDICtx: pointer to the WLAN DAL context
20522 pEventData: pointer to the event information structure
20523
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 @see
20525 @return Result of the function call
20526*/
20527WDI_Status
20528WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020529(
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 WDI_ControlBlockType* pWDICtx,
20531 WDI_EventInfoType* pEventData
20532)
20533{
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 eHalStatus halStatus;
20535 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020536 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20537 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20539
20540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 -------------------------------------------------------------------------*/
20543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20544 ( NULL == pEventData->pEventData))
20545 {
20546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 }
20551
20552 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20553
20554 /*-------------------------------------------------------------------------
20555 Extract response and send it to UMAC
20556 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020557 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20558 {
20559 wpalMemoryCopy( &halEnterWowlRspParams,
20560 (wpt_uint8*)pEventData->pEventData,
20561 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020563 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20564 wdiwowlEnterRsp.status =
20565 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20566 }
20567 else
20568 {
20569 halStatus = *((eHalStatus*)pEventData->pEventData);
20570 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20571 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020573 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576}/*WDI_ProcessWowlEnterRsp*/
20577
20578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020581
20582 @param pWDICtx: pointer to the WLAN DAL context
20583 pEventData: pointer to the event information structure
20584
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 @see
20586 @return Result of the function call
20587*/
20588WDI_Status
20589WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020590(
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 WDI_ControlBlockType* pWDICtx,
20592 WDI_EventInfoType* pEventData
20593)
20594{
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 eHalStatus halStatus;
20596 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020597 tHalExitWowlRspParams halExitWowlRspParams;
20598 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20599
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20601
20602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 -------------------------------------------------------------------------*/
20605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20606 ( NULL == pEventData->pEventData))
20607 {
20608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 }
20613
20614 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20615
20616 /*-------------------------------------------------------------------------
20617 Extract response and send it to UMAC
20618 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020619 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20620 {
20621 wpalMemoryCopy( &halExitWowlRspParams,
20622 pEventData->pEventData,
20623 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020624
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020625 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20626 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20627
20628 }
20629 else
20630 {
20631 halStatus = *((eHalStatus*)pEventData->pEventData);
20632 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20633 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020635 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020636
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638}/*WDI_ProcessWowlExitRsp*/
20639
20640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 (called when a response is being received over the bus
20643 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020644
20645 @param pWDICtx: pointer to the WLAN DAL context
20646 pEventData: pointer to the event information structure
20647
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 @see
20649 @return Result of the function call
20650*/
20651WDI_Status
20652WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020653(
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 WDI_ControlBlockType* pWDICtx,
20655 WDI_EventInfoType* pEventData
20656)
20657{
20658 WDI_Status wdiStatus;
20659 eHalStatus halStatus;
20660 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20662
20663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 -------------------------------------------------------------------------*/
20666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20667 ( NULL == pEventData->pEventData))
20668 {
20669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 }
20674
20675 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20676
20677 /*-------------------------------------------------------------------------
20678 Extract response and send it to UMAC
20679 -------------------------------------------------------------------------*/
20680 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020682
20683 /*Notify UMAC*/
20684 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20685
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020687}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20688
20689
20690/**
20691 @brief Process Nv download(called when a response
20692 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020693
20694 @param pWDICtx: pointer to the WLAN DAL context
20695 pEventData: pointer to the event information structure
20696
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 @see
20698 @return Result of the function call
20699*/
20700WDI_Status
20701WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020702(
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 WDI_ControlBlockType* pWDICtx,
20704 WDI_EventInfoType* pEventData
20705)
20706{
20707
20708 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20709 tHalNvImgDownloadRspParams halNvDownloadRsp;
20710 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20711
20712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 -------------------------------------------------------------------------*/
20715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20716 ( NULL == pEventData->pEventData))
20717 {
20718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 }
20723
20724 /*-------------------------------------------------------------------------
20725 Extract response and send it to UMAC
20726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 wpalMemoryCopy( &halNvDownloadRsp,
20728 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 sizeof(halNvDownloadRsp));
20730
20731 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20732
20733 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20735 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 {
20737 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 }
20740 else
20741 {
20742 /*Reset the Nv related global information in WDI context information */
20743 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20744 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20745 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20746 /*call WDA callback function for last fragment */
20747 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20748 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20749 }
20750
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752}
20753#ifdef WLAN_FEATURE_VOWIFI_11R
20754/**
20755 @brief Process Add TSpec Rsp function (called when a response
20756 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020757
20758 @param pWDICtx: pointer to the WLAN DAL context
20759 pEventData: pointer to the event information structure
20760
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 @see
20762 @return Result of the function call
20763*/
20764WDI_Status
20765WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020766(
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 WDI_ControlBlockType* pWDICtx,
20768 WDI_EventInfoType* pEventData
20769)
20770{
20771 WDI_Status wdiStatus;
20772 tAggrAddTsRspParams aggrAddTsRsp;
20773 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20775
20776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 -------------------------------------------------------------------------*/
20779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20780 ( NULL == pEventData->pEventData))
20781 {
20782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 }
20787
20788 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20789
20790 /*-------------------------------------------------------------------------
20791 Extract response and send it to UMAC
20792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 wpalMemoryCopy( &aggrAddTsRsp,
20794 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 sizeof(aggrAddTsRsp));
20796
20797 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020799
20800 /*Notify UMAC*/
20801 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20802
Jeff Johnsone7245742012-09-05 17:12:55 -070020803 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804}/*WDI_ProcessAddTSpecRsp*/
20805#endif /* WLAN_FEATURE_VOWIFI_11R */
20806
20807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020810
20811 @param pWDICtx: pointer to the WLAN DAL context
20812 pEventData: pointer to the event information structure
20813
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 @see
20815 @return Result of the function call
20816*/
20817WDI_Status
20818WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020819(
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 WDI_ControlBlockType* pWDICtx,
20821 WDI_EventInfoType* pEventData
20822)
20823{
20824 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20825 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20826 tHalHostResumeRspParams hostResumeRspMsg;
20827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20828
20829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 -------------------------------------------------------------------------*/
20832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20833 ( NULL == pEventData->pEventData))
20834 {
20835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 }
20840
20841 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20842
20843 /*-------------------------------------------------------------------------
20844 Extract response and send it to UMAC
20845 -------------------------------------------------------------------------*/
20846
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 (wpt_uint8*)pEventData->pEventData,
20849 sizeof(hostResumeRspMsg));
20850
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 wdiResumeRspParams.wdiStatus =
20852 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020853
20854 /*Notify UMAC*/
20855 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20856
20857 return WDI_STATUS_SUCCESS;
20858}
20859
20860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020863
20864 @param pWDICtx: pointer to the WLAN DAL context
20865 pEventData: pointer to the event information structure
20866
Jeff Johnson295189b2012-06-20 16:38:30 -070020867 @see
20868 @return Result of the function call
20869*/
20870WDI_Status
20871WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020872(
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 WDI_ControlBlockType* pWDICtx,
20874 WDI_EventInfoType* pEventData
20875)
20876{
20877 WDI_Status wdiStatus;
20878 eHalStatus halStatus;
20879 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20881
20882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 -------------------------------------------------------------------------*/
20885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20886 ( NULL == pEventData->pEventData))
20887 {
20888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020893
20894 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020895
20896 /*-------------------------------------------------------------------------
20897 Extract response and send it to UMAC
20898 -------------------------------------------------------------------------*/
20899 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020901
20902 /*Notify UMAC*/
20903 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20904
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906}/*WDI_ProcessSetTxPerTrackingRsp*/
20907
20908/*==========================================================================
20909 Indications from HAL
20910 ==========================================================================*/
20911/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 indication of this kind is being received over the bus
20914 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020915
20916 @param pWDICtx: pointer to the WLAN DAL context
20917 pEventData: pointer to the event information structure
20918
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 @see
20920 @return Result of the function call
20921*/
20922WDI_Status
20923WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020924(
Jeff Johnson295189b2012-06-20 16:38:30 -070020925 WDI_ControlBlockType* pWDICtx,
20926 WDI_EventInfoType* pEventData
20927)
20928{
20929 WDI_LowLevelIndType wdiInd;
20930 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20932
20933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 -------------------------------------------------------------------------*/
20936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20937 ( NULL == pEventData->pEventData))
20938 {
20939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 }
20944
20945 /*-------------------------------------------------------------------------
20946 Extract indication and send it to UMAC
20947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20949 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 sizeof(tHalRSSINotification));
20951
20952 /*Fill in the indication parameters*/
20953 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20954 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20955 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20956 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20957 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20958 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20959 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20960 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20961 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20962 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20963 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20964 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20965 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020966 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20967 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020968
ltimariub77f24b2013-01-24 18:54:33 -080020969 if ( pWDICtx->wdiLowLevelIndCB )
20970 {
20971 /*Notify UMAC of indication*/
20972 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20973 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020974
20975 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020976}/*WDI_ProcessLowRSSIInd*/
20977
20978
20979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 an indication of this kind is being received over the
20982 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020983
20984 @param pWDICtx: pointer to the WLAN DAL context
20985 pEventData: pointer to the event information structure
20986
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 @see
20988 @return Result of the function call
20989*/
20990WDI_Status
20991WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020992(
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 WDI_ControlBlockType* pWDICtx,
20994 WDI_EventInfoType* pEventData
20995)
20996{
20997 WDI_Status wdiStatus;
20998 eHalStatus halStatus;
20999 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021000 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21002
21003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 -------------------------------------------------------------------------*/
21006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21007 ( NULL == pEventData->pEventData))
21008 {
21009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021013 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021014 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 /*-------------------------------------------------------------------------
21016 Extract indication and send it to UMAC
21017 -------------------------------------------------------------------------*/
21018 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21019 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021020 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
21022 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021024 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21025 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021026 if ( pWDICtx->wdiLowLevelIndCB )
21027 {
21028 /*Notify UMAC*/
21029 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21030 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021031
21032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033}/*WDI_ProcessMissedBeaconInd*/
21034
21035
21036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 an indication of this kind is being received over the
21039 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021040
21041 @param pWDICtx: pointer to the WLAN DAL context
21042 pEventData: pointer to the event information structure
21043
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 @see
21045 @return Result of the function call
21046*/
21047WDI_Status
21048WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021049(
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI_ControlBlockType* pWDICtx,
21051 WDI_EventInfoType* pEventData
21052)
21053{
21054 WDI_Status wdiStatus;
21055 eHalStatus halStatus;
21056 WDI_LowLevelIndType wdiInd;
21057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21058
21059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 -------------------------------------------------------------------------*/
21062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21063 ( NULL == pEventData->pEventData))
21064 {
21065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 }
21070
21071 /*-------------------------------------------------------------------------
21072 Extract indication and send it to UMAC
21073 -------------------------------------------------------------------------*/
21074 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21075 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021077
21078 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 /* ! TO DO - fill in from HAL struct:
21081 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21082
ltimariub77f24b2013-01-24 18:54:33 -080021083 if ( pWDICtx->wdiLowLevelIndCB )
21084 {
21085 /*Notify UMAC*/
21086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090}/*WDI_ProcessUnkAddrFrameInd*/
21091
21092
21093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 indication of this kind is being received over the bus
21096 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021097
21098 @param pWDICtx: pointer to the WLAN DAL context
21099 pEventData: pointer to the event information structure
21100
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 @see
21102 @return Result of the function call
21103*/
21104WDI_Status
21105WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021106(
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 WDI_ControlBlockType* pWDICtx,
21108 WDI_EventInfoType* pEventData
21109)
21110{
21111 WDI_LowLevelIndType wdiInd;
21112 tpSirMicFailureInd pHalMicFailureInd;
21113
21114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21115
21116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 -------------------------------------------------------------------------*/
21119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21120 ( NULL == pEventData->pEventData))
21121 {
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021127
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21129 /*-------------------------------------------------------------------------
21130 Extract indication and send it to UMAC
21131 -------------------------------------------------------------------------*/
21132
21133 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21136 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21137 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21138 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21139 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21140 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21141 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21142 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021147 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 pHalMicFailureInd->info.keyId;
21149 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21150 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21151 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21152 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021153
21154 if ( pWDICtx->wdiLowLevelIndCB )
21155 {
21156 /*Notify UMAC*/
21157 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021159
21160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021161}/*WDI_ProcessMicFailureInd*/
21162
21163
21164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 an indication of this kind is being received over the
21167 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021168
21169 @param pWDICtx: pointer to the WLAN DAL context
21170 pEventData: pointer to the event information structure
21171
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 @see
21173 @return Result of the function call
21174*/
21175WDI_Status
21176WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021177(
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 WDI_ControlBlockType* pWDICtx,
21179 WDI_EventInfoType* pEventData
21180)
21181{
21182 WDI_Status wdiStatus;
21183 eHalStatus halStatus;
21184 WDI_LowLevelIndType wdiInd;
21185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21186
21187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 -------------------------------------------------------------------------*/
21190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21191 ( NULL == pEventData->pEventData))
21192 {
21193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 }
21198
21199 /*-------------------------------------------------------------------------
21200 Extract indication and send it to UMAC
21201 -------------------------------------------------------------------------*/
21202
21203 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21204 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021206
21207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21208 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021209
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021211 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21212 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213
ltimariub77f24b2013-01-24 18:54:33 -080021214 if ( pWDICtx->wdiLowLevelIndCB )
21215 {
21216 /*Notify UMAC*/
21217 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21218 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021219
21220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021221}/*WDI_ProcessFatalErrorInd*/
21222
21223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021224 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 an indication of this kind is being received over the
21226 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021227
21228 @param pWDICtx: pointer to the WLAN DAL context
21229 pEventData: pointer to the event information structure
21230
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 @see
21232 @return Result of the function call
21233*/
21234WDI_Status
21235WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021236(
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 WDI_ControlBlockType* pWDICtx,
21238 WDI_EventInfoType* pEventData
21239)
21240{
21241 tDeleteStaContextParams halDelSTACtx;
21242 WDI_LowLevelIndType wdiInd;
21243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21244
21245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 -------------------------------------------------------------------------*/
21248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21249 ( NULL == pEventData->pEventData))
21250 {
21251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 }
21256
21257 /*-------------------------------------------------------------------------
21258 Extract indication and send it to UMAC
21259 -------------------------------------------------------------------------*/
21260
21261 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 wpalMemoryCopy( &halDelSTACtx,
21263 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 sizeof(halDelSTACtx));
21265
21266 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021268
21269 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21270 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21271 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21272 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21273
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021276 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021278 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21279 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021280
ltimariub77f24b2013-01-24 18:54:33 -080021281 if ( pWDICtx->wdiLowLevelIndCB )
21282 {
21283 /*Notify UMAC*/
21284 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21285 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021286
21287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021288}/*WDI_ProcessDelSTAInd*/
21289
21290/**
21291*@brief Process Coex Indication function (called when
21292 an indication of this kind is being received over the
21293 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021294
21295 @param pWDICtx: pointer to the WLAN DAL context
21296 pEventData: pointer to the event information structure
21297
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 @see
21299 @return Result of the function call
21300*/
21301WDI_Status
21302WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021303(
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 WDI_ControlBlockType* pWDICtx,
21305 WDI_EventInfoType* pEventData
21306)
21307{
21308 WDI_LowLevelIndType wdiInd;
21309 tCoexIndMsg halCoexIndMsg;
21310 wpt_uint32 index;
21311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21312
21313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 -------------------------------------------------------------------------*/
21316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21317 ( NULL == pEventData->pEventData ))
21318 {
21319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 }
21324
21325 /*-------------------------------------------------------------------------
21326 Extract indication and send it to UMAC
21327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21329 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 sizeof(halCoexIndMsg.coexIndParams) );
21331
21332 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wdiInd.wdiIndicationType = WDI_COEX_IND;
21334 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21336 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 }
21339
21340 // DEBUG
21341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21342 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21344 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21345 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21346 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21347 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021348
ltimariub77f24b2013-01-24 18:54:33 -080021349 if ( pWDICtx->wdiLowLevelIndCB )
21350 {
21351 /*Notify UMAC*/
21352 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21353 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021354
21355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356}/*WDI_ProcessCoexInd*/
21357
21358/**
21359*@brief Process Tx Complete Indication function (called when
21360 an indication of this kind is being received over the
21361 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021362
21363 @param pWDICtx: pointer to the WLAN DAL context
21364 pEventData: pointer to the event information structure
21365
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 @see
21367 @return Result of the function call
21368*/
21369WDI_Status
21370WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021371(
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 WDI_ControlBlockType* pWDICtx,
21373 WDI_EventInfoType* pEventData
21374)
21375{
21376 WDI_LowLevelIndType wdiInd;
21377 tTxComplIndMsg halTxComplIndMsg;
21378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21379
21380 /*-------------------------------------------------------------------------
21381 Sanity check
21382 -------------------------------------------------------------------------*/
21383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21384 ( NULL == pEventData->pEventData ))
21385 {
21386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 WDI_ASSERT( 0 );
21389 return WDI_STATUS_E_FAILURE;
21390 }
21391
21392 /*-------------------------------------------------------------------------
21393 Extract indication and send it to UMAC
21394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21396 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 sizeof(halTxComplIndMsg.txComplParams) );
21398
21399 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21401 wdiInd.wdiIndicationData.tx_complete_status
21402 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021403
ltimariub77f24b2013-01-24 18:54:33 -080021404 if ( pWDICtx->wdiLowLevelIndCB )
21405 {
21406 /*Notify UMAC*/
21407 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21408 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021409
21410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021411}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021412#ifdef FEATURE_WLAN_TDLS
21413/**
21414*@brief Process TDLS Indication function (called when
21415 an indication of this kind is being received over the
21416 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021417
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021418 @param pWDICtx: pointer to the WLAN DAL context
21419 pEventData: pointer to the event information structure
21420
21421 @see
21422 @return Result of the function call
21423*/
21424WDI_Status
21425WDI_ProcessTdlsInd
21426(
21427 WDI_ControlBlockType* pWDICtx,
21428 WDI_EventInfoType* pEventData
21429)
21430{
21431 WDI_LowLevelIndType wdiInd;
21432 tTdlsIndMsg halTdlsIndMsg;
21433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21434
21435 /*-------------------------------------------------------------------------
21436 Sanity check
21437 -------------------------------------------------------------------------*/
21438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21439 ( NULL == pEventData->pEventData ))
21440 {
21441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21442 "%s: Invalid parameters", __func__);
21443 WDI_ASSERT( 0 );
21444 return WDI_STATUS_E_FAILURE;
21445 }
21446
21447 /*-------------------------------------------------------------------------
21448 Extract indication and send it to UMAC
21449 -------------------------------------------------------------------------*/
21450 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21451 pEventData->pEventData,
21452 sizeof(halTdlsIndMsg.tdlsIndParams) );
21453
21454 /*Fill in the indication parameters*/
21455 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21456
21457 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21458 = halTdlsIndMsg.tdlsIndParams.status;
21459
21460 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21461 = halTdlsIndMsg.tdlsIndParams.staIdx;
21462
21463 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21464 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21465
Atul Mittalbb2aad02014-09-22 19:09:36 +053021466 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21467 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021468 /*Notify UMAC*/
21469 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21470
21471 return WDI_STATUS_SUCCESS;
21472}/*WDI_ProcessTdlsInd*/
21473#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021474/**
Viral Modid86bde22012-12-10 13:09:21 -080021475*@brief Process Noa Start Indication function (called when
21476 an indication of this kind is being received over the
21477 bus from HAL)
21478
21479 @param pWDICtx: pointer to the WLAN DAL context
21480 pEventData: pointer to the event information structure
21481
21482 @see
21483 @return Result of the function call
21484*/
21485WDI_Status
21486WDI_ProcessP2pNoaStartInd
21487(
21488 WDI_ControlBlockType* pWDICtx,
21489 WDI_EventInfoType* pEventData
21490)
21491{
21492 WDI_LowLevelIndType wdiInd;
21493 tNoaStartIndMsg halNoaStartIndMsg;
21494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21495
21496 /*-------------------------------------------------------------------------
21497 Sanity check
21498 -------------------------------------------------------------------------*/
21499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21500 ( NULL == pEventData->pEventData ))
21501 {
21502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21503 "%s: Invalid parameters", __func__);
21504 WDI_ASSERT( 0 );
21505 return WDI_STATUS_E_FAILURE;
21506 }
21507
21508 /*-------------------------------------------------------------------------
21509 Extract indication and send it to UMAC
21510 -------------------------------------------------------------------------*/
21511 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21512 pEventData->pEventData,
21513 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21514
21515 /*Fill in the indication parameters*/
21516 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21517
21518 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21519 = halNoaStartIndMsg.noaStartIndParams.status;
21520
21521 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21522 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21523
21524 /*Notify UMAC*/
21525 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21526
21527 return WDI_STATUS_SUCCESS;
21528}/*WDI_ProcessNoaAttrInd*/
21529
21530/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021531*@brief Process Noa Attr Indication function (called when
21532 an indication of this kind is being received over the
21533 bus from HAL)
21534
21535 @param pWDICtx: pointer to the WLAN DAL context
21536 pEventData: pointer to the event information structure
21537
21538 @see
21539 @return Result of the function call
21540*/
21541WDI_Status
21542WDI_ProcessP2pNoaAttrInd
21543(
21544 WDI_ControlBlockType* pWDICtx,
21545 WDI_EventInfoType* pEventData
21546)
21547{
21548 WDI_LowLevelIndType wdiInd;
21549 tNoaAttrIndMsg halNoaAttrIndMsg;
21550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21551
21552 /*-------------------------------------------------------------------------
21553 Sanity check
21554 -------------------------------------------------------------------------*/
21555 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21556 ( NULL == pEventData->pEventData ))
21557 {
21558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 WDI_ASSERT( 0 );
21561 return WDI_STATUS_E_FAILURE;
21562 }
21563
21564 /*-------------------------------------------------------------------------
21565 Extract indication and send it to UMAC
21566 -------------------------------------------------------------------------*/
21567 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21568 pEventData->pEventData,
21569 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21570
21571 /*Fill in the indication parameters*/
21572 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021573
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21575 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021576
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21578 = halNoaAttrIndMsg.noaAttrIndParams.index;
21579 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21580 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21581 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21582 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021583
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21585 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21586 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21587 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21588 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21589 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21590 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21591 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021592
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21594 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21595 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21596 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21597 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21598 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21599 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21600 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21601
ltimariub77f24b2013-01-24 18:54:33 -080021602 if ( pWDICtx->wdiLowLevelIndCB )
21603 {
21604 /*Notify UMAC*/
21605 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21606 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021607
21608 return WDI_STATUS_SUCCESS;
21609}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021610
21611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 an indication of this kind is being received over the
21614 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021615
21616 @param pWDICtx: pointer to the WLAN DAL context
21617 pEventData: pointer to the event information structure
21618
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 @see
21620 @return Result of the function call
21621*/
21622WDI_Status
21623WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021624(
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 WDI_ControlBlockType* pWDICtx,
21626 WDI_EventInfoType* pEventData
21627)
21628{
21629 WDI_LowLevelIndType wdiInd;
21630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021631
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 /*-------------------------------------------------------------------------
21633 Extract indication and send it to UMAC
21634 -------------------------------------------------------------------------*/
21635 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21637
ltimariub77f24b2013-01-24 18:54:33 -080021638 if ( pWDICtx->wdiLowLevelIndCB )
21639 {
21640 /*Notify UMAC*/
21641 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21642 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021643
Jeff Johnsone7245742012-09-05 17:12:55 -070021644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021645}/*WDI_ProcessTxPerHitInd*/
21646
Jeff Johnson295189b2012-06-20 16:38:30 -070021647/**
Yue Mab9c86f42013-08-14 15:59:08 -070021648 @brief Process Periodic Tx Pattern Fw Indication function
21649
21650 @param pWDICtx: pointer to the WLAN DAL context
21651 pEventData: pointer to the event information structure
21652
21653 @see
21654 @return Result of the function call
21655*/
21656WDI_Status
21657WDI_ProcessPeriodicTxPtrnFwInd
21658(
21659 WDI_ControlBlockType* pWDICtx,
21660 WDI_EventInfoType* pEventData
21661)
21662{
21663 WDI_LowLevelIndType wdiInd;
21664
21665 /*-------------------------------------------------------------------------
21666 Sanity check
21667 -------------------------------------------------------------------------*/
21668 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21669 (NULL == pEventData->pEventData))
21670 {
21671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21672 "%s: Invalid parameters", __func__);
21673 WDI_ASSERT(0);
21674 return WDI_STATUS_E_FAILURE;
21675 }
21676
21677 /*-------------------------------------------------------------------------
21678 Extract indication and send it to UMAC
21679 -------------------------------------------------------------------------*/
21680 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21681 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21682 sizeof(tHalPeriodicTxPtrnFwInd));
21683
21684 if (pWDICtx->wdiLowLevelIndCB)
21685 {
21686 /*Notify UMAC*/
21687 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21688 }
21689
21690 return WDI_STATUS_SUCCESS;
21691}
21692
21693/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 @brief WDI_ProcessFTMCommandReq
21695 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021696
21697 @param pWDICtx: pointer to the WLAN DAL context
21698 pEventData: pointer to the event information structure
21699
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 @see
21701 @return Result of the function call
21702*/
21703WDI_Status
21704WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021705(
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 WDI_ControlBlockType* pWDICtx,
21707 WDI_EventInfoType* pEventData
21708)
21709{
21710 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21711 wpt_uint8 *ftmCommandBuffer = NULL;
21712 wpt_uint16 dataOffset;
21713 wpt_uint16 bufferSize;
21714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 -------------------------------------------------------------------------*/
21717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21718 ( NULL == pEventData->pEventData))
21719
21720 {
21721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 }
21726
21727 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21728
21729 /* Get MSG Buffer */
21730 WDI_GetMessageBuffer(pWDICtx,
21731 WDI_FTM_CMD_REQ,
21732 ftmCommandReq->bodyLength,
21733 &ftmCommandBuffer,
21734 &dataOffset,
21735 &bufferSize);
21736
21737 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21738 ftmCommandReq->FTMCommandBody,
21739 ftmCommandReq->bodyLength);
21740
21741 /* Send MSG */
21742 return WDI_SendMsg(pWDICtx,
21743 ftmCommandBuffer,
21744 bufferSize,
21745 pEventData->pCBfnc,
21746 pEventData->pUserData,
21747 WDI_FTM_CMD_RESP);
21748}
21749
21750/**
21751 @brief WDI_ProcessFTMCommandRsp
21752 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021753
21754 @param pWDICtx: pointer to the WLAN DAL context
21755 pEventData: pointer to the event information structure
21756
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 @see
21758 @return Result of the function call
21759*/
21760WDI_Status
21761WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021762(
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 WDI_ControlBlockType* pWDICtx,
21764 WDI_EventInfoType* pEventData
21765)
21766{
21767 WDI_FTMCommandRspCb ftmCMDRspCb;
21768 tProcessPttRspParams *ftmCMDRspData = NULL;
21769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21770
21771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 -------------------------------------------------------------------------*/
21774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21775 ( NULL == pEventData->pEventData))
21776 {
21777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 }
21782
21783 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21784
21785 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21786
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21788 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21790
21791 /*Notify UMAC*/
21792 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21793
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021795}
Jeff Johnson295189b2012-06-20 16:38:30 -070021796/**
21797 @brief WDI_ProcessHalDumpCmdReq
21798 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021799
21800 @param pWDICtx: pointer to the WLAN DAL context
21801 pEventData: pointer to the event information structure
21802
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 @see
21804 @return Result of the function call
21805*/
21806WDI_Status
21807WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021808(
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 WDI_ControlBlockType* pWDICtx,
21810 WDI_EventInfoType* pEventData
21811)
21812{
21813 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21814 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21815 wpt_uint16 usDataOffset = 0;
21816 wpt_uint16 usSendSize = 0;
21817 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819
21820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 -------------------------------------------------------------------------*/
21823 if (( NULL == pEventData ) ||
21824 ( NULL == pEventData->pEventData) ||
21825 ( NULL == pEventData->pCBfnc ))
21826 {
21827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 }
21832
21833 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21834 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21835
21836 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021847
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 /*-----------------------------------------------------------------------
21849 Get message buffer
21850 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21853 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021854 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021855 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21856 {
21857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021858 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021859 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 }
21863
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 wpalMemoryCopy( pSendBuffer+usDataOffset,
21865 &halDumpCmdReqMsg.dumpCmdReqParams,
21866 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021867
21868 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021869 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021870
21871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21875 wdiHALDumpCmdRspCb, pEventData->pUserData,
21876 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021877}
21878
21879/**
21880 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021881 Process hal Dump Command Response from HAL, simply route to HDD
21882
21883 @param pWDICtx: pointer to the WLAN DAL context
21884 pEventData: pointer to the event information structure
21885
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 @see
21887 @return Result of the function call
21888*/
21889WDI_Status
21890WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021891(
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 WDI_ControlBlockType* pWDICtx,
21893 WDI_EventInfoType* pEventData
21894)
21895{
21896 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021897 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21899
21900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 -------------------------------------------------------------------------*/
21903 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21904 ( NULL == pEventData->pEventData))
21905 {
21906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 }
21911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
21914 /*Initialize the WDI Response structure */
21915 wdiHALDumpCmdRsp.usBufferLen = 0;
21916 wdiHALDumpCmdRsp.pBuffer = NULL;
21917
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021918 wpalMemoryCopy( &halDumpCmdRspParams,
21919 pEventData->pEventData,
21920 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021921
21922 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021923 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021924
21925 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021926 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 {
21928 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021929 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21930 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21931
21932 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21933 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021934 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021936
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 /*Notify UMAC*/
21938 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21939
21940 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21941 {
21942 /* Free the allocated buffer */
21943 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21944 }
21945 return WDI_STATUS_SUCCESS;
21946}
21947
21948/*==========================================================================
21949 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021950
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021953==========================================================================*/
21954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 when it wishes to send up a notification like the ones
21957 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021958
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021960
21961 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 wctsNotifyCBData: the callback data of the user
21964
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021966
21967 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021968*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021969void
Jeff Johnson295189b2012-06-20 16:38:30 -070021970WDI_NotifyMsgCTSCB
21971(
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 WCTS_NotifyEventType wctsEvent,
21974 void* wctsNotifyCBData
21975)
21976{
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21979
21980 if (NULL == pWDICtx )
21981 {
21982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 }
21987
21988 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21989 {
21990 /* callback presumably occurred after close */
21991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021992 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 }
21995
21996 if ( WCTS_EVENT_OPEN == wctsEvent )
21997 {
21998 /*Flag must be set atomically as it is checked from incoming request
21999 functions*/
22000 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022002
22003 /*Nothing to do - so try to dequeue any pending request that may have
22004 occurred while we were trying to establish this*/
22005 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 {
22010 /*Flag must be set atomically as it is checked from incoming request
22011 functions*/
22012 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022014
22015 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 wpalMutexRelease(&pWDICtx->wptMutex);
22018
22019 /*Notify that the Control Channel is closed */
22020 wpalEventSet(&pWDICtx->wctsActionEvent);
22021 }
22022
22023}/*WDI_NotifyMsgCTSCB*/
22024
22025
22026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 when it wishes to send up a packet received over the
22029 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022030
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022032
22033 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 pMsg: the packet
22035 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 wctsRxMsgCBData: the callback data of the user
22037
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022039
22040 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022041*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022042void
22043WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022044(
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 void* pMsg,
22047 wpt_uint32 uLen,
22048 void* wctsRxMsgCBData
22049)
22050{
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 tHalMsgHeader *pHalMsgHeader;
22052 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22055
22056 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 ( uLen < sizeof(tHalMsgHeader)))
22061 {
22062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 }
22067
22068 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22069 {
22070 /* callback presumably occurred after close */
22071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022072 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 }
22075
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 context - so no serialization is necessary here
22078 ! - revisit this assumption */
22079
22080 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22081
22082 if ( uLen != pHalMsgHeader->msgLen )
22083 {
22084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22085 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022087 wpalWlanReload();
22088
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 }
22091
22092 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22093
22094 /*The message itself starts after the header*/
22095 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22096 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22097 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22098 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22099
22100
22101 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22102 {
22103 /*Stop the timer as the response was received */
22104 /*!UT - check for potential race conditions between stop and response */
22105 wpalTimerStop(&pWDICtx->wptResponseTimer);
22106 }
22107 /* Check if we receive a response message which is not expected */
22108 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22109 {
22110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22111 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22112 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22115 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022116
22117 if (gWDICb.bEnableSSR == false)
22118 {
22119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22120 "SSR is not enabled on WDI timeout");
22121 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22122 return;
22123 }
22124 wpalWcnssResetIntr();
22125 /* if this timer fires, it means Riva did not receive the FIQ */
22126 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22127
Jeff Johnson295189b2012-06-20 16:38:30 -070022128 return;
22129 }
22130
22131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22132 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22133
22134 /*Post response event to the state machine*/
22135 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22136
22137}/*WDI_RXMsgCTSCB*/
22138
22139
22140/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022142========================================================================*/
22143
22144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022146 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022147
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 @param pWDICtx - pointer to the control block
22149
22150 @return Result of the function call
22151*/
22152WPT_INLINE WDI_Status
22153WDI_CleanCB
22154(
22155 WDI_ControlBlockType* pWDICtx
22156)
22157{
22158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22159
22160 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022162
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22165 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22166
22167 WDI_ResetAssocSessions( pWDICtx );
22168
22169 return WDI_STATUS_SUCCESS;
22170}/*WDI_CleanCB*/
22171
22172
22173/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022174 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022175
Jeff Johnsone7245742012-09-05 17:12:55 -070022176
22177 @param pWDICtx: pointer to the WLAN DAL context
22178 pEventData: pointer to the event information structure
22179
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 @see
22181 @return Result of the function call
22182*/
22183WPT_INLINE WDI_Status
22184WDI_ProcessRequest
22185(
22186 WDI_ControlBlockType* pWDICtx,
22187 WDI_EventInfoType* pEventData
22188)
22189{
22190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22191
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 already checked these pointers*/
22194
22195 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22196 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022199 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 WDI_getReqMsgString(pEventData->wdiRequest),
22201 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22202 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22203 }
22204 else
22205 {
22206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 pEventData->wdiRequest);
22209 return WDI_STATUS_E_NOT_IMPLEMENT;
22210 }
22211}/*WDI_ProcessRequest*/
22212
22213
22214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 prefixes it with a send message header
22218
22219 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 wdiReqType: type of the request being sent
22221 uBufferLen: message buffer len
22222 pMsgBuffer: resulting allocated buffer
22223 pusDataOffset: offset in the buffer where the caller
22224 can start copying its message data
22225 puBufferSize: the resulting buffer size (offset+buff
22226 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022227
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 @see
22229 @return Result of the function call
22230*/
22231WDI_Status
22232WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022233(
22234 WDI_ControlBlockType* pWDICtx,
22235 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 wpt_uint8** pMsgBuffer,
22238 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 wpt_uint16* pusBufferSize
22240)
22241{
22242 tHalMsgHeader halMsgHeader;
22243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22244
Jeff Johnsone7245742012-09-05 17:12:55 -070022245 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 again*/
22247
22248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22253 if ( NULL == *pMsgBuffer )
22254 {
22255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22256 "Unable to allocate message buffer for req %s (%d)",
22257 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 }
22262
22263 /*-------------------------------------------------------------------------
22264 Fill in the message header
22265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22267 /* Fill msgVersion */
22268#ifdef WLAN_FEATURE_11AC
22269 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022270 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 else
22272#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022273 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274
Jeff Johnsone7245742012-09-05 17:12:55 -070022275 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22276 *pusDataOffset = sizeof(halMsgHeader);
22277 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22278
22279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022280}/*WDI_GetMessageBuffer*/
22281
22282
22283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022284 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 the CB
22287
22288 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022290
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 usSendSize size of the buffer to be sent
22292 pRspCb: response callback - save in the WDI
22293 CB
22294 pUserData: user data associated with the
22295 callback
22296 wdiExpectedResponse: the code of the response that is
22297 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022298
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 @see
22300 @return Result of the function call
22301*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022302WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022303WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022304(
22305 WDI_ControlBlockType* pWDICtx,
22306 wpt_uint8* pSendBuffer,
22307 wpt_uint32 usSendSize,
22308 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 void* pUserData,
22310 WDI_ResponseEnumType wdiExpectedResponse
22311)
22312{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022313 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022314 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22316
22317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 ------------------------------------------------------------------------*/
22320 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022321 pWDICtx->pfncRspCB = pRspCb;
22322 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022323
22324 /*-----------------------------------------------------------------------
22325 Call the CTS to send this message over - free message afterwards
22326 - notify transport failure
22327 Note: CTS is reponsible for freeing the message buffer.
22328 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022329 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22330 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22331 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022332 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022334 "Failed to send message with expected response %s (%d)"
22335 " over the bus - catastrophic failure",
22336 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22337 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022338
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022339 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22340 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022342 else
22343 {
22344 /* even when message was placed in CTS deferred Q, we will treat it
22345 success but log this info
22346 */
22347 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22348 {
22349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22350 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22351 "response %s (%d)",
22352 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22353 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022354 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022355 }
22356 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022357
Jeff Johnsond13512a2012-07-17 11:42:19 -070022358 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022359 if ( NULL != pWDICtx->wdiReqStatusCB )
22360 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022361 /*Inform originator whether request went through or not*/
22362 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22363 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 pWDICtx->wdiReqStatusCB = NULL;
22365 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022366 callback(wdiStatus, callbackContext);
22367
22368 /*For WDI requests which have registered a request callback,
22369 inform the WDA caller of the same via setting the return value
22370 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22371 end up repeating the functonality in the req callback for the
22372 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022373 if (wdiStatus != WDI_STATUS_SUCCESS)
22374 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022375 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022376 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 }
22378
Jeff Johnsond13512a2012-07-17 11:42:19 -070022379 if ( wdiStatus == WDI_STATUS_SUCCESS )
22380 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 /*Start timer for the expected response */
22382 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022383
22384 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022385 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022386 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022387 }
22388 else
22389 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022390 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022391 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22392 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022393
Jeff Johnsond13512a2012-07-17 11:42:19 -070022394 return wdiStatus;
22395
Jeff Johnson295189b2012-06-20 16:38:30 -070022396}/*WDI_SendMsg*/
22397
22398
22399
22400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 the bus using the control transport and saves some info
22403 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022404
22405 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 pSendBuffer: buffer to be sent
22407 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022408
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 @see
22410 @return Result of the function call
22411*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022412WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022413WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022414(
22415 WDI_ControlBlockType* pWDICtx,
22416 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 wpt_uint32 usSendSize
22418)
22419{
22420 wpt_uint32 uStatus ;
22421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22422
22423 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 Note: CTS is reponsible for freeing the message buffer.
22426 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 (void*)pSendBuffer, usSendSize );
22429
22430 /*Inform Upper MAC about the outcome of the request*/
22431 if ( NULL != pWDICtx->wdiReqStatusCB )
22432 {
22433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22434 "Send indication status : %d", uStatus);
22435
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022436 /* even if CTS placed indication into its deferred Q, we treat it
22437 * as success and let CTS drain its queue as per smd interrupt to CTS
22438 */
22439 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 -070022440 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 }
22442
22443 /*If sending of the message failed - it is considered catastrophic and
22444 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022445 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22446 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22447
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 {
22449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022451
22452 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22453 return WDI_STATUS_E_FAILURE;
22454 }
22455
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022457}/*WDI_SendIndication*/
22458
22459
22460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 @brief WDI_DetectedDeviceError - called internally by DAL when
22462 it has detected a failure in the device
22463
22464 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 usErrorCode: error code detected by WDI or received
22466 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022470*/
22471void
22472WDI_DetectedDeviceError
22473(
22474 WDI_ControlBlockType* pWDICtx,
22475 wpt_uint16 usErrorCode
22476)
22477{
22478 WDI_LowLevelIndType wdiInd;
22479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22480
22481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22482 "Device Error detected code: %d - transitioning to stopped state",
22483 usErrorCode);
22484
Katya Nigamf02ad012014-05-05 16:12:49 +053022485 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22486
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 wpalMutexAcquire(&pWDICtx->wptMutex);
22488
22489 WDI_STATableStop(pWDICtx);
22490
22491 WDI_ResetAssocSessions(pWDICtx);
22492
22493 /*Set the expected state transition to stopped - because the device
22494 experienced a failure*/
22495 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22496
22497 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022499
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022501
22502 /*TO DO: - there should be an attempt to reset the device here*/
22503
22504 wpalMutexRelease(&pWDICtx->wptMutex);
22505
22506 /*------------------------------------------------------------------------
22507 Notify UMAC if a handler is registered
22508 ------------------------------------------------------------------------*/
22509 if (pWDICtx->wdiLowLevelIndCB)
22510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22512 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022513
22514 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22515 }
22516}/*WDI_DetectedDeviceError*/
22517
22518/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 we started on send message has expire - this should
22521 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 reply - trigger catastrophic failure
22523 @param
22524
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022526
22527 @see
22528 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022529*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022530void
Jeff Johnson295189b2012-06-20 16:38:30 -070022531WDI_ResponseTimerCB
22532(
22533 void *pUserData
22534)
22535{
22536 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22538
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022539 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022540 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 }
22546
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022547 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022548 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022549 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022550
22551 /* If response timer is running at this time that means this timer
22552 * event is not for the last request but rather last-to-last request and
22553 * this timer event has come after we recevied respone for last-to-last
22554 * message
22555 */
22556 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22557 {
22558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22559 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022560 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022561 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22563 "uArchTimeStampTmrStart: %llu seconds, "
22564 "uArchTimeStampTmrExp: %llu seconds",
22565 pWDICtx->uArchTimeStampRspTmrStart,
22566 pWDICtx->uArchTimeStampRspTmrExp);
22567
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022568 return;
22569 }
22570
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022571 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 {
22573
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022576 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022578 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22579 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22581 "uArchTimeStampTmrStart: %llu seconds, "
22582 "uArchTimeStampTmrExp: %llu seconds",
22583 pWDICtx->uArchTimeStampRspTmrStart,
22584 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022585
22586 /* WDI timeout means Riva is not responding or SMD communication to Riva
22587 * is not happening. The only possible way to recover from this error
22588 * is to initiate SSR from APPS.
22589 * There is also an option to re-enable wifi, which will eventually
22590 * trigger SSR
22591 */
22592 if (gWDICb.bEnableSSR == false)
22593 {
22594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22595 "SSR is not enabled on WDI timeout");
22596 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22597 return;
22598 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022599#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022600 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022601 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022602 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022603 if(wpalIsSsrPanicOnFailure())
22604 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022605 } else {
22606 /* if this timer fires, it means Riva did not receive the FIQ */
22607 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022608 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022609#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022610 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22611 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022612#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 }
22614 else
22615 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022617 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022618 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022619 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22620 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22622 "uArchTimeStampTmrStart: %llu seconds, "
22623 "uArchTimeStampTmrExp: %llu seconds",
22624 pWDICtx->uArchTimeStampRspTmrStart,
22625 pWDICtx->uArchTimeStampRspTmrExp);
22626
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 }
22628
22629 return;
22630
22631}/*WDI_ResponseTimerCB*/
22632
22633
22634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022636
Jeff Johnsone7245742012-09-05 17:12:55 -070022637
22638 @param pWDICtx: pointer to the WLAN DAL context
22639 pEventData: pointer to the event information structure
22640
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 @see
22642 @return Result of the function call
22643*/
22644WPT_INLINE WDI_Status
22645WDI_ProcessResponse
22646(
22647 WDI_ControlBlockType* pWDICtx,
22648 WDI_EventInfoType* pEventData
22649)
22650{
22651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22652
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 already checked these pointers
22655 ! - revisit this assumption */
22656 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22657 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022660 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 WDI_getRespMsgString(pEventData->wdiResponse),
22662 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22663 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22664 }
22665 else
22666 {
22667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022668 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022669 pEventData->wdiResponse);
22670 return WDI_STATUS_E_NOT_IMPLEMENT;
22671 }
22672}/*WDI_ProcessResponse*/
22673
22674
22675/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022677=========================================================================*/
22678
22679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 @brief Utility function used by the DAL Core to help queue a
22681 request that cannot be processed right away.
22682 @param
22683
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 pWDICtx: - pointer to the WDI control block
22685 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022686 queued
22687
22688 @see
22689 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022690*/
22691WDI_Status
22692WDI_QueuePendingReq
22693(
22694 WDI_ControlBlockType* pWDICtx,
22695 WDI_EventInfoType* pEventData
22696)
22697{
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22702
22703 if ( NULL == pEventDataQueue )
22704 {
22705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 WDI_ASSERT(0);
22708 return WDI_STATUS_MEM_FAILURE;
22709 }
22710
22711 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22712 pEventDataQueue->pUserData = pEventData->pUserData;
22713 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22714 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716
22717 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22718 {
22719 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022720
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 if ( NULL == pEventInfo )
22722 {
22723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 WDI_ASSERT(0);
22726 wpalMemoryFree(pEventDataQueue);
22727 return WDI_STATUS_MEM_FAILURE;
22728 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022729
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22731
22732 }
22733 pEventDataQueue->pEventData = pEventInfo;
22734
22735 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022738 if (eWLAN_PAL_STATUS_E_FAILURE ==
22739 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22740 {
22741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22742 "pEventDataQueue wpal_list_insert_back failed");
22743 WDI_ASSERT(0);
22744 wpalMemoryFree(pEventDataQueue);
22745 wpalMemoryFree(pEventInfo);
22746 return WDI_STATUS_MEM_FAILURE;
22747 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022748
22749 return WDI_STATUS_SUCCESS;
22750}/*WDI_QueuePendingReq*/
22751
22752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 @param
22756
22757 pMsg - pointer to the message
22758
22759 @see
22760 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022761*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022762void
Jeff Johnson295189b2012-06-20 16:38:30 -070022763WDI_PALCtrlMsgCB
22764(
22765 wpt_msg *pMsg
22766)
22767{
22768 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 WDI_ControlBlockType* pWDICtx = NULL;
22770 WDI_Status wdiStatus;
22771 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 void* pUserData;
22773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22774
22775 if (( NULL == pMsg )||
22776 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22777 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22778 {
22779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 }
22784
22785 /*Transition back to the state that we had before serialization
22786 - serialization transitions us to BUSY to stop any incomming requests
22787 ! TO DO L: possible race condition here if a request comes in between the
22788 state transition and the post function*/
22789
Jeff Johnsone7245742012-09-05 17:12:55 -070022790 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022791
22792 /*-----------------------------------------------------------------------
22793 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 -----------------------------------------------------------------------*/
22796 switch ( pEventData->wdiRequest )
22797 {
22798
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22801 break;
22802
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 case WDI_NV_DOWNLOAD_REQ:
22804 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22805 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22806 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22807 {
22808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022809 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22811 }
22812 else
22813 {
22814 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22815 }
22816
22817 break;
22818
22819 default:
22820 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22821 break;
22822 }/*switch ( pEventData->wdiRequest )*/
22823
22824 if ( WDI_STATUS_SUCCESS != wdiStatus )
22825 {
22826 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22827
22828 if ( NULL != pfnReqStatusCB )
22829 {
22830 /*Fail the request*/
22831 pfnReqStatusCB( wdiStatus, pUserData);
22832 }
22833 }
22834
22835 /* Free data - that was allocated when queueing*/
22836 if( pEventData != NULL )
22837 {
22838 if( pEventData->pEventData != NULL )
22839 {
22840 wpalMemoryFree(pEventData->pEventData);
22841 }
22842 wpalMemoryFree(pEventData);
22843 }
22844
22845 if( pMsg != NULL )
22846 {
22847 wpalMemoryFree(pMsg);
22848 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022849
Jeff Johnson295189b2012-06-20 16:38:30 -070022850}/*WDI_PALCtrlMsgCB*/
22851
22852/**
22853 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 and schedule for execution a pending request
22855 @param
22856
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 pWDICtx: - pointer to the WDI control block
22858 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 queued
22860
22861 @see
22862 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022863*/
22864WDI_Status
22865WDI_DequeuePendingReq
22866(
22867 WDI_ControlBlockType* pWDICtx
22868)
22869{
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022872 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22874
Jeff Johnsone7245742012-09-05 17:12:55 -070022875 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022876
22877 if ( NULL == pNode )
22878 {
22879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022880 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 return WDI_STATUS_SUCCESS;
22882 }
22883
22884 /*The node actually points to the 1st element inside the Event Data struct -
22885 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022887
22888 /*Serialize processing in the control thread
22889 !TO DO: - check to see if these are all the messages params that need
22890 to be filled in*/
22891 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22892
22893 if ( NULL == palMsg )
22894 {
22895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022896 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022901 palMsg->callback = WDI_PALCtrlMsgCB;
22902 palMsg->ptr = pEventData;
22903
22904 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022906 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022907
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 /*Transition back to BUSY as we need to handle a queued request*/
22909 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022910
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22912
22913 return WDI_STATUS_PENDING;
22914}/*WDI_DequeuePendingReq*/
22915
22916
22917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022919 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022920 away.- The assoc requests will be queued by BSSID
22921 @param
22922
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 pWDICtx: - pointer to the WDI control block
22924 pEventData: pointer to the evnt info that needs to be queued
22925 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022926
22927 @see
22928 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022929*/
22930WDI_Status
22931WDI_QueueNewAssocRequest
22932(
22933 WDI_ControlBlockType* pWDICtx,
22934 WDI_EventInfoType* pEventData,
22935 wpt_macAddr macBSSID
22936)
22937{
Jeff Johnsone7245742012-09-05 17:12:55 -070022938 wpt_uint8 i;
22939 WDI_BSSSessionType* pSession = NULL;
22940 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022942 void* pEventInfo;
22943 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022945
Jeff Johnsone7245742012-09-05 17:12:55 -070022946
22947 /*------------------------------------------------------------------------
22948 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 ------------------------------------------------------------------------*/
22950 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22951 {
22952 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22953 {
22954 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 pSession = &pWDICtx->aBSSSessions[i];
22956 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 }
22958 }
22959
22960 if ( i >= WDI_MAX_BSS_SESSIONS )
22961 {
22962 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022964 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022965
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 /*------------------------------------------------------------------------
22967 Fill in the BSSID for this session and set the usage flag
22968 ------------------------------------------------------------------------*/
22969 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022970 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022971
22972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 ------------------------------------------------------------------------*/
22975 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22976 if ( NULL == pEventDataQueue )
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 queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 WDI_ASSERT(0);
22981 return WDI_STATUS_MEM_FAILURE;
22982 }
22983
22984 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22985 if ( NULL == pSessionIdElement )
22986 {
22987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022988 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022989 WDI_ASSERT(0);
22990 wpalMemoryFree(pEventDataQueue);
22991 return WDI_STATUS_MEM_FAILURE;
22992 }
22993
22994 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22995 if ( NULL == pEventInfo )
22996 {
22997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022998 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 WDI_ASSERT(0);
23000 wpalMemoryFree(pSessionIdElement);
23001 wpalMemoryFree(pEventDataQueue);
23002 return WDI_STATUS_MEM_FAILURE;
23003 }
23004
23005 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23006 pEventDataQueue->pUserData = pEventData->pUserData;
23007 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23008 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023010
23011 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23012 pEventDataQueue->pEventData = pEventInfo;
23013
23014 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016
23017 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023019
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023020 if (eWLAN_PAL_STATUS_E_FAILURE ==
23021 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23022 {
23023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23024 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23025 WDI_ASSERT(0);
23026 wpalMemoryFree(pSessionIdElement);
23027 wpalMemoryFree(pEventDataQueue);
23028 wpalMemoryFree(pEventInfo);
23029 return WDI_STATUS_MEM_FAILURE;
23030 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023031
23032 /*We need to maintain a separate list that keeps track of the order in which
23033 the new assoc requests are being queued such that we can start processing
23034 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 pSessionIdElement->ucIndex = i;
23036 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023037
23038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23039 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023040 if (eWLAN_PAL_STATUS_E_FAILURE ==
23041 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23042 {
23043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23044 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23045 WDI_ASSERT(0);
23046 wpalMemoryFree(pSessionIdElement);
23047 wpalMemoryFree(pEventDataQueue);
23048 wpalMemoryFree(pEventInfo);
23049 return WDI_STATUS_MEM_FAILURE;
23050 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023051
23052 /*Return pending as this is what the status of the request is since it has
23053 been queued*/
23054 return WDI_STATUS_PENDING;
23055}/*WDI_QueueNewAssocRequest*/
23056
23057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 away.- The assoc requests will be queued by BSSID
23061 @param
23062
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 pWDICtx: - pointer to the WDI control block
23064 pSession: - session in which to queue
23065 pEventData: pointer to the event info that needs to be
23066 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023067
23068 @see
23069 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023070*/
23071WDI_Status
23072WDI_QueueAssocRequest
23073(
23074 WDI_ControlBlockType* pWDICtx,
23075 WDI_BSSSessionType* pSession,
23076 WDI_EventInfoType* pEventData
23077)
23078{
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023083
23084 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 Sanity check
23086 ------------------------------------------------------------------------*/
23087 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23088 {
23089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023091
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 }
23094
23095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 ------------------------------------------------------------------------*/
23098 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23099 if ( NULL == pEventDataQueue )
23100 {
23101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023102 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 WDI_ASSERT(0);
23104 return WDI_STATUS_MEM_FAILURE;
23105 }
23106
23107 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23108 if ( NULL == pEventInfo )
23109 {
23110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23111 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023112 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 WDI_ASSERT(0);
23114 wpalMemoryFree(pEventDataQueue);
23115 return WDI_STATUS_MEM_FAILURE;
23116 }
23117
23118 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23119 pEventDataQueue->pUserData = pEventData->pUserData;
23120 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23121 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023122 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 pEventDataQueue->pEventData = pEventInfo;
23124
23125 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23126
23127 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023129
23130 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023133 if (eWLAN_PAL_STATUS_E_FAILURE ==
23134 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23135 {
23136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23137 "%s: Cannot allocate memory for queueing event data info",
23138 __func__);
23139 WDI_ASSERT(0);
23140 wpalMemoryFree(pEventDataQueue);
23141 wpalMemoryFree(pEventInfo);
23142 return WDI_STATUS_MEM_FAILURE;
23143 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023144
23145 /*The result of this operation is pending because the request has been
23146 queued and it will be processed at a later moment in time */
23147 return WDI_STATUS_PENDING;
23148}/*WDI_QueueAssocRequest*/
23149
23150/**
23151 @brief Utility function used by the DAL Core to help dequeue
23152 an association request that was pending
23153 The request will be queued up in front of the main
23154 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023155 @param
23156
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023158
23159
23160 @see
23161 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023162*/
23163WDI_Status
23164WDI_DequeueAssocRequest
23165(
23166 WDI_ControlBlockType* pWDICtx
23167)
23168{
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 wpt_list_node* pNode = NULL;
23170 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 WDI_BSSSessionType* pSession;
23172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023173
23174 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023175 Sanity check
23176 ------------------------------------------------------------------------*/
23177 if ( NULL == pWDICtx )
23178 {
23179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023181
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 }
23184
23185 /*------------------------------------------------------------------------
23186 An association has been completed => a new association can occur
23187 Check to see if there are any pending associations ->
23188 If so , transfer all the pending requests into the busy queue for
23189 processing
23190 These requests have arrived prior to the requests in the busy queue
23191 (bc they needed to be processed in order to be placed in this queue)
23192 => they will be placed at the front of the busy queue
23193 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023194 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023195
23196 if ( NULL == pNode )
23197 {
23198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023200 return WDI_STATUS_SUCCESS;
23201 }
23202
23203 /*The node actually points to the 1st element inside the Session Id struct -
23204 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206
23207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23208 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23209
23210 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23211 {
23212 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023213
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023215 the front of the main waiting queue for subsequent execution*/
23216 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 while ( NULL != pNode )
23218 {
23219 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23221 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 }
23225 else
23226 {
23227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 WPAL_ASSERT(0);
23230 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023233
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23235 wpalMemoryFree(pSessionIdElement);
23236 return WDI_STATUS_SUCCESS;
23237}/*WDI_DequeueAssocRequest*/
23238
23239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 pending requests - all req cb will be called with
23242 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 @param
23244
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023246
23247 @see
23248 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023249*/
23250WDI_Status
23251WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023252(
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 WDI_ControlBlockType* pWDICtx
23254)
23255{
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 void* pUserData;
23260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23261
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023263
23264 /*------------------------------------------------------------------------
23265 Go through all the requests and fail them - this will only be called
23266 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023267 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023268 ------------------------------------------------------------------------*/
23269 while( pNode )
23270 {
23271 /*The node actually points to the 1st element inside the Event Data struct -
23272 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 pEventDataQueue = (WDI_EventInfoType*)pNode;
23274
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23276 if ( NULL != pfnReqStatusCB )
23277 {
23278 /*Fail the request*/
23279 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23280 }
23281 /* Free data - that was allocated when queueing */
23282 if ( pEventDataQueue->pEventData != NULL )
23283 {
23284 wpalMemoryFree(pEventDataQueue->pEventData);
23285 }
23286 wpalMemoryFree(pEventDataQueue);
23287
23288 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23289 {
23290 break;
23291 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 }
23293
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 return WDI_STATUS_SUCCESS;
23295}/*WDI_ClearPendingRequests*/
23296
23297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 @brief Helper routine used to init the BSS Sessions in the WDI control block
23299
23300
23301 @param pWDICtx: pointer to the WLAN DAL context
23302
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 @see
23304*/
23305void
23306WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023307(
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 WDI_ControlBlockType* pWDICtx
23309)
23310{
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23313
23314 /*-------------------------------------------------------------------------
23315 No Sanity check
23316 -------------------------------------------------------------------------*/
23317 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23318 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23321 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23322 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23323 }
23324}/*WDI_ResetAssocSessions*/
23325
23326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 @brief Helper routine used to find a session based on the BSSID
23328
23329
23330 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 pSession: pointer to the session (if found)
23333
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023336*/
23337wpt_uint8
23338WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023339(
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 WDI_ControlBlockType* pWDICtx,
23341 wpt_macAddr macBSSID,
23342 WDI_BSSSessionType** ppSession
23343)
23344{
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23347
23348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 -------------------------------------------------------------------------*/
23351 if ( NULL == ppSession )
23352 {
23353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023354 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 }
23357
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023359
Jeff Johnsone7245742012-09-05 17:12:55 -070023360 /*------------------------------------------------------------------------
23361 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 ------------------------------------------------------------------------*/
23363 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23364 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023365 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23366 (eWLAN_PAL_TRUE ==
23367 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23368 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 {
23370 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 return i;
23373 }
23374 }
23375
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023377}/*WDI_FindAssocSession*/
23378
23379/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 @brief Helper routine used to find a session based on the BSSID
23381
23382
23383 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 ucBSSIdx: BSS Index of the session
23385 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023386
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023389*/
23390wpt_uint8
23391WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023392(
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 WDI_ControlBlockType* pWDICtx,
23394 wpt_uint16 ucBSSIdx,
23395 WDI_BSSSessionType** ppSession
23396)
23397{
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23400
23401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 -------------------------------------------------------------------------*/
23404 if ( NULL == ppSession )
23405 {
23406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023407 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 }
23410
Jeff Johnsone7245742012-09-05 17:12:55 -070023411 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023412
Jeff Johnsone7245742012-09-05 17:12:55 -070023413 /*------------------------------------------------------------------------
23414 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 ------------------------------------------------------------------------*/
23416 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23417 {
23418 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23419 {
23420 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 return i;
23423 }
23424 }
23425
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023427}/*WDI_FindAssocSessionByBSSIdx*/
23428
23429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 @brief Helper routine used to find a session based on the BSSID
23431
23432
23433 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 ucBSSIdx: BSS Index of the session
23435 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023436
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023439*/
23440wpt_uint8
23441WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023442(
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 WDI_ControlBlockType* pWDICtx,
23444 wpt_uint16 usIdx,
23445 WDI_BSSSessionType** ppSession
23446)
23447{
23448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23449
23450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 -------------------------------------------------------------------------*/
23453 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23454 {
23455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023456 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 }
23459
23460 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023462
23463 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023464
Jeff Johnson295189b2012-06-20 16:38:30 -070023465}/*WDI_FindAssocSessionByBSSIdx*/
23466
23467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023470
23471
23472 @param pWDICtx: pointer to the WLAN DAL context
23473 pSession: pointer to the session (if found)
23474
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023477*/
23478wpt_uint8
23479WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023480(
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 WDI_ControlBlockType* pWDICtx,
23482 WDI_BSSSessionType** ppSession
23483)
23484{
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 -------------------------------------------------------------------------*/
23490 if ( NULL == ppSession )
23491 {
23492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023493 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023494 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 }
23496
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023498
Jeff Johnsone7245742012-09-05 17:12:55 -070023499 /*------------------------------------------------------------------------
23500 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 ------------------------------------------------------------------------*/
23502 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23503 {
23504 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23505 {
23506 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023507 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 return i;
23509 }
23510 }
23511
Jeff Johnsone7245742012-09-05 17:12:55 -070023512 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023513}/*WDI_FindEmptySession*/
23514
23515
23516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023517 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023519
23520
23521 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023522 macBSSID: pointer to BSSID. If NULL, get all the session.
23523 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23524 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23525 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 @see
23527 @return Number of sessions in use
23528*/
23529wpt_uint8
23530WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023531(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023532 WDI_ControlBlockType* pWDICtx,
23533 wpt_macAddr macBSSID,
23534 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023535)
23536{
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023539
23540 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 Count all sessions in use
23542 ------------------------------------------------------------------------*/
23543 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23544 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023545 if ( macBSSID && skipBSSID &&
23546 (eWLAN_PAL_TRUE ==
23547 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23548 WDI_MAC_ADDR_LEN)))
23549 {
23550 continue;
23551 }
23552 else if ( pWDICtx->aBSSSessions[i].bInUse )
23553 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023555 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 }
23557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023559}/*WDI_GetActiveSessionsCount*/
23560
23561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023564
23565
23566 @param pWDICtx: pointer to the WLAN DAL context
23567 pSession: pointer to the session (if found)
23568
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023571*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023572void
Jeff Johnson295189b2012-06-20 16:38:30 -070023573WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023574(
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 WDI_ControlBlockType* pWDICtx,
23576 WDI_BSSSessionType* ppSession
23577)
23578{
23579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023581 -------------------------------------------------------------------------*/
23582 if ( NULL == ppSession )
23583 {
23584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023585 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 }
23588
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 /*------------------------------------------------------------------------
23590 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 ------------------------------------------------------------------------*/
23592 wpal_list_destroy(&ppSession->wptPendingQueue);
23593 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23595 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23597 wpal_list_init(&ppSession->wptPendingQueue);
23598
23599}/*WDI_DeleteSession*/
23600
23601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023603 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023604 @param
23605
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 WDI_AddStaParams: - pointer to the WDI Add STA params
23607 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023608
23609 @see
23610 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023611*/
23612void
23613WDI_AddBcastSTAtoSTATable
23614(
23615 WDI_ControlBlockType* pWDICtx,
23616 WDI_AddStaParams * staParams,
23617 wpt_uint16 usBcastStaIdx
23618)
23619{
23620 WDI_AddStaParams wdiAddSTAParam = {0};
23621 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23623
23624 /*---------------------------------------------------------------------
23625 Sanity check
23626 ---------------------------------------------------------------------*/
23627 if ( NULL == staParams )
23628 {
23629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023631
Jeff Johnsone7245742012-09-05 17:12:55 -070023632 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 }
23634
23635 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23636 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23637 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23638 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23639 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23640 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23641 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23642 WDI_MAC_ADDR_LEN );
23643 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23644 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23645 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23646 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23647 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23648 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23649 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023650
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23652}
23653
23654/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023655 @brief NV blob will be divided into fragments of size 4kb and
23656 Sent to HAL
23657
23658 @param pWDICtx: pointer to the WLAN DAL context
23659 pEventData: pointer to the event information structure
23660
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 @see
23662 @return Result of the function call
23663 */
23664
23665WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023666(
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 WDI_ControlBlockType* pWDICtx,
23668 WDI_EventInfoType* pEventData
23669)
23670{
23671
23672 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23673 wpt_uint8* pSendBuffer = NULL;
23674 wpt_uint16 usDataOffset = 0;
23675 wpt_uint16 usSendSize = 0;
23676 wpt_uint16 usCurrentFragmentSize =0;
23677 wpt_uint8* pSrcBuffer = NULL;
23678 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23679 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23680
23681 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23682 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23683 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23684
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23687
23688 /* Update the current Fragment Number */
23689 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23690
23691 /*Update the HAL REQ structure */
23692 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23693 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23694 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23695
23696 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023697 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023698 image will be sent to HAL*/
23699
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023704 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23706 usCurrentFragmentSize = FRAGMENT_SIZE;
23707
23708 /*Update the HAL REQ structure */
23709 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23710 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23711
23712 }
23713 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 usCurrentFragmentSize = FRAGMENT_SIZE;
23716
23717 /*Update the HAL REQ structure */
23718 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23719 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23720 }
23721
23722 /*-----------------------------------------------------------------------
23723 Get message buffer
23724 -----------------------------------------------------------------------*/
23725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23726 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23727 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23730 {
23731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023732 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 pEventData, pwdiNvDownloadReqParams);
23734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 }
23737
23738 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23741
23742 /* Appending the NV image fragment */
23743 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23744 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23745 usCurrentFragmentSize);
23746
23747 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23751 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 WDI_NV_DOWNLOAD_RESP);
23753
23754}
Jeff Johnsone7245742012-09-05 17:12:55 -070023755/*============================================================================
23756 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 ============================================================================*/
23758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 @brief Helper routine used to find a session based on the BSSID
23760 @param pContext: pointer to the WLAN DAL context
23761 @param pDPContext: pointer to the Datapath context
23762
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023765*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023766WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023767WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23768{
23769 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23770
23771 pCB->pDPContext = pDPContext;
23772 return;
23773}
23774
23775/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 @brief Helper routine used to find a session based on the BSSID
23777
23778
23779 @param pContext: pointer to the WLAN DAL context
23780
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 @see
23782 @return pointer to Datapath context
23783*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023784WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023785WDI_DS_GetDatapathContext (void *pContext)
23786{
23787 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23788 return pCB->pDPContext;
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 pContext: pointer to the WLAN DAL context
23795 @param pDTDriverContext: pointer to the Transport Driver context
23796
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 @see
23798 @return void
23799*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023800WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023801WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23802{
23803 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23804
23805 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023807}
23808
23809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023810 @brief Helper routine used to find a session based on the BSSID
23811
23812
23813 @param pWDICtx: pointer to the WLAN DAL context
23814
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023817*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023818WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023819WDT_GetTransportDriverContext (void *pContext)
23820{
23821 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023823}
23824
Jeff Johnsone7245742012-09-05 17:12:55 -070023825/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 Helper inline converters
23827 ============================================================================*/
23828/*Convert WDI driver type into HAL driver type*/
23829WPT_STATIC WPT_INLINE WDI_Status
23830WDI_HAL_2_WDI_STATUS
23831(
23832 eHalStatus halStatus
23833)
23834{
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 the chances of getting inlined*/
23837 switch( halStatus )
23838 {
23839 case eHAL_STATUS_SUCCESS:
23840 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23841 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23842 return WDI_STATUS_SUCCESS;
23843 case eHAL_STATUS_FAILURE:
23844 return WDI_STATUS_E_FAILURE;
23845 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023846 return WDI_STATUS_MEM_FAILURE;
23847 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 default:
23850 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23851 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023852
Jeff Johnsone7245742012-09-05 17:12:55 -070023853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023854}/*WDI_HAL_2_WDI_STATUS*/
23855
23856/*Convert WDI request type into HAL request type*/
23857WPT_STATIC WPT_INLINE tHalHostMsgType
23858WDI_2_HAL_REQ_TYPE
23859(
23860 WDI_RequestEnumType wdiReqType
23861)
23862{
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 the chances of getting inlined*/
23865 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023899 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 return WLAN_HAL_RMV_STAKEY_REQ;
23902 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023909 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 case WDI_DEL_BA_REQ:
23911 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023912#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 case WDI_TSM_STATS_REQ:
23914 return WLAN_HAL_TSM_STATS_REQ;
23915#endif
23916 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_ADD_BA_SESSION_REQ:
23927 return WLAN_HAL_ADD_BA_SESSION_REQ;
23928 case WDI_TRIGGER_BA_REQ:
23929 return WLAN_HAL_TRIGGER_BA_REQ;
23930 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23935 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23936 case WDI_SET_MAX_TX_POWER_REQ:
23937 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023938 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23939 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023940 case WDI_SET_TX_POWER_REQ:
23941 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23943 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023944#ifdef FEATURE_WLAN_TDLS
23945 case WDI_TDLS_LINK_ESTABLISH_REQ:
23946 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023947 case WDI_TDLS_CHAN_SWITCH_REQ:
23948 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023949#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023961 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023963 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023967 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 case WDI_REM_BEACON_FILTER_REQ:
23971 return WLAN_HAL_REM_BCN_FILTER_REQ;
23972 case WDI_SET_RSSI_THRESHOLDS_REQ:
23973 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23974 case WDI_HOST_OFFLOAD_REQ:
23975 return WLAN_HAL_HOST_OFFLOAD_REQ;
23976 case WDI_WOWL_ADD_BC_PTRN_REQ:
23977 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23978 case WDI_WOWL_DEL_BC_PTRN_REQ:
23979 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23980 case WDI_WOWL_ENTER_REQ:
23981 return WLAN_HAL_ENTER_WOWL_REQ;
23982 case WDI_WOWL_EXIT_REQ:
23983 return WLAN_HAL_EXIT_WOWL_REQ;
23984 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23985 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23986 case WDI_NV_DOWNLOAD_REQ:
23987 return WLAN_HAL_DOWNLOAD_NV_REQ;
23988 case WDI_FLUSH_AC_REQ:
23989 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23990 case WDI_BTAMP_EVENT_REQ:
23991 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23992#ifdef WLAN_FEATURE_VOWIFI_11R
23993 case WDI_AGGR_ADD_TS_REQ:
23994 return WLAN_HAL_AGGR_ADD_TS_REQ;
23995#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 case WDI_FTM_CMD_REQ:
23997 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 case WDI_ADD_STA_SELF_REQ:
23999 return WLAN_HAL_ADD_STA_SELF_REQ;
24000 case WDI_DEL_STA_SELF_REQ:
24001 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024002#ifdef FEATURE_OEM_DATA_SUPPORT
24003 case WDI_START_OEM_DATA_REQ:
24004 return WLAN_HAL_START_OEM_DATA_REQ;
24005#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 case WDI_HOST_RESUME_REQ:
24007 return WLAN_HAL_HOST_RESUME_REQ;
24008 case WDI_HOST_SUSPEND_IND:
24009 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024010 case WDI_TRAFFIC_STATS_IND:
24011 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024012#ifdef WLAN_FEATURE_11W
24013 case WDI_EXCLUDE_UNENCRYPTED_IND:
24014 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24015#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 case WDI_KEEP_ALIVE_REQ:
24017 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024018#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024019 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24020 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024021#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024022#ifdef FEATURE_WLAN_SCAN_PNO
24023 case WDI_SET_PREF_NETWORK_REQ:
24024 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24025 case WDI_SET_RSSI_FILTER_REQ:
24026 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24027 case WDI_UPDATE_SCAN_PARAMS_REQ:
24028 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24029#endif // FEATURE_WLAN_SCAN_PNO
24030 case WDI_SET_TX_PER_TRACKING_REQ:
24031 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24032#ifdef WLAN_FEATURE_PACKET_FILTERING
24033 case WDI_8023_MULTICAST_LIST_REQ:
24034 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24035 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24038 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24039 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24040 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24041#endif // WLAN_FEATURE_PACKET_FILTERING
24042 case WDI_HAL_DUMP_CMD_REQ:
24043 return WLAN_HAL_DUMP_COMMAND_REQ;
24044#ifdef WLAN_FEATURE_GTK_OFFLOAD
24045 case WDI_GTK_OFFLOAD_REQ:
24046 return WLAN_HAL_GTK_OFFLOAD_REQ;
24047 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24048 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24049#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24050
24051 case WDI_INIT_SCAN_CON_REQ:
24052 return WLAN_HAL_INIT_SCAN_CON_REQ;
24053 case WDI_SET_POWER_PARAMS_REQ:
24054 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24055 case WDI_SET_TM_LEVEL_REQ:
24056 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24057 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24058 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024059#ifdef WLAN_FEATURE_11AC
24060 case WDI_UPDATE_VHT_OP_MODE_REQ:
24061 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24062#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024063 case WDI_GET_ROAM_RSSI_REQ:
24064 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024065 case WDI_DHCP_START_IND:
24066 return WLAN_HAL_DHCP_START_IND;
24067 case WDI_DHCP_STOP_IND:
24068 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024069#ifdef FEATURE_WLAN_LPHB
24070 case WDI_LPHB_CFG_REQ:
24071 return WLAN_HAL_LPHB_CFG_REQ;
24072#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024073 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24074 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24075 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24076 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24077
Rajeev79dbe4c2013-10-05 11:03:42 +053024078#ifdef FEATURE_WLAN_BATCH_SCAN
24079 case WDI_SET_BATCH_SCAN_REQ:
24080 return WLAN_HAL_BATCHSCAN_SET_REQ;
24081 case WDI_STOP_BATCH_SCAN_IND:
24082 return WLAN_HAL_BATCHSCAN_STOP_IND;
24083 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24084 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24085#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024086 case WDI_RATE_UPDATE_IND:
24087 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024088 case WDI_START_HT40_OBSS_SCAN_IND:
24089 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24090 case WDI_STOP_HT40_OBSS_SCAN_IND:
24091 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024092 case WDI_UPDATE_CHAN_REQ:
24093 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024094 case WDI_CH_SWITCH_REQ_V1:
24095 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024096 case WDI_GET_BCN_MISS_RATE_REQ:
24097 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024098
24099#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24100 case WDI_LL_STATS_SET_REQ:
24101 return WLAN_HAL_LL_SET_STATS_REQ;
24102 case WDI_LL_STATS_GET_REQ:
24103 return WLAN_HAL_LL_GET_STATS_REQ;
24104 case WDI_LL_STATS_CLEAR_REQ:
24105 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24106#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024107#ifdef WLAN_FEATURE_EXTSCAN
24108 case WDI_EXTSCAN_START_REQ:
24109 return WLAN_HAL_EXT_SCAN_START_REQ;
24110 case WDI_EXTSCAN_STOP_REQ:
24111 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24112 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24113 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24114 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24115 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24116 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24117 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24118 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24119 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24120 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24121 return WLAN_HAL_SIG_RSSI_SET_REQ;
24122 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24123 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24124#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024125 case WDI_SPOOF_MAC_ADDR_REQ:
24126 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024127 case WDI_GET_FW_STATS_REQ:
24128 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024129 case WDI_ENCRYPT_MSG_REQ:
24130 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024131 case WDI_MGMT_LOGGING_INIT_REQ:
24132 return WLAN_HAL_MGMT_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024133 case WDI_GET_FRAME_LOG_REQ:
24134 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024135 case WDI_NAN_REQUEST:
24136 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024137 case WDI_SET_RTS_CTS_HTVHT_IND:
24138 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024139
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024143
Jeff Johnson295189b2012-06-20 16:38:30 -070024144}/*WDI_2_HAL_REQ_TYPE*/
24145
24146/*Convert WDI response type into HAL response type*/
24147WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24148HAL_2_WDI_RSP_TYPE
24149(
24150 tHalHostMsgType halMsg
24151)
24152{
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 the chances of getting inlined*/
24155 switch( halMsg )
24156 {
24157 case WLAN_HAL_START_RSP:
24158 return WDI_START_RESP;
24159 case WLAN_HAL_STOP_RSP:
24160 return WDI_STOP_RESP;
24161 case WLAN_HAL_INIT_SCAN_RSP:
24162 return WDI_INIT_SCAN_RESP;
24163 case WLAN_HAL_START_SCAN_RSP:
24164 return WDI_START_SCAN_RESP;
24165 case WLAN_HAL_END_SCAN_RSP:
24166 return WDI_END_SCAN_RESP;
24167 case WLAN_HAL_FINISH_SCAN_RSP:
24168 return WDI_FINISH_SCAN_RESP;
24169 case WLAN_HAL_CONFIG_STA_RSP:
24170 return WDI_CONFIG_STA_RESP;
24171 case WLAN_HAL_DELETE_STA_RSP:
24172 return WDI_DEL_STA_RESP;
24173 case WLAN_HAL_CONFIG_BSS_RSP:
24174 return WDI_CONFIG_BSS_RESP;
24175 case WLAN_HAL_DELETE_BSS_RSP:
24176 return WDI_DEL_BSS_RESP;
24177 case WLAN_HAL_JOIN_RSP:
24178 return WDI_JOIN_RESP;
24179 case WLAN_HAL_POST_ASSOC_RSP:
24180 return WDI_POST_ASSOC_RESP;
24181 case WLAN_HAL_SET_BSSKEY_RSP:
24182 return WDI_SET_BSS_KEY_RESP;
24183 case WLAN_HAL_SET_STAKEY_RSP:
24184 return WDI_SET_STA_KEY_RESP;
24185 case WLAN_HAL_RMV_BSSKEY_RSP:
24186 return WDI_RMV_BSS_KEY_RESP;
24187 case WLAN_HAL_RMV_STAKEY_RSP:
24188 return WDI_RMV_STA_KEY_RESP;
24189 case WLAN_HAL_SET_BCASTKEY_RSP:
24190 return WDI_SET_STA_BCAST_KEY_RESP;
24191 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24192 // return WDI_RMV_STA_BCAST_KEY_RESP;
24193 case WLAN_HAL_ADD_TS_RSP:
24194 return WDI_ADD_TS_RESP;
24195 case WLAN_HAL_DEL_TS_RSP:
24196 return WDI_DEL_TS_RESP;
24197 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24198 return WDI_UPD_EDCA_PRMS_RESP;
24199 case WLAN_HAL_ADD_BA_RSP:
24200 return WDI_ADD_BA_RESP;
24201 case WLAN_HAL_DEL_BA_RSP:
24202 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024203#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 case WLAN_HAL_TSM_STATS_RSP:
24205 return WDI_TSM_STATS_RESP;
24206#endif
24207 case WLAN_HAL_CH_SWITCH_RSP:
24208 return WDI_CH_SWITCH_RESP;
24209 case WLAN_HAL_SET_LINK_ST_RSP:
24210 return WDI_SET_LINK_ST_RESP;
24211 case WLAN_HAL_GET_STATS_RSP:
24212 return WDI_GET_STATS_RESP;
24213 case WLAN_HAL_UPDATE_CFG_RSP:
24214 return WDI_UPDATE_CFG_RESP;
24215 case WLAN_HAL_ADD_BA_SESSION_RSP:
24216 return WDI_ADD_BA_SESSION_RESP;
24217 case WLAN_HAL_TRIGGER_BA_RSP:
24218 return WDI_TRIGGER_BA_RESP;
24219 case WLAN_HAL_UPDATE_BEACON_RSP:
24220 return WDI_UPD_BCON_PRMS_RESP;
24221 case WLAN_HAL_SEND_BEACON_RSP:
24222 return WDI_SND_BCON_RESP;
24223 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24224 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24225 /*Indications*/
24226 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24227 return WDI_HAL_RSSI_NOTIFICATION_IND;
24228 case WLAN_HAL_MISSED_BEACON_IND:
24229 return WDI_HAL_MISSED_BEACON_IND;
24230 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24231 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24232 case WLAN_HAL_MIC_FAILURE_IND:
24233 return WDI_HAL_MIC_FAILURE_IND;
24234 case WLAN_HAL_FATAL_ERROR_IND:
24235 return WDI_HAL_FATAL_ERROR_IND;
24236 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24237 return WDI_HAL_DEL_STA_IND;
24238 case WLAN_HAL_COEX_IND:
24239 return WDI_HAL_COEX_IND;
24240 case WLAN_HAL_OTA_TX_COMPL_IND:
24241 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 case WLAN_HAL_P2P_NOA_ATTR_IND:
24243 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024244 case WLAN_HAL_P2P_NOA_START_IND:
24245 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024246 case WLAN_HAL_DEL_BA_IND:
24247 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 case WLAN_HAL_TX_PER_HIT_IND:
24249 return WDI_HAL_TX_PER_HIT_IND;
24250 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24251 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024252 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24253 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024254 case WLAN_HAL_SET_TX_POWER_RSP:
24255 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 case WLAN_HAL_SET_P2P_GONOA_RSP:
24257 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024258#ifdef FEATURE_WLAN_TDLS
24259 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24260 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024261 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24262 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024263 case WLAN_HAL_TDLS_IND:
24264 return WDI_HAL_TDLS_IND;
24265#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24285 return WDI_SET_BEACON_FILTER_RESP;
24286 case WLAN_HAL_REM_BCN_FILTER_RSP:
24287 return WDI_REM_BEACON_FILTER_RESP;
24288 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24289 return WDI_SET_RSSI_THRESHOLDS_RESP;
24290 case WLAN_HAL_HOST_OFFLOAD_RSP:
24291 return WDI_HOST_OFFLOAD_RESP;
24292 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24293 return WDI_WOWL_ADD_BC_PTRN_RESP;
24294 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24295 return WDI_WOWL_DEL_BC_PTRN_RESP;
24296 case WLAN_HAL_ENTER_WOWL_RSP:
24297 return WDI_WOWL_ENTER_RESP;
24298 case WLAN_HAL_EXIT_WOWL_RSP:
24299 return WDI_WOWL_EXIT_RESP;
24300 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24301 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24302 case WLAN_HAL_DOWNLOAD_NV_RSP:
24303 return WDI_NV_DOWNLOAD_RESP;
24304 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24305 return WDI_FLUSH_AC_RESP;
24306 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24307 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 case WLAN_HAL_PROCESS_PTT_RSP:
24309 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 case WLAN_HAL_ADD_STA_SELF_RSP:
24311 return WDI_ADD_STA_SELF_RESP;
24312case WLAN_HAL_DEL_STA_SELF_RSP:
24313 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024314#ifdef FEATURE_OEM_DATA_SUPPORT
24315 case WLAN_HAL_START_OEM_DATA_RSP:
24316 return WDI_START_OEM_DATA_RESP;
24317#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WLAN_HAL_HOST_RESUME_RSP:
24319 return WDI_HOST_RESUME_RESP;
24320 case WLAN_HAL_KEEP_ALIVE_RSP:
24321 return WDI_KEEP_ALIVE_RESP;
24322#ifdef FEATURE_WLAN_SCAN_PNO
24323 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24324 return WDI_SET_PREF_NETWORK_RESP;
24325 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24328 return WDI_UPDATE_SCAN_PARAMS_RESP;
24329 case WLAN_HAL_PREF_NETW_FOUND_IND:
24330 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24331#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024332#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024333 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24334 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024335#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24337 return WDI_SET_TX_PER_TRACKING_RESP;
24338#ifdef WLAN_FEATURE_PACKET_FILTERING
24339 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24340 return WDI_8023_MULTICAST_LIST_RESP;
24341 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24342 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24343 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24344 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24345 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24346 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24347#endif // WLAN_FEATURE_PACKET_FILTERING
24348
24349 case WLAN_HAL_DUMP_COMMAND_RSP:
24350 return WDI_HAL_DUMP_CMD_RESP;
24351 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24352 return WDI_SET_POWER_PARAMS_RESP;
24353#ifdef WLAN_FEATURE_VOWIFI_11R
24354 case WLAN_HAL_AGGR_ADD_TS_RSP:
24355 return WDI_AGGR_ADD_TS_RESP;
24356#endif
24357
24358#ifdef WLAN_FEATURE_GTK_OFFLOAD
24359 case WLAN_HAL_GTK_OFFLOAD_RSP:
24360 return WDI_GTK_OFFLOAD_RESP;
24361 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24362 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24363#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24364#ifdef WLAN_WAKEUP_EVENTS
24365 case WLAN_HAL_WAKE_REASON_IND:
24366 return WDI_HAL_WAKE_REASON_IND;
24367#endif // WLAN_WAKEUP_EVENTS
24368
24369 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24370 return WDI_SET_TM_LEVEL_RESP;
24371 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24372 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024373#ifdef WLAN_FEATURE_11AC
24374 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24375 return WDI_UPDATE_VHT_OP_MODE_RESP;
24376#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024377#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024378 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24379 return WDI_GET_ROAM_RSSI_RESP;
24380#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024381
Leo Chang9056f462013-08-01 19:21:11 -070024382#ifdef FEATURE_WLAN_LPHB
24383 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024384 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024385 case WLAN_HAL_LPHB_CFG_RSP:
24386 return WDI_LPHB_CFG_RESP;
24387#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024388
24389 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24390 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024391 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24392 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024393
Rajeev79dbe4c2013-10-05 11:03:42 +053024394#ifdef FEATURE_WLAN_BATCH_SCAN
24395 case WLAN_HAL_BATCHSCAN_SET_RSP:
24396 return WDI_SET_BATCH_SCAN_RESP;
24397 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24398 return WDI_BATCHSCAN_RESULT_IND;
24399#endif // FEATURE_WLAN_BATCH_SCAN
24400
Leo Chang0b0e45a2013-12-15 15:18:55 -080024401#ifdef FEATURE_WLAN_CH_AVOID
24402 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24403 return WDI_HAL_CH_AVOID_IND;
24404#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024405 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24406 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024407 case WLAN_HAL_PRINT_REG_INFO_IND:
24408 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024409 case WLAN_HAL_CH_SWITCH_V1_RSP:
24410 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024411 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24412 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024413#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24414 case WLAN_HAL_LL_SET_STATS_RSP:
24415 return WDI_LL_STATS_SET_RSP;
24416 case WLAN_HAL_LL_GET_STATS_RSP:
24417 return WDI_LL_STATS_GET_RSP;
24418 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24419 return WDI_LL_STATS_CLEAR_RSP;
24420 case WLAN_HAL_LL_NOTIFY_STATS:
24421 return WDI_HAL_LL_STATS_RESULTS_IND;
24422#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024423#ifdef WLAN_FEATURE_EXTSCAN
24424 case WLAN_HAL_EXT_SCAN_START_RSP:
24425 return WDI_EXTSCAN_START_RSP;
24426 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24427 return WDI_EXTSCAN_STOP_RSP;
24428 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24429 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24430 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24431 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24432 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24433 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24434 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24435 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24436 case WLAN_HAL_SIG_RSSI_SET_RSP:
24437 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24438 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24439 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24440 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24441 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24442 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24443 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24444 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24445 return WDI_HAL_EXTSCAN_RESULT_IND;
24446 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24447 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24448 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24449 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24450#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024451 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24452 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024453 case WLAN_HAL_FW_STATS_RSP:
24454 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024455 case WLAN_HAL_ENCRYPT_DATA_RSP:
24456 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024457 case WLAN_HAL_MGMT_LOGGING_INIT_RSP:
24458 return WDI_MGMT_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024459 case WLAN_HAL_GET_FRAME_LOG_RSP:
24460 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024461 case WLAN_HAL_NAN_RSP:
24462 return WDI_NAN_RESPONSE;
24463 case WLAN_HAL_NAN_EVT:
24464 return WDI_HAL_NAN_EVENT;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024465
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 }
24469
24470}/*HAL_2_WDI_RSP_TYPE*/
24471
24472
24473/*Convert WDI driver type into HAL driver type*/
24474WPT_STATIC WPT_INLINE tDriverType
24475WDI_2_HAL_DRV_TYPE
24476(
24477 WDI_DriverType wdiDriverType
24478)
24479{
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 the chances of getting inlined*/
24482 switch( wdiDriverType )
24483 {
24484 case WDI_DRIVER_TYPE_PRODUCTION:
24485 return eDRIVER_TYPE_PRODUCTION;
24486 case WDI_DRIVER_TYPE_MFG:
24487 return eDRIVER_TYPE_MFG;
24488 case WDI_DRIVER_TYPE_DVT:
24489 return eDRIVER_TYPE_DVT;
24490 }
24491
Jeff Johnsone7245742012-09-05 17:12:55 -070024492 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024493}/*WDI_2_HAL_DRV_TYPE*/
24494
24495
24496/*Convert WDI stop reason into HAL stop reason*/
24497WPT_STATIC WPT_INLINE tHalStopType
24498WDI_2_HAL_STOP_REASON
24499(
24500 WDI_StopType wdiDriverType
24501)
24502{
Jeff Johnsone7245742012-09-05 17:12:55 -070024503 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 the chances of getting inlined*/
24505 switch( wdiDriverType )
24506 {
24507 case WDI_STOP_TYPE_SYS_RESET:
24508 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024509 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24510 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 case WDI_STOP_TYPE_RF_KILL:
24512 return HAL_STOP_TYPE_RF_KILL;
24513 }
24514
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024516}/*WDI_2_HAL_STOP_REASON*/
24517
24518
24519/*Convert WDI scan mode type into HAL scan mode type*/
24520WPT_STATIC WPT_INLINE eHalSysMode
24521WDI_2_HAL_SCAN_MODE
24522(
24523 WDI_ScanMode wdiScanMode
24524)
24525{
Jeff Johnsone7245742012-09-05 17:12:55 -070024526 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 the chances of getting inlined*/
24528 switch( wdiScanMode )
24529 {
24530 case WDI_SCAN_MODE_NORMAL:
24531 return eHAL_SYS_MODE_NORMAL;
24532 case WDI_SCAN_MODE_LEARN:
24533 return eHAL_SYS_MODE_LEARN;
24534 case WDI_SCAN_MODE_SCAN:
24535 return eHAL_SYS_MODE_SCAN;
24536 case WDI_SCAN_MODE_PROMISC:
24537 return eHAL_SYS_MODE_PROMISC;
24538 case WDI_SCAN_MODE_SUSPEND_LINK:
24539 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024540 case WDI_SCAN_MODE_ROAM_SCAN:
24541 return eHAL_SYS_MODE_ROAM_SCAN;
24542 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24543 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024544 }
24545
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024547}/*WDI_2_HAL_SCAN_MODE*/
24548
24549/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024550WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024551WDI_2_HAL_SEC_CH_OFFSET
24552(
24553 WDI_HTSecondaryChannelOffset wdiSecChOffset
24554)
24555{
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 the chances of getting inlined*/
24558 switch( wdiSecChOffset )
24559 {
24560 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24566#ifdef WLAN_FEATURE_11AC
24567 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24568 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24569 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24570 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24571 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24572 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24573 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24574 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24575 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24576 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24577 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24578 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24579 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24580 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24581#endif
24582 default:
24583 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024584 }
24585
Jeff Johnsone7245742012-09-05 17:12:55 -070024586 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024587}/*WDI_2_HAL_SEC_CH_OFFSET*/
24588
24589/*Convert WDI BSS type into HAL BSS type*/
24590WPT_STATIC WPT_INLINE tSirBssType
24591WDI_2_HAL_BSS_TYPE
24592(
24593 WDI_BssType wdiBSSType
24594)
24595{
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 the chances of getting inlined*/
24598 switch( wdiBSSType )
24599 {
24600 case WDI_INFRASTRUCTURE_MODE:
24601 return eSIR_INFRASTRUCTURE_MODE;
24602 case WDI_INFRA_AP_MODE:
24603 return eSIR_INFRA_AP_MODE;
24604 case WDI_IBSS_MODE:
24605 return eSIR_IBSS_MODE;
24606 case WDI_BTAMP_STA_MODE:
24607 return eSIR_BTAMP_STA_MODE;
24608 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 case WDI_BSS_AUTO_MODE:
24611 return eSIR_AUTO_MODE;
24612 }
24613
Jeff Johnsone7245742012-09-05 17:12:55 -070024614 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024615}/*WDI_2_HAL_BSS_TYPE*/
24616
24617/*Convert WDI NW type into HAL NW type*/
24618WPT_STATIC WPT_INLINE tSirNwType
24619WDI_2_HAL_NW_TYPE
24620(
24621 WDI_NwType wdiNWType
24622)
24623{
Jeff Johnsone7245742012-09-05 17:12:55 -070024624 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 the chances of getting inlined*/
24626 switch( wdiNWType )
24627 {
24628 case WDI_11A_NW_TYPE:
24629 return eSIR_11A_NW_TYPE;
24630 case WDI_11B_NW_TYPE:
24631 return eSIR_11B_NW_TYPE;
24632 case WDI_11G_NW_TYPE:
24633 return eSIR_11G_NW_TYPE;
24634 case WDI_11N_NW_TYPE:
24635 return eSIR_11N_NW_TYPE;
24636 }
24637
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639}/*WDI_2_HAL_NW_TYPE*/
24640
24641/*Convert WDI chanel bonding type into HAL cb type*/
24642WPT_STATIC WPT_INLINE ePhyChanBondState
24643WDI_2_HAL_CB_STATE
24644(
24645 WDI_PhyChanBondState wdiCbState
24646)
24647{
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 the chances of getting inlined*/
24650 switch ( wdiCbState )
24651 {
24652 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24653 return PHY_SINGLE_CHANNEL_CENTERED;
24654 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24655 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24656 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24657 return PHY_DOUBLE_CHANNEL_CENTERED;
24658 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24659 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024660#ifdef WLAN_FEATURE_11AC
24661 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24662 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24663 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24664 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24665 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24666 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24667 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24668 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24669 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24670 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24671 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24672 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24673 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24674 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24675#endif
24676 case WDI_MAX_CB_STATE:
24677 default:
24678 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024679 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024680
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 return PHY_CHANNEL_BONDING_STATE_MAX;
24682}/*WDI_2_HAL_CB_STATE*/
24683
24684/*Convert WDI chanel bonding type into HAL cb type*/
24685WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24686WDI_2_HAL_HT_OPER_MODE
24687(
24688 WDI_HTOperatingMode wdiHTOperMode
24689)
24690{
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 the chances of getting inlined*/
24693 switch ( wdiHTOperMode )
24694 {
24695 case WDI_HT_OP_MODE_PURE:
24696 return eSIR_HT_OP_MODE_PURE;
24697 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24698 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24699 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24700 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24701 case WDI_HT_OP_MODE_MIXED:
24702 return eSIR_HT_OP_MODE_MIXED;
24703 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024704
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 return eSIR_HT_OP_MODE_MAX;
24706}/*WDI_2_HAL_HT_OPER_MODE*/
24707
24708/*Convert WDI mimo PS type into HAL mimo PS type*/
24709WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24710WDI_2_HAL_MIMO_PS
24711(
24712 WDI_HTMIMOPowerSaveState wdiHTOperMode
24713)
24714{
Jeff Johnsone7245742012-09-05 17:12:55 -070024715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024716 the chances of getting inlined*/
24717 switch ( wdiHTOperMode )
24718 {
24719 case WDI_HT_MIMO_PS_STATIC:
24720 return eSIR_HT_MIMO_PS_STATIC;
24721 case WDI_HT_MIMO_PS_DYNAMIC:
24722 return eSIR_HT_MIMO_PS_DYNAMIC;
24723 case WDI_HT_MIMO_PS_NA:
24724 return eSIR_HT_MIMO_PS_NA;
24725 case WDI_HT_MIMO_PS_NO_LIMIT:
24726 return eSIR_HT_MIMO_PS_NO_LIMIT;
24727 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024728
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 return eSIR_HT_MIMO_PS_MAX;
24730}/*WDI_2_HAL_MIMO_PS*/
24731
24732/*Convert WDI ENC type into HAL ENC type*/
24733WPT_STATIC WPT_INLINE tAniEdType
24734WDI_2_HAL_ENC_TYPE
24735(
24736 WDI_EncryptType wdiEncType
24737)
24738{
Jeff Johnsone7245742012-09-05 17:12:55 -070024739 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 the chances of getting inlined*/
24741 switch ( wdiEncType )
24742 {
24743 case WDI_ENCR_NONE:
24744 return eSIR_ED_NONE;
24745
24746 case WDI_ENCR_WEP40:
24747 return eSIR_ED_WEP40;
24748
24749 case WDI_ENCR_WEP104:
24750 return eSIR_ED_WEP104;
24751
24752 case WDI_ENCR_TKIP:
24753 return eSIR_ED_TKIP;
24754
24755 case WDI_ENCR_CCMP:
24756 return eSIR_ED_CCMP;
24757
24758 case WDI_ENCR_AES_128_CMAC:
24759 return eSIR_ED_AES_128_CMAC;
24760#if defined(FEATURE_WLAN_WAPI)
24761 case WDI_ENCR_WPI:
24762 return eSIR_ED_WPI;
24763#endif
24764 default:
24765 return eSIR_ED_NOT_IMPLEMENTED;
24766 }
24767
24768}/*WDI_2_HAL_ENC_TYPE*/
24769
24770/*Convert WDI WEP type into HAL WEP type*/
24771WPT_STATIC WPT_INLINE tAniWepType
24772WDI_2_HAL_WEP_TYPE
24773(
24774 WDI_WepType wdiWEPType
24775)
24776{
Jeff Johnsone7245742012-09-05 17:12:55 -070024777 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024778 the chances of getting inlined*/
24779 switch ( wdiWEPType )
24780 {
24781 case WDI_WEP_STATIC:
24782 return eSIR_WEP_STATIC;
24783
24784 case WDI_WEP_DYNAMIC:
24785 return eSIR_WEP_DYNAMIC;
24786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024787
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 return eSIR_WEP_MAX;
24789}/*WDI_2_HAL_WEP_TYPE*/
24790
24791WPT_STATIC WPT_INLINE tSirLinkState
24792WDI_2_HAL_LINK_STATE
24793(
24794 WDI_LinkStateType wdiLinkState
24795)
24796{
Jeff Johnsone7245742012-09-05 17:12:55 -070024797 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024798 the chances of getting inlined*/
24799 switch ( wdiLinkState )
24800 {
24801 case WDI_LINK_IDLE_STATE:
24802 return eSIR_LINK_IDLE_STATE;
24803
24804 case WDI_LINK_PREASSOC_STATE:
24805 return eSIR_LINK_PREASSOC_STATE;
24806
24807 case WDI_LINK_POSTASSOC_STATE:
24808 return eSIR_LINK_POSTASSOC_STATE;
24809
24810 case WDI_LINK_AP_STATE:
24811 return eSIR_LINK_AP_STATE;
24812
24813 case WDI_LINK_IBSS_STATE:
24814 return eSIR_LINK_IBSS_STATE;
24815
24816 case WDI_LINK_BTAMP_PREASSOC_STATE:
24817 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24818
24819 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24820 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24821
24822 case WDI_LINK_BTAMP_AP_STATE:
24823 return eSIR_LINK_BTAMP_AP_STATE;
24824
24825 case WDI_LINK_BTAMP_STA_STATE:
24826 return eSIR_LINK_BTAMP_STA_STATE;
24827
24828 case WDI_LINK_LEARN_STATE:
24829 return eSIR_LINK_LEARN_STATE;
24830
24831 case WDI_LINK_SCAN_STATE:
24832 return eSIR_LINK_SCAN_STATE;
24833
24834 case WDI_LINK_FINISH_SCAN_STATE:
24835 return eSIR_LINK_FINISH_SCAN_STATE;
24836
24837 case WDI_LINK_INIT_CAL_STATE:
24838 return eSIR_LINK_INIT_CAL_STATE;
24839
24840 case WDI_LINK_FINISH_CAL_STATE:
24841 return eSIR_LINK_FINISH_CAL_STATE;
24842
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 case WDI_LINK_LISTEN_STATE:
24844 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024845
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024846 case WDI_LINK_SEND_ACTION_STATE:
24847 return eSIR_LINK_SEND_ACTION_STATE;
24848
Jeff Johnson295189b2012-06-20 16:38:30 -070024849 default:
24850 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024851 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024852}
24853
Jeff Johnsone7245742012-09-05 17:12:55 -070024854/*Translate a STA Context from WDI into HAL*/
24855WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024856void
24857WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024858(
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 tConfigStaParams* phalConfigSta,
24860 WDI_ConfigStaReqInfoType* pwdiConfigSta
24861)
24862{
24863 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024864#ifdef WLAN_FEATURE_11AC
24865 /* Get the Version 1 Handler */
24866 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24867 if (WDI_getFwWlanFeatCaps(DOT11AC))
24868 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024869 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024870 }
24871#endif
24872 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024874
Jeff Johnsone7245742012-09-05 17:12:55 -070024875 wpalMemoryCopy(phalConfigSta->bssId,
24876 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24877
24878 wpalMemoryCopy(phalConfigSta->staMac,
24879 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024880
24881 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24882 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24883 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24884 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24885 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24886 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24887 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24888 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24889 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24890 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24891 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24892 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24893 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24894 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24895 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24896 phalConfigSta->action = pwdiConfigSta->wdiAction;
24897 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24898 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24899 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24900 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24901 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24902 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24903 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024904
Jeff Johnson295189b2012-06-20 16:38:30 -070024905 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24906
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 pwdiConfigSta->wdiSupportedRates.opRateMode;
24909 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24910 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024911 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24913 }
24914 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24915 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24918 }
24919 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24920 {
24921 phalConfigSta->supportedRates.aniLegacyRates[i] =
24922 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24923 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024924 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024925 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24926 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24927 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024928 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24930 }
24931 phalConfigSta->supportedRates.rxHighestDataRate =
24932 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24933
Jeff Johnsone7245742012-09-05 17:12:55 -070024934#ifdef WLAN_FEATURE_11AC
24935 if(phalConfigSta_V1 != NULL)
24936 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024937 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24938 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24939 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24940 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 }
24942#endif
24943
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024945
Jeff Johnsone7245742012-09-05 17:12:55 -070024946#ifdef WLAN_FEATURE_11AC
24947 if(phalConfigSta_V1 != NULL)
24948 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024949 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24950 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024951 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024952 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024953 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24954 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24955
Jeff Johnsone7245742012-09-05 17:12:55 -070024956 }
24957#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024958}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024959
24960/*Translate a Rate set info from WDI into HAL*/
24961WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024962WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024963(
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 tSirMacRateSet* pHalRateSet,
24965 WDI_RateSet* pwdiRateSet
24966)
24967{
Jeff Johnsone7245742012-09-05 17:12:55 -070024968 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24970
24971 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24972 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24973
24974 for ( i = 0; i < pHalRateSet->numRates; i++ )
24975 {
24976 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24977 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024978
Jeff Johnson295189b2012-06-20 16:38:30 -070024979}/*WDI_CopyWDIRateSetToHALRateSet*/
24980
24981
24982/*Translate an EDCA Parameter Record from WDI into HAL*/
24983WPT_STATIC WPT_INLINE void
24984WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024985(
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 tSirMacEdcaParamRecord* phalEdcaParam,
24987 WDI_EdcaParamRecord* pWDIEdcaParam
24988)
24989{
Jeff Johnsone7245742012-09-05 17:12:55 -070024990 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024991 the chances of getting inlined*/
24992
24993 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24994 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24995 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24996 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24997
24998 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24999 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25000 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25001}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25002
25003
25004/*Copy a management frame header from WDI fmt into HAL fmt*/
25005WPT_STATIC WPT_INLINE void
25006WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25007(
25008 tSirMacMgmtHdr* pmacMgmtHdr,
25009 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25010)
25011{
25012 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25013 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25014 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25015 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25016 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25017 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25018 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25019 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25020 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25021 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25022 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25023
25024 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25025 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25026
Jeff Johnsone7245742012-09-05 17:12:55 -070025027 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025028 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025031 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025032 pwdiMacMgmtHdr->bssId, 6);
25033
25034 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25035 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25036 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25037
25038}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25039
25040
25041/*Copy config bss parameters from WDI fmt into HAL fmt*/
25042WPT_STATIC WPT_INLINE void
25043WDI_CopyWDIConfigBSSToHALConfigBSS
25044(
25045 tConfigBssParams* phalConfigBSS,
25046 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25047)
25048{
25049
25050 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025051#ifdef WLAN_FEATURE_11AC
25052 /* Get the Version 1 Handler */
25053 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25054 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025055 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025056#endif
25057
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 wpalMemoryCopy( phalConfigBSS->bssId,
25059 pwdiConfigBSS->macBSSID,
25060 WDI_MAC_ADDR_LEN);
25061
25062#ifdef HAL_SELF_STA_PER_BSS
25063 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25064 pwdiConfigBSS->macSelfAddr,
25065 WDI_MAC_ADDR_LEN);
25066#endif
25067
25068 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25069
25070 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25071 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25072
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 pwdiConfigBSS->ucShortSlotTimeSupported;
25075 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25076 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25077 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25078 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25079 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025080 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025081 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25082 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25083 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25084 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25085 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25086 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25087 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25088 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25089 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25090 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25091 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25092
Jeff Johnsone7245742012-09-05 17:12:55 -070025093 phalConfigBSS->htOperMode =
25094 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025095
25096 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25097 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25098 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25099 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25100
25101#ifdef WLAN_FEATURE_VOWIFI
25102 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25103#endif
25104
25105 /*! Used 32 as magic number because that is how the ssid is declared inside the
25106 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025107 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025108 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25109 pwdiConfigBSS->wdiSSID.ucLength : 32;
25110 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 pwdiConfigBSS->wdiSSID.sSSID,
25112 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025113
25114 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25115 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025116
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25118 &pwdiConfigBSS->wdiRateSet);
25119
25120 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25121
25122 if(phalConfigBSS->edcaParamsValid)
25123 {
25124 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25125 &pwdiConfigBSS->wdiBEEDCAParams);
25126 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25127 &pwdiConfigBSS->wdiBKEDCAParams);
25128 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25129 &pwdiConfigBSS->wdiVIEDCAParams);
25130 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25131 &pwdiConfigBSS->wdiVOEDCAParams);
25132 }
25133
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025135
25136 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25137
25138#ifdef WLAN_FEATURE_VOWIFI_11R
25139
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025142
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 if( phalConfigBSS->extSetStaKeyParamValid )
25144 {
25145 /*-----------------------------------------------------------------------
25146 Copy the STA Key parameters into the HAL message
25147 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25150
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25153
25154 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25155
25156 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25157
25158 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25159
Jeff Johnson295189b2012-06-20 16:38:30 -070025160 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25161 keyIndex++)
25162 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025164 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25165 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25166 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25167 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25168 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25169 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025170 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025174 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25176 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 WDI_MAX_KEY_LENGTH);
25179 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 }
25181 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25182 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025183 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 sizeof(phalConfigBSS->extSetStaKeyParam) );
25185 }
25186
25187#endif /*WLAN_FEATURE_VOWIFI_11R*/
25188
Jeff Johnsone7245742012-09-05 17:12:55 -070025189#ifdef WLAN_FEATURE_11AC
25190 if(phalConfigBSS_V1 != NULL)
25191 {
25192 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25193 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25194 }
25195#endif
25196
Jeff Johnson295189b2012-06-20 16:38:30 -070025197}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25198
25199
Jeff Johnsone7245742012-09-05 17:12:55 -070025200/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 pointed to by user data */
25202WPT_STATIC WPT_INLINE void
25203WDI_ExtractRequestCBFromEvent
25204(
25205 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025206 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 void** ppUserData
25208)
25209{
25210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25211 switch ( pEvent->wdiRequest )
25212 {
25213 case WDI_START_REQ:
25214 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25215 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25216 break;
25217 case WDI_STOP_REQ:
25218 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25219 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25220 break;
25221 case WDI_INIT_SCAN_REQ:
25222 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25223 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25224 break;
25225 case WDI_START_SCAN_REQ:
25226 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25227 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25228 break;
25229 case WDI_END_SCAN_REQ:
25230 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25231 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25232 break;
25233 case WDI_FINISH_SCAN_REQ:
25234 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25235 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25236 break;
25237 case WDI_JOIN_REQ:
25238 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25239 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25240 break;
25241 case WDI_CONFIG_BSS_REQ:
25242 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25243 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25244 break;
25245 case WDI_DEL_BSS_REQ:
25246 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25247 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25248 break;
25249 case WDI_POST_ASSOC_REQ:
25250 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25251 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25252 break;
25253 case WDI_DEL_STA_REQ:
25254 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25255 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25256 break;
25257 case WDI_DEL_STA_SELF_REQ:
25258 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25259 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25260 break;
25261
25262 case WDI_SET_BSS_KEY_REQ:
25263 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25264 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25265 break;
25266 case WDI_RMV_BSS_KEY_REQ:
25267 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25268 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25269 break;
25270 case WDI_SET_STA_KEY_REQ:
25271 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25272 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25273 break;
25274 case WDI_RMV_STA_KEY_REQ:
25275 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25276 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25277 break;
25278 case WDI_ADD_TS_REQ:
25279 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25280 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25281 break;
25282 case WDI_DEL_TS_REQ:
25283 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25284 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25285 break;
25286 case WDI_UPD_EDCA_PRMS_REQ:
25287 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25288 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25289 break;
25290 case WDI_ADD_BA_SESSION_REQ:
25291 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25292 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25293 break;
25294 case WDI_DEL_BA_REQ:
25295 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25297 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025298#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 case WDI_TSM_STATS_REQ:
25300 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25301 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25302 break;
25303#endif
25304 case WDI_CH_SWITCH_REQ:
25305 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25306 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25307 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025308 case WDI_CH_SWITCH_REQ_V1:
25309 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25310 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25311 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 case WDI_CONFIG_STA_REQ:
25313 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25314 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25315 break;
25316 case WDI_SET_LINK_ST_REQ:
25317 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25318 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25319 break;
25320 case WDI_GET_STATS_REQ:
25321 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25322 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25323 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025324#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025325 case WDI_GET_ROAM_RSSI_REQ:
25326 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25327 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25328 break;
25329#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025330 case WDI_UPDATE_CFG_REQ:
25331 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25332 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25333 break;
25334 case WDI_ADD_BA_REQ:
25335 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25336 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25337 break;
25338 case WDI_TRIGGER_BA_REQ:
25339 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25340 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25341 break;
25342 case WDI_UPD_BCON_PRMS_REQ:
25343 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25344 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25345 break;
25346 case WDI_SND_BCON_REQ:
25347 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25348 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25349 break;
25350 case WDI_ENTER_BMPS_REQ:
25351 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25352 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25353 break;
25354 case WDI_EXIT_BMPS_REQ:
25355 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25356 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25357 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025358 case WDI_ENTER_IMPS_REQ:
25359 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25360 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25361 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 case WDI_ENTER_UAPSD_REQ:
25363 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25364 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25365 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025366 case WDI_EXIT_UAPSD_REQ:
25367 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25368 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25369 break;
25370 case WDI_SET_UAPSD_PARAM_REQ:
25371 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25372 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25373 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 case WDI_UPDATE_UAPSD_PARAM_REQ:
25375 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25376 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25377 break;
25378 case WDI_CONFIGURE_RXP_FILTER_REQ:
25379 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25380 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25381 break;
25382 case WDI_SET_BEACON_FILTER_REQ:
25383 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25384 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25385 break;
25386 case WDI_REM_BEACON_FILTER_REQ:
25387 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25388 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 case WDI_SET_RSSI_THRESHOLDS_REQ:
25391 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25392 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25393 break;
25394 case WDI_HOST_OFFLOAD_REQ:
25395 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25396 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25397 break;
25398 case WDI_WOWL_ADD_BC_PTRN_REQ:
25399 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25400 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25401 break;
25402 case WDI_WOWL_DEL_BC_PTRN_REQ:
25403 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25404 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25405 break;
25406 case WDI_WOWL_ENTER_REQ:
25407 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25408 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25409 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025410 case WDI_WOWL_EXIT_REQ:
25411 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25412 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25413 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025414 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25415 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25416 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25417 break;
25418 case WDI_FLUSH_AC_REQ:
25419 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25420 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25421 break;
25422 case WDI_BTAMP_EVENT_REQ:
25423 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25424 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25425 break;
25426 case WDI_KEEP_ALIVE_REQ:
25427 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25428 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25429 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025430#if defined FEATURE_WLAN_SCAN_PNO
25431 case WDI_SET_PREF_NETWORK_REQ:
25432 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25433 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25434 break;
25435 case WDI_SET_RSSI_FILTER_REQ:
25436 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25437 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25438 break;
25439 case WDI_UPDATE_SCAN_PARAMS_REQ:
25440 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25441 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25442 break;
25443#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025444 case WDI_SET_TX_PER_TRACKING_REQ:
25445 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25446 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025447 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025448#if defined WLAN_FEATURE_PACKET_FILTERING
25449 case WDI_8023_MULTICAST_LIST_REQ:
25450 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25451 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25452 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025453 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25454 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25455 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25456 break;
25457 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25458 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25459 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25460 break;
25461 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25462 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25463 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25464 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025465#endif
25466 case WDI_SET_POWER_PARAMS_REQ:
25467 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25468 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25469 break;
25470#if defined WLAN_FEATURE_GTK_OFFLOAD
25471 case WDI_GTK_OFFLOAD_REQ:
25472 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25473 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25474 break;
25475 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25476 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25477 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25478 break;
25479#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025480
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 default:
25482 *ppfnReqCB = NULL;
25483 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025484 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 }
25486}/*WDI_ExtractRequestCBFromEvent*/
25487
25488
25489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025490 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 frame xtl is enabled for a particular STA.
25492
25493 WDI_PostAssocReq must have been called.
25494
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 @param uSTAIdx: STA index
25496
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 @see WDI_PostAssocReq
25498 @return Result of the function call
25499*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025500wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025501WDI_IsHwFrameTxTranslationCapable
25502(
25503 wpt_uint8 uSTAIdx
25504)
25505{
Jeff Johnsone7245742012-09-05 17:12:55 -070025506 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025507 uma value*/
25508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025510 ------------------------------------------------------------------------*/
25511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25512 {
25513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25514 "WDI API call before module is initialized - Fail request");
25515
Jeff Johnsone7245742012-09-05 17:12:55 -070025516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025517 }
25518
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025519#ifdef WLAN_SOFTAP_VSTA_FEATURE
25520 if (IS_VSTA_IDX(uSTAIdx))
25521 {
25522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25523 "STA %d is a Virtual STA, "
25524 "HW frame translation disabled", uSTAIdx);
25525 return eWLAN_PAL_FALSE;
25526 }
25527#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025528
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 return gWDICb.bFrameTransEnabled;
25530}/*WDI_IsHwFrameTxTranslationCapable*/
25531
Katya Nigam6201c3e2014-05-27 17:51:42 +053025532
25533/**
25534 @brief WDI_IsSelfSTA - check if staid is self sta index
25535
25536
25537 @param pWDICtx: pointer to the WLAN DAL context
25538 ucSTAIdx: station index
25539
25540 @return Result of the function call
25541*/
25542wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25543{
25544 wpt_uint8 ucSTAType;
25545
25546 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25547 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25548 {
25549 if( ucSTAType == WDI_STA_ENTRY_SELF )
25550 return eWLAN_PAL_TRUE;
25551 }
25552
25553 return eWLAN_PAL_FALSE;
25554}
25555
25556
25557
Jeff Johnson295189b2012-06-20 16:38:30 -070025558#ifdef FEATURE_WLAN_SCAN_PNO
25559/**
25560 @brief WDI_SetPreferredNetworkList
25561
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025564
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 wdiPNOScanCb: callback for passing back the response
25566 of the Set PNO operation received from the
25567 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025568
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 callback
25571
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 @return Result of the function call
25573*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025575WDI_SetPreferredNetworkReq
25576(
25577 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25578 WDI_PNOScanCb wdiPNOScanCb,
25579 void* pUserData
25580)
25581{
25582 WDI_EventInfoType wdiEventData = {{0}};
25583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25584
25585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 ------------------------------------------------------------------------*/
25588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25589 {
25590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25591 "WDI API call before module is initialized - Fail request");
25592
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 }
25595
25596 /*------------------------------------------------------------------------
25597 Fill in Event data and post to the Main FSM
25598 ------------------------------------------------------------------------*/
25599 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 wdiEventData.pUserData = pUserData;
25604
25605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25606}
25607
25608
25609/**
25610 @brief WDI_SetRssiFilterReq
25611
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025614
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 wdiRssiFilterCb: callback for passing back the response
25616 of the Set RSSI Filter operation received from the
25617 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025618
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 callback
25621
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 @return Result of the function call
25623*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025624WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025625WDI_SetRssiFilterReq
25626(
25627 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25628 WDI_RssiFilterCb wdiRssiFilterCb,
25629 void* pUserData
25630)
25631{
25632 WDI_EventInfoType wdiEventData = {{0}};
25633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25634
25635 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 ------------------------------------------------------------------------*/
25638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25639 {
25640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25641 "WDI API call before module is initialized - Fail request");
25642
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025644 }
25645
25646 /*------------------------------------------------------------------------
25647 Fill in Event data and post to the Main FSM
25648 ------------------------------------------------------------------------*/
25649 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 wdiEventData.pUserData = pUserData;
25654
25655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25656}/*WDI_SetRssiFilterReq*/
25657
25658/**
25659 @brief WDI_UpdateScanParamsReq
25660
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025663
Jeff Johnson295189b2012-06-20 16:38:30 -070025664 wdiUpdateScanParamsCb: callback for passing back the response
25665 of the Set PNO operation received from the
25666 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025667
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 callback
25670
Jeff Johnson295189b2012-06-20 16:38:30 -070025671 @return Result of the function call
25672*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025674WDI_UpdateScanParamsReq
25675(
25676 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25677 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25678 void* pUserData
25679)
25680{
25681 WDI_EventInfoType wdiEventData = {{0}};
25682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25683
25684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 ------------------------------------------------------------------------*/
25687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25688 {
25689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25690 "WDI API call before module is initialized - Fail request");
25691
Jeff Johnsone7245742012-09-05 17:12:55 -070025692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025693 }
25694
25695 /*------------------------------------------------------------------------
25696 Fill in Event data and post to the Main FSM
25697 ------------------------------------------------------------------------*/
25698 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025699 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 wdiEventData.pUserData = pUserData;
25703
25704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25705}
25706
25707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025710
25711 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 pwdiPNOScanReqParams: pointer to the info received
25713 from upper layers
25714 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025715 and its size
25716
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 @return Result of the function call
25718*/
25719
25720WDI_Status
25721WDI_PackPreferredNetworkList
25722(
25723 WDI_ControlBlockType* pWDICtx,
25724 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25725 wpt_uint8** ppSendBuffer,
25726 wpt_uint16* pSize
25727)
25728{
Jeff Johnsone7245742012-09-05 17:12:55 -070025729 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 wpt_uint16 usDataOffset = 0;
25731 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025732 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 /*-----------------------------------------------------------------------
25735 Get message buffer
25736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025738 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025740 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 {
25742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025743 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025744 pwdiPNOScanReqParams);
25745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 }
25748
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025749 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25750
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 /*-------------------------------------------------------------------------
25752 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25753 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025754 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025756 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025757 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25758
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025759 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025760 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025761 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025762 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025763 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25764
25765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25768 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25769 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25770
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025771 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 {
25773 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025774 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025777 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025779 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025780
25781 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025782 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025783 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025784
25785 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025786 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025787 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025788
Jeff Johnsone7245742012-09-05 17:12:55 -070025789 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025791 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025792 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25793 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25794 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25795 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025796
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025797 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025799 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025800
25801 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025802 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25804
25805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025807 pPrefNetwListParams->aNetworks[i].ssId.length,
25808 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 }
25810
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025811 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025812 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25814 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25815 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25816
25817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25821 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25822
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25829 }
25830
25831 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025832 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025833 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25834 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25835 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025838 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025840 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025841
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025842 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25844 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25845 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025848 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025849 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025850 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025851
25852 /*Set the output values*/
25853 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025854 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025855
25856 return WDI_STATUS_SUCCESS;
25857}/*WDI_PackPreferredNetworkList*/
25858
25859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025862
25863 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 pwdiPNOScanReqParams: pointer to the info received
25865 from upper layers
25866 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 and its size
25868
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 @return Result of the function call
25870*/
25871
25872WDI_Status
25873WDI_PackPreferredNetworkListNew
25874(
25875 WDI_ControlBlockType* pWDICtx,
25876 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25877 wpt_uint8** ppSendBuffer,
25878 wpt_uint16* pSize
25879)
25880{
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 wpt_uint16 usDataOffset = 0;
25883 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025884 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025886
25887 /*-----------------------------------------------------------------------
25888 Get message buffer
25889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025891 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025892 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025893 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025894 {
25895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025896 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 pwdiPNOScanReqParams);
25898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 }
25901
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025902 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25903
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 /*-------------------------------------------------------------------------
25905 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25906 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025907 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25911
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025912 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025913 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025914 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025915 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025916 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25917
25918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025919 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25921 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25922 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25923
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025924 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 {
25926 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025927 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25929
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025930 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025932 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025933
25934 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025935 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025936 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025937
25938 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025939 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025940 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025941
25942 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025944 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025945
Jeff Johnsone7245742012-09-05 17:12:55 -070025946 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025948 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25950
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025953 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025954
25955 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025956 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25958
25959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025960 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025961 pPrefNetwListParams->aNetworks[i].ssId.length,
25962 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 }
25964
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025965 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25968 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25969 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25970
25971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025973 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25975 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25976
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025977 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025979 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025981 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25983 }
25984
25985 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025986 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25988 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25989 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025991
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025992 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025995
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025996 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25998 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25999 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026002 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026004 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026005
Jeff Johnson295189b2012-06-20 16:38:30 -070026006
26007 /*Set the output values*/
26008 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026010
26011 return WDI_STATUS_SUCCESS;
26012}/*WDI_PackPreferredNetworkListNew*/
26013
26014/**
26015 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026016
26017 @param pWDICtx: pointer to the WLAN DAL context
26018 pEventData: pointer to the event information structure
26019
Jeff Johnson295189b2012-06-20 16:38:30 -070026020 @return Result of the function call
26021*/
26022WDI_Status
26023WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026024(
Jeff Johnson295189b2012-06-20 16:38:30 -070026025 WDI_ControlBlockType* pWDICtx,
26026 WDI_EventInfoType* pEventData
26027)
26028{
26029 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26030 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026032 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026033 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026034
26035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 -------------------------------------------------------------------------*/
26038 if (( NULL == pEventData ) ||
26039 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26040 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26041 {
26042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 }
26047
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026048 /*----------------------------------------------------------------------
26049 Avoid Enable PNO during any active session or an ongoing session
26050 ----------------------------------------------------------------------*/
26051 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26052 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26053 {
26054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26055 "%s:(Active/Ongoing Session) - Fail request", __func__);
26056
26057 return WDI_STATUS_E_FAILURE;
26058 }
26059
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 /*-------------------------------------------------------------------------
26061 Pack the PNO request structure based on version
26062 -------------------------------------------------------------------------*/
26063 if ( pWDICtx->wdiPNOVersion > 0 )
26064 {
26065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026066 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026067 pWDICtx->wdiPNOVersion);
26068
26069 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26070 &pSendBuffer, &usSendSize);
26071 }
26072 else
26073 {
26074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026075 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026076 pWDICtx->wdiPNOVersion);
26077
26078 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26079 &pSendBuffer, &usSendSize);
26080 }
26081
26082 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26083 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26084 {
26085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026086 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 }
26090
26091 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026093
26094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26098 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026099}
26100
26101/**
26102 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026103
26104 @param pWDICtx: pointer to the WLAN DAL context
26105 pEventData: pointer to the event information structure
26106
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 @see
26108 @return Result of the function call
26109*/
26110WDI_Status
26111WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026112(
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 WDI_ControlBlockType* pWDICtx,
26114 WDI_EventInfoType* pEventData
26115)
26116{
26117 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26118 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 wpt_uint16 usDataOffset = 0;
26121 wpt_uint16 usSendSize = 0;
26122 wpt_uint8 ucRssiThreshold;
26123
26124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 -------------------------------------------------------------------------*/
26127 if (( NULL == pEventData ) ||
26128 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26129 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26130 {
26131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 }
26136
26137 /*-----------------------------------------------------------------------
26138 Get message buffer
26139 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 sizeof(ucRssiThreshold),
26142 &pSendBuffer, &usDataOffset, &usSendSize))||
26143 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26144 {
26145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026146 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026147 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 }
26151
26152 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26153
Jeff Johnsone7245742012-09-05 17:12:55 -070026154 wpalMemoryCopy( pSendBuffer+usDataOffset,
26155 &ucRssiThreshold,
26156 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026157
26158 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026160
26161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26165 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026166}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026167#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26168/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026169 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026170
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026171 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026172 by the Device Interface
26173
26174 wdiRoamOffloadScancb: callback for passing back the response
26175 of the Roam Candidate Lookup Req operation received from the
26176 device
26177
26178 pUserData: user data will be passed back with the
26179 callback
26180 @return Result of the function call
26181*/
26182WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026183WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026184(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026185 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026186 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26187 void* pUserData
26188)
26189{
26190 WDI_EventInfoType wdiEventData = {{0}};
26191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26192
26193 /*------------------------------------------------------------------------
26194 Sanity Check
26195 ------------------------------------------------------------------------*/
26196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26197 {
26198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26199 "WDI API call before module is initialized - Fail request");
26200
26201 return WDI_STATUS_E_NOT_ALLOWED;
26202 }
26203
26204 /*------------------------------------------------------------------------
26205 Fill in Event data and post to the Main FSM
26206 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026207 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26208 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26209 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026210 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26211 wdiEventData.pUserData = pUserData;
26212
26213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26214}
26215
26216void
26217WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26218{
26219 switch (wdiEdType)
26220 {
26221 case WDI_ED_NONE:
26222 *EdType = eED_NONE;
26223 break;
26224 case WDI_ED_WEP40:
26225 case WDI_ED_WEP104:
26226 *EdType = eED_WEP;
26227 break;
26228 case WDI_ED_TKIP:
26229 *EdType = eED_TKIP;
26230 break;
26231 case WDI_ED_CCMP:
26232#ifdef WLAN_FEATURE_11W
26233 case WDI_ED_AES_128_CMAC:
26234#endif
26235 *EdType = eED_CCMP;
26236 break;
26237#ifdef FEATURE_WLAN_WAPI
26238 case WDI_ED_WPI:
26239 *EdType = eED_WPI;
26240 break;
26241#endif
26242 case WDI_ED_ANY:
26243 *EdType = eED_ANY;
26244 break;
26245
26246 default:
26247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26248 "%s: Unknown Encryption Type", __func__);
26249 break;
26250 }
26251}
26252
26253/**
26254 @brief Helper function to pack Start Roam Candidate Lookup
26255 Request parameters
26256
26257 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026258 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026259 from upper layers
26260 ppSendBuffer, pSize - out pointers of the packed buffer
26261 and its size
26262
26263 @return Result of the function call
26264*/
26265
26266WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026267WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026268(
26269 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026270 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026271 wpt_uint8** ppSendBuffer,
26272 wpt_uint16* pSize
26273)
26274{
26275 wpt_uint8* pSendBuffer = NULL;
26276 wpt_uint16 usDataOffset = 0;
26277 wpt_uint16 usSendSize = 0;
26278 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26279 wpt_uint8 i;
26280 /*-----------------------------------------------------------------------
26281 Get message buffer
26282 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026284 sizeof(tRoamCandidateListParams),
26285 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026286 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026287 {
26288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026289 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026290 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026291 WDI_ASSERT(0);
26292 return WDI_STATUS_E_FAILURE;
26293 }
26294 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026295 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026296 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026297 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026298 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026299 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026300 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026301 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026302 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026303 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026304 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026305
26306 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026307 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026308 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026309 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026310 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26311 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026312 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26313 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26314 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26315 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26316 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026317 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026318 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026319 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026320 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26321 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26322 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26323 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26324 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26325 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26326 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026327 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026328 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026329 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26330 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26331 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026332
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26334 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26335 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26336 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26337 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26338 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026339 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026340 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26341 pRoamCandidateListParams->RoamScanOffloadEnabled,
26342 pRoamCandidateListParams->Command,
26343 pRoamCandidateListParams->StartScanReason,
26344 pRoamCandidateListParams->NeighborScanTimerPeriod,
26345 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26346 pRoamCandidateListParams->NeighborScanChannelMinTime,
26347 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26348 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26349 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26350 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26351 pRoamCandidateListParams->ConnectedNetwork.authentication,
26352 pRoamCandidateListParams->ConnectedNetwork.encryption,
26353 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26354 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26355 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026356 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026357 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026358 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026359 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026360 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26361 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026362 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026363 pRoamCandidateListParams->us24GProbeSize);
26364 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026365 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026366 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026367 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026368 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26369 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026370 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026371 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026372 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26373 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26374 pRoamCandidateListParams->nProbes =
26375 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26376 pRoamCandidateListParams->HomeAwayTime =
26377 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026379 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26380 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026382 }
26383
26384
26385 /*Set the output values*/
26386 *ppSendBuffer = pSendBuffer;
26387 *pSize = usSendSize;
26388 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026389}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026390
26391/**
26392 @brief Process Start Roam Candidate Lookup Request function
26393
26394 @param pWDICtx: pointer to the WLAN DAL context
26395 pEventData: pointer to the event information structure
26396
26397 @return Result of the function call
26398*/
26399WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026400WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026401(
26402 WDI_ControlBlockType* pWDICtx,
26403 WDI_EventInfoType* pEventData
26404)
26405{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026406 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026407 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26408 wpt_uint8* pSendBuffer = NULL;
26409 wpt_uint16 usSendSize = 0;
26410 WDI_Status wdiStatus;
26411 /*-------------------------------------------------------------------------
26412 Sanity check
26413 -------------------------------------------------------------------------*/
26414 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026415 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026416 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26417 {
26418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26419 "%s: Invalid parameters", __func__);
26420 WDI_ASSERT(0);
26421 return WDI_STATUS_E_FAILURE;
26422 }
26423
26424 /*-------------------------------------------------------------------------
26425 Pack the Start Roam Candidate Lookup request structure based on version
26426 -------------------------------------------------------------------------*/
26427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26428 "%s: Packing Roam Candidate Lookup request ", __func__);
26429
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026430 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026431 &pSendBuffer, &usSendSize);
26432
26433 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26434 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26435 {
26436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26437 "%s: failed to pack request parameters", __func__);
26438 WDI_ASSERT(0);
26439 return wdiStatus;
26440 }
26441
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026442 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26443 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026444
26445 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026446 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026447 -------------------------------------------------------------------------*/
26448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026449 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026450}
26451
26452/**
26453 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26454 response is being received over the bus from HAL)
26455
26456 @param pWDICtx: pointer to the WLAN DAL context
26457 pEventData: pointer to the event information structure
26458
26459 @see
26460 @return Result of the function call
26461*/
26462WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026463WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026464(
26465 WDI_ControlBlockType* pWDICtx,
26466 WDI_EventInfoType* pEventData
26467)
26468{
26469 WDI_Status wdiStatus;
26470 eHalStatus halStatus;
26471 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26472
26473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26474
26475 /*-------------------------------------------------------------------------
26476 Sanity check
26477 -------------------------------------------------------------------------*/
26478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26479 ( NULL == pEventData->pEventData ))
26480 {
26481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26482 "%s: Invalid parameters", __func__);
26483 WDI_ASSERT(0);
26484 return WDI_STATUS_E_FAILURE;
26485 }
26486
26487 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26488
26489 /*-------------------------------------------------------------------------
26490 Extract response and send it to UMAC
26491 -------------------------------------------------------------------------*/
26492 halStatus = *((eHalStatus*)pEventData->pEventData);
26493 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26494
26495 /*Notify UMAC*/
26496 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26497
26498 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026499}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026500#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026501
26502/**
26503 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026504
26505 @param pWDICtx: pointer to the WLAN DAL context
26506 pEventData: pointer to the event information structure
26507
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 @see
26509 @return Result of the function call
26510*/
26511WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026512WDI_PackUpdateScanParamsReq
26513(
26514 WDI_ControlBlockType* pWDICtx,
26515 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26516 wpt_uint8** ppSendBuffer,
26517 wpt_uint16* pSize
26518)
26519{
26520 wpt_uint8* pSendBuffer = NULL;
26521 wpt_uint16 usDataOffset = 0;
26522 wpt_uint16 usSendSize = 0;
26523 tUpdateScanParams updateScanParams = {0};
26524
26525
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026527 "Begin WDI Update Scan Parameters Old Style Params");
26528 /*-----------------------------------------------------------------------
26529 Get message buffer
26530 -----------------------------------------------------------------------*/
26531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26532 sizeof(updateScanParams),
26533 &pSendBuffer, &usDataOffset, &usSendSize))||
26534 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26535 {
26536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026537 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026538 pwdiUpdateScanParams);
26539 WDI_ASSERT(0);
26540 return WDI_STATUS_E_FAILURE;
26541 }
26542
26543 //
26544 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26545 //
26546
26547 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26548 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26549
26550 updateScanParams.ucChannelCount =
26551 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26552 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26553 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26554 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26555
26556 wpalMemoryCopy( updateScanParams.aChannels,
26557 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26558 updateScanParams.ucChannelCount);
26559
26560
26561 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26562 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26563 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26564 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26565 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26566
26567 wpalMemoryCopy( pSendBuffer+usDataOffset,
26568 &updateScanParams,
26569 sizeof(updateScanParams));
26570
26571 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26572 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26573
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026575 "End Update Scan Parameters Old Style");
26576
26577 /*Set the output values*/
26578 *ppSendBuffer = pSendBuffer;
26579 *pSize = usSendSize;
26580
26581 return WDI_STATUS_SUCCESS;
26582}
26583
26584/**
26585 @brief Process Update Scan Params function
26586
26587 @param pWDICtx: pointer to the WLAN DAL context
26588 pEventData: pointer to the event information structure
26589
26590 @see
26591 @return Result of the function call
26592*/
26593WDI_Status
26594WDI_PackUpdateScanParamsReqEx
26595(
26596 WDI_ControlBlockType* pWDICtx,
26597 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26598 wpt_uint8** ppSendBuffer,
26599 wpt_uint16* pSize
26600)
26601{
26602 wpt_uint8* pSendBuffer = NULL;
26603 wpt_uint16 usDataOffset = 0;
26604 wpt_uint16 usSendSize = 0;
26605 tUpdateScanParamsEx updateScanParams = {0};
26606
26607
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026608 /*-----------------------------------------------------------------------
26609 Get message buffer
26610 -----------------------------------------------------------------------*/
26611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26612 sizeof(updateScanParams),
26613 &pSendBuffer, &usDataOffset, &usSendSize))||
26614 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26615 {
26616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026617 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026618 pwdiUpdateScanParams);
26619 WDI_ASSERT(0);
26620 return WDI_STATUS_E_FAILURE;
26621 }
26622
26623 //
26624 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26625 //
26626
26627 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26628 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26629
26630 updateScanParams.ucChannelCount =
26631 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26632 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26633 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26634 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26635
26636 wpalMemoryCopy( updateScanParams.aChannels,
26637 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26638 updateScanParams.ucChannelCount);
26639
26640
26641 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26642 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26643 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26644 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26645 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26646
26647 wpalMemoryCopy( pSendBuffer+usDataOffset,
26648 &updateScanParams,
26649 sizeof(updateScanParams));
26650
26651 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26652 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26653
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026654 /*Set the output values*/
26655 *ppSendBuffer = pSendBuffer;
26656 *pSize = usSendSize;
26657
26658 return WDI_STATUS_SUCCESS;
26659}
26660
26661/**
26662 @brief Process Update Scan Params function
26663
26664 @param pWDICtx: pointer to the WLAN DAL context
26665 pEventData: pointer to the event information structure
26666
26667 @see
26668 @return Result of the function call
26669*/
26670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026671WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026672(
Jeff Johnson295189b2012-06-20 16:38:30 -070026673 WDI_ControlBlockType* pWDICtx,
26674 WDI_EventInfoType* pEventData
26675)
26676{
26677 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26678 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026680 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026681 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026682
26683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026685 -------------------------------------------------------------------------*/
26686 if (( NULL == pEventData ) ||
26687 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26688 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26689 {
26690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026694 }
26695
26696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26697 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026698
26699 //
26700 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26701 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026702 if ( pWDICtx->wlanVersion.revision < 1 )
26703 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026704 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026705 &pSendBuffer, &usSendSize);
26706 }
26707 else
26708 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026709 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26710 &pSendBuffer, &usSendSize);
26711 }
26712
26713 if(WDI_STATUS_SUCCESS != wdiStatus)
26714 {
26715 //memory allocation failed
26716 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026717 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026718
Jeff Johnson295189b2012-06-20 16:38:30 -070026719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026720 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026723 wdiUpdateScanParamsCb, pEventData->pUserData,
26724 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026725}
26726
26727/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026728 @brief Process Update Channel Params function
26729
26730 @param pWDICtx: pointer to the WLAN DAL context
26731 pEventData: pointer to the event information structure
26732
26733 @see
26734 @return Result of the function call
26735*/
26736WDI_Status
26737WDI_ProcessUpdateChannelParamsReq
26738(
26739 WDI_ControlBlockType* pWDICtx,
26740 WDI_EventInfoType* pEventData
26741)
26742{
26743 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26744 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26745 wpt_uint8* pSendBuffer = NULL;
26746 wpt_uint16 usDataOffset = 0;
26747 wpt_uint16 usSendSize = 0;
26748 tUpdateChannelReqType *updateChannelParams;
26749 wpt_uint32 usUpdateChanParamSize;
26750 wpt_uint8 num_channels = 0;
26751
26752 /*-------------------------------------------------------------------------
26753 Sanity check
26754 -------------------------------------------------------------------------*/
26755 if (( NULL == pEventData ) ||
26756 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26757 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26758 {
26759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26760 "%s: Invalid parameters", __func__);
26761 WDI_ASSERT(0);
26762 return WDI_STATUS_E_FAILURE;
26763 }
26764 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026765 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026766
26767 /*-----------------------------------------------------------------------
26768 Get message buffer
26769 -----------------------------------------------------------------------*/
26770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26771 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26772 &pSendBuffer, &usDataOffset, &usSendSize))||
26773 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26774 {
26775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26776 "Unable to get send buffer in Update Channel Params req %p",
26777 pwdiUpdateChanListParams);
26778 WDI_ASSERT(0);
26779 return WDI_STATUS_E_FAILURE;
26780 }
26781 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26782
26783 updateChannelParams->numChan = num_channels;
26784 wpalMemoryCopy(&updateChannelParams->chanParam,
26785 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26786 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26787
26788 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26789 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26790
26791 /*-------------------------------------------------------------------------
26792 Send Update channel request to fw
26793 -------------------------------------------------------------------------*/
26794 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26795 wdiUpdateChanParamsCb, pEventData->pUserData,
26796 WDI_UPDATE_CHAN_RESP);
26797}
26798
26799/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026800 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026801
26802 @param pWDICtx: pointer to the WLAN DAL context
26803 pEventData: pointer to the event information structure
26804
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 @see
26806 @return Result of the function call
26807*/
26808WDI_Status
26809WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026810(
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 WDI_ControlBlockType* pWDICtx,
26812 WDI_EventInfoType* pEventData
26813)
26814{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026815 WDI_LowLevelIndType wdiInd;
26816 tpPrefNetwFoundParams pNetwFoundParams;
26817 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026818
26819
26820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 -------------------------------------------------------------------------*/
26823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26824 ( NULL == pEventData->pEventData ))
26825 {
26826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026828 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 }
26831
26832 /*-------------------------------------------------------------------------
26833 Extract indication and send it to UMAC
26834 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026835 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26836
26837 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26838 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26839 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26840
26841 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26842 {
26843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26844 "%s: fail to allocate memory", __func__);
26845 return WDI_STATUS_MEM_FAILURE;
26846 }
26847
26848 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26849 (pNetwFoundParams->ssId.length < 32 )?
26850 pNetwFoundParams->ssId.length : 32;
26851 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26852 pNetwFoundParams->ssId.ssId,
26853 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26854 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26855 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26856 pNetwFoundParams->frameLength;
26857 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26858 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26859 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026860
26861 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026862 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026863
Jeff Johnson295189b2012-06-20 16:38:30 -070026864 // DEBUG
26865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026866 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026868 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026870 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26872
ltimariub77f24b2013-01-24 18:54:33 -080026873 if ( pWDICtx->wdiLowLevelIndCB )
26874 {
26875 /*Notify UMAC*/
26876 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026878
26879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026880}
26881
26882/**
26883 @brief Process PNO Rsp function (called when a
26884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026885
26886 @param pWDICtx: pointer to the WLAN DAL context
26887 pEventData: pointer to the event information structure
26888
Jeff Johnson295189b2012-06-20 16:38:30 -070026889 @see
26890 @return Result of the function call
26891*/
26892WDI_Status
26893WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026894(
Jeff Johnson295189b2012-06-20 16:38:30 -070026895 WDI_ControlBlockType* pWDICtx,
26896 WDI_EventInfoType* pEventData
26897)
26898{
26899 WDI_Status wdiStatus;
26900 eHalStatus halStatus;
26901 WDI_PNOScanCb wdiPNOScanCb = NULL;
26902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26903
26904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026906 -------------------------------------------------------------------------*/
26907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26908 ( NULL == pEventData->pEventData ))
26909 {
26910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026914 }
26915
26916
Jeff Johnsone7245742012-09-05 17:12:55 -070026917 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026918
26919 /*-------------------------------------------------------------------------
26920 Extract response and send it to UMAC
26921 -------------------------------------------------------------------------*/
26922 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026923 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026924
26925 /*Notify UMAC*/
26926 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26927
Jeff Johnsone7245742012-09-05 17:12:55 -070026928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026929}/*WDI_ProcessSetPreferredNetworkRsp*/
26930
26931/**
26932 @brief Process RSSI Filter Rsp function (called when a
26933 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026934
26935 @param pWDICtx: pointer to the WLAN DAL context
26936 pEventData: pointer to the event information structure
26937
Jeff Johnson295189b2012-06-20 16:38:30 -070026938 @see
26939 @return Result of the function call
26940*/
26941WDI_Status
26942WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026943(
Jeff Johnson295189b2012-06-20 16:38:30 -070026944 WDI_ControlBlockType* pWDICtx,
26945 WDI_EventInfoType* pEventData
26946)
26947{
26948 WDI_Status wdiStatus;
26949 eHalStatus halStatus;
26950 WDI_RssiFilterCb wdiRssiFilterCb;
26951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26952
26953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026955 -------------------------------------------------------------------------*/
26956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26957 ( NULL == pEventData->pEventData ))
26958 {
26959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 }
26964
Jeff Johnsone7245742012-09-05 17:12:55 -070026965 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026966
26967 /*-------------------------------------------------------------------------
26968 Extract response and send it to UMAC
26969 -------------------------------------------------------------------------*/
26970 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026971 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026972
26973 /*Notify UMAC*/
26974 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26975
Jeff Johnsone7245742012-09-05 17:12:55 -070026976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026977}/*WDI_ProcessSetRssiFilterRsp*/
26978
26979/**
26980 @brief Process Update Scan Params Rsp function (called when a
26981 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026982
26983 @param pWDICtx: pointer to the WLAN DAL context
26984 pEventData: pointer to the event information structure
26985
Jeff Johnson295189b2012-06-20 16:38:30 -070026986 @see
26987 @return Result of the function call
26988*/
26989WDI_Status
26990WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026991(
Jeff Johnson295189b2012-06-20 16:38:30 -070026992 WDI_ControlBlockType* pWDICtx,
26993 WDI_EventInfoType* pEventData
26994)
26995{
26996 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026998 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026999 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27001
27002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027004 -------------------------------------------------------------------------*/
27005 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27006 ( NULL == pEventData->pEventData ))
27007 {
27008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027012 }
27013
27014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027015 "%s: Process UPD scan params ptr : %p",
27016 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027017
Jeff Johnsone7245742012-09-05 17:12:55 -070027018 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027019
27020 /*-------------------------------------------------------------------------
27021 Extract response and send it to UMAC
27022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027023 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27024 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027025 sizeof(halUpdScanParams.status));
27026
27027 uStatus = halUpdScanParams.status;
27028
27029 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027030 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027031
27032 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027033 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027034
Jeff Johnsone7245742012-09-05 17:12:55 -070027035 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027036
27037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027038 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 halUpdScanParams.status);
27040
27041 /*Notify UMAC*/
27042 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27043
Jeff Johnsone7245742012-09-05 17:12:55 -070027044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027045}
27046#endif // FEATURE_WLAN_SCAN_PNO
27047
27048#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027049WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027050WDI_8023MulticastListReq
27051(
27052 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27053 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27054 void* pUserData
27055)
27056{
27057 WDI_EventInfoType wdiEventData;
27058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27059
27060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027061 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027062
27063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 ------------------------------------------------------------------------*/
27066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27067 {
27068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27069 "WDI API call before module is initialized - Fail request");
27070
Jeff Johnsone7245742012-09-05 17:12:55 -070027071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 }
27073
27074 /*------------------------------------------------------------------------
27075 Fill in Event data and post to the Main FSM
27076 ------------------------------------------------------------------------*/
27077 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027078 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027080 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027081 wdiEventData.pUserData = pUserData;
27082
27083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27084}
27085
Jeff Johnsone7245742012-09-05 17:12:55 -070027086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027087WDI_ReceiveFilterSetFilterReq
27088(
27089 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27090 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27091 void* pUserData
27092)
27093{
27094 WDI_EventInfoType wdiEventData;
27095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27096
27097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027098 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027099
27100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 ------------------------------------------------------------------------*/
27103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27104 {
27105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27106 "WDI API call before module is initialized - Fail request");
27107
Jeff Johnsone7245742012-09-05 17:12:55 -070027108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 }
27110
27111 /*------------------------------------------------------------------------
27112 Fill in Event data and post to the Main FSM
27113 ------------------------------------------------------------------------*/
27114 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027115 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27116 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027117 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27118 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027120 wdiEventData.pUserData = pUserData;
27121
27122
27123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27124}
27125
Jeff Johnsone7245742012-09-05 17:12:55 -070027126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027127WDI_FilterMatchCountReq
27128(
27129 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27130 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27131 void* pUserData
27132)
27133{
27134 WDI_EventInfoType wdiEventData;
27135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27136
27137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027138 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027139
27140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027142 ------------------------------------------------------------------------*/
27143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27144 {
27145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27146 "WDI API call before module is initialized - Fail request");
27147
Jeff Johnsone7245742012-09-05 17:12:55 -070027148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 }
27150
27151 /*------------------------------------------------------------------------
27152 Fill in Event data and post to the Main FSM
27153 ------------------------------------------------------------------------*/
27154 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027157 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027158 wdiEventData.pUserData = pUserData;
27159
27160
27161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27162}
27163
Jeff Johnsone7245742012-09-05 17:12:55 -070027164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027165WDI_ReceiveFilterClearFilterReq
27166(
27167 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27168 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27169 void* pUserData
27170)
27171{
27172 WDI_EventInfoType wdiEventData;
27173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27174
27175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027176 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
27178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 ------------------------------------------------------------------------*/
27181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27182 {
27183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27184 "WDI API call before module is initialized - Fail request");
27185
Jeff Johnsone7245742012-09-05 17:12:55 -070027186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 }
27188
27189 /*------------------------------------------------------------------------
27190 Fill in Event data and post to the Main FSM
27191 ------------------------------------------------------------------------*/
27192 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027194 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027195 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027196 wdiEventData.pUserData = pUserData;
27197
27198
27199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27200}
27201
27202/**
27203 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027204
27205 @param pWDICtx: pointer to the WLAN DAL context
27206 pEventData: pointer to the event information structure
27207
Jeff Johnson295189b2012-06-20 16:38:30 -070027208 @see
27209 @return Result of the function call
27210*/
27211WDI_Status
27212WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027213(
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 WDI_ControlBlockType* pWDICtx,
27215 WDI_EventInfoType* pEventData
27216)
27217{
27218 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27219 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027220 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 wpt_uint16 usDataOffset = 0;
27222 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027223 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027225 wpt_uint8 ucCurrentBSSSesIdx = 0;
27226 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027227
27228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027229 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027230
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027231 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27232 if( NULL == pRcvFltMcAddrListType )
27233 {
27234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27235 "Failed to alloc in WDI_Process8023MulticastListReq");
27236 return WDI_STATUS_E_FAILURE;
27237 }
27238
Jeff Johnson295189b2012-06-20 16:38:30 -070027239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027241 -------------------------------------------------------------------------*/
27242 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027243 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027244 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027245 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027246 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27247 {
27248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027249 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027250 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 return WDI_STATUS_E_FAILURE;
27253 }
27254
27255 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27256 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27257 &pBSSSes);
27258 if ( NULL == pBSSSes )
27259 {
27260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027261 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027262 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 }
27265
27266 /*-----------------------------------------------------------------------
27267 Get message buffer
27268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27270 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027271 sizeof(tHalRcvFltMcAddrListType),
27272 &pSendBuffer, &usDataOffset, &usSendSize))||
27273 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27274 {
27275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27276 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027277 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027278 pEventData, pwdiFltPktSetMcListReqParamsType,
27279 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027280 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 }
27284
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027285 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027286 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027287 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027289 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27291 sizeof(tSirMacAddr));
27292 }
27293
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027294 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027295 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027296 pRcvFltMcAddrListType,
27297 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027298
27299 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027300 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027301
27302
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027303 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027305 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027306 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027307 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027310}
27311
27312/**
27313 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027314
27315 @param pWDICtx: pointer to the WLAN DAL context
27316 pEventData: pointer to the event information structure
27317
Jeff Johnson295189b2012-06-20 16:38:30 -070027318 @see
27319 @return Result of the function call
27320*/
27321WDI_Status
27322WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027323(
Jeff Johnson295189b2012-06-20 16:38:30 -070027324 WDI_ControlBlockType* pWDICtx,
27325 WDI_EventInfoType* pEventData
27326)
27327{
27328 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27329 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027330 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 wpt_uint16 usDataOffset = 0;
27332 wpt_uint16 usSendSize = 0;
27333 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027334 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027336 wpt_uint8 ucCurrentBSSSesIdx = 0;
27337 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027338 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27339 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027340
27341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027342 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027343
27344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 -------------------------------------------------------------------------*/
27347 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027348 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027349 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027350 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027351 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27352 {
27353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027356 return WDI_STATUS_E_FAILURE;
27357 }
27358
27359 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27360 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27361 &pBSSSes);
27362 if ( NULL == pBSSSes )
27363 {
27364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027365 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027367 }
27368
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027369 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27370 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027371
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027372 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27373 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27374 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27375
27376 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27377 usSessRcvPktFilterCfgSize);
27378
27379 if(NULL == pSessRcvPktFilterCfg)
27380 {
27381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27382 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027383 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027384 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027385 WDI_ASSERT(0);
27386 return WDI_STATUS_E_FAILURE;
27387 }
27388
27389 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27390
27391 /*-----------------------------------------------------------------------
27392 Get message buffer
27393 -----------------------------------------------------------------------*/
27394
27395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27396 usSessRcvPktFilterCfgSize,
27397 &pSendBuffer, &usDataOffset, &usSendSize))||
27398 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27399 {
27400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27401 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027402 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027403 pEventData, pwdiSetRcvPktFilterReqInfo,
27404 wdiReceiveFilterSetFilterCb);
27405 WDI_ASSERT(0);
27406 wpalMemoryFree(pSessRcvPktFilterCfg);
27407 return WDI_STATUS_E_FAILURE;
27408 }
27409
27410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027411 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027412 usSendSize,pSessRcvPktFilterCfg);
27413
27414 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27415 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27416 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27417 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27418
27419 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27420
27421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27422 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27423 pSessRcvPktFilterCfg->filterType);
27424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27425 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27426 pSessRcvPktFilterCfg->coleasceTime);
27427
27428 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27429 {
27430 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27431 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27432 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27433 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27434 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27435 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27436 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27437 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27438
27439 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27440 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27441 8);
27442 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27443 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27444 8);
27445
27446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027447 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027448 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27449 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27450
27451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027452 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027453 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27454 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27455
27456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027457 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027458 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27459 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27460 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27461 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27462 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27463 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27464
27465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027466 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027467 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27468 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27469 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27470 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27471 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27472 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27473 }
27474
27475 wpalMemoryCopy( pSendBuffer+usDataOffset,
27476 pSessRcvPktFilterCfg,
27477 usSessRcvPktFilterCfgSize);
27478
27479
27480 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27481 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27482
27483 wpalMemoryFree(pSessRcvPktFilterCfg);
27484
27485 }
27486 /*If SLM_SESSIONIZATION is not supported then do this */
27487 else
27488 {
27489 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27490 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27491 * sizeof(tHalRcvPktFilterParams));
27492
27493 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027494 usRcvPktFilterCfgSize);
27495
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027496 if(NULL == pRcvPktFilterCfg)
27497 {
27498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27499 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027500 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027501 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027502 WDI_ASSERT(0);
27503 return WDI_STATUS_E_FAILURE;
27504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027505
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027506 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027508 /*-----------------------------------------------------------------------
27509 Get message buffer
27510 -----------------------------------------------------------------------*/
27511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027512 usRcvPktFilterCfgSize,
27513 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027514 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27515 {
27516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027517 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027518 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027519 pEventData, pwdiSetRcvPktFilterReqInfo,
27520 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027521 WDI_ASSERT(0);
27522 wpalMemoryFree(pRcvPktFilterCfg);
27523 return WDI_STATUS_E_FAILURE;
27524 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027527 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027528 usSendSize,usRcvPktFilterCfgSize);
27529
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027530 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27531 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27532 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27533 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027534
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027536 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027537 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027539 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027540 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027541
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027542 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27543 {
27544 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27545 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27546 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27547 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27548 pRcvPktFilterCfg->paramsData[i].dataOffset =
27549 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27550 pRcvPktFilterCfg->paramsData[i].dataLength =
27551 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027552
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027553 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027554 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27555 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027556 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027557 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27558 8);
27559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027561 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027562 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027563 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027566 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027567 pRcvPktFilterCfg->paramsData[i].dataOffset,
27568 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027569
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027571 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027572 pRcvPktFilterCfg->paramsData[i].compareData[0],
27573 pRcvPktFilterCfg->paramsData[i].compareData[1],
27574 pRcvPktFilterCfg->paramsData[i].compareData[2],
27575 pRcvPktFilterCfg->paramsData[i].compareData[3],
27576 pRcvPktFilterCfg->paramsData[i].compareData[4],
27577 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027578
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027580 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027581 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27582 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27583 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27584 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27585 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27586 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27587 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027588
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027589 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 pRcvPktFilterCfg,
27591 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027592
27593
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027594 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27595 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027596
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027598 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027599 wpalMemoryFree(pRcvPktFilterCfg);
27600 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027602 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027606 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027607}
27608
27609/**
27610 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027611
27612 @param pWDICtx: pointer to the WLAN DAL context
27613 pEventData: pointer to the event information structure
27614
Jeff Johnson295189b2012-06-20 16:38:30 -070027615 @see
27616 @return Result of the function call
27617*/
27618WDI_Status
27619WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027620(
Jeff Johnson295189b2012-06-20 16:38:30 -070027621 WDI_ControlBlockType* pWDICtx,
27622 WDI_EventInfoType* pEventData
27623)
27624{
27625 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27626 NULL;
27627 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27628 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027630 wpt_uint16 usDataOffset = 0;
27631 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027632 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27633 wpt_uint8 ucCurrentBSSSesIdx = 0;
27634 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027635
27636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027637 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027638
27639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027641 -------------------------------------------------------------------------*/
27642 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027643 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027644 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027645 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27647 {
27648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027652 }
27653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27655 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27656 &pBSSSes);
27657 if ( NULL == pBSSSes )
27658 {
27659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027660 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027661 return WDI_STATUS_E_FAILURE;
27662 }
27663
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 /*-----------------------------------------------------------------------
27665 Get message buffer
27666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27668 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027669 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027670 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027671 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 {
27673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27674 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027675 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27677 wdiFilterMatchCountCb);
27678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027680 }
27681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027682 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27683 wpalMemoryCopy( pSendBuffer+usDataOffset,
27684 &rcvFltPktMatchCntReqParam,
27685 sizeof(rcvFltPktMatchCntReqParam));
27686
Jeff Johnson295189b2012-06-20 16:38:30 -070027687 //
27688 // Don't need to fill send buffer other than header
27689 //
27690 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027691 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027692
27693
27694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027695 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27698 wdiFilterMatchCountCb,
27699 pEventData->pUserData,
27700 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027701}
27702
27703/**
27704 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027705
27706 @param pWDICtx: pointer to the WLAN DAL context
27707 pEventData: pointer to the event information structure
27708
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 @see
27710 @return Result of the function call
27711*/
27712WDI_Status
27713WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027714(
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 WDI_ControlBlockType* pWDICtx,
27716 WDI_EventInfoType* pEventData
27717)
Jeff Johnsone7245742012-09-05 17:12:55 -070027718{
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27720 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027722 wpt_uint16 usDataOffset = 0;
27723 wpt_uint16 usSendSize = 0;
27724 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027725 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027726 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027727
27728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027729 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027730
27731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 -------------------------------------------------------------------------*/
27734 if (( NULL == pEventData ) ||
27735 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27736 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027737 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027738 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27739 {
27740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027743 return WDI_STATUS_E_FAILURE;
27744 }
27745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027746 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027747 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27748 &pBSSSes);
27749 if ( NULL == pBSSSes )
27750 {
27751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027752 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027754 }
27755
27756 /*-----------------------------------------------------------------------
27757 Get message buffer
27758 -----------------------------------------------------------------------*/
27759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 sizeof(tHalRcvFltPktClearParam),
27762 &pSendBuffer, &usDataOffset, &usSendSize))||
27763 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27764 {
27765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27766 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027767 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027768 pEventData, pwdiRcvFltPktClearReqParamsType,
27769 wdiRcvFltPktClearFilterCb);
27770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027772 }
27773
27774
27775 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027776 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027777 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027778 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027779
Jeff Johnsone7245742012-09-05 17:12:55 -070027780 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27781 wpalMemoryCopy( pSendBuffer+usDataOffset,
27782 &rcvFltPktClearParam,
27783 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
27785 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027786 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027787
27788
27789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027790 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027791 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027792 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027794 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027795}
27796
27797/**
27798 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027799
27800 @param pWDICtx: pointer to the WLAN DAL context
27801 pEventData: pointer to the event information structure
27802
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 @see
27804 @return Result of the function call
27805*/
27806WDI_Status
27807WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027808(
Jeff Johnson295189b2012-06-20 16:38:30 -070027809 WDI_ControlBlockType* pWDICtx,
27810 WDI_EventInfoType* pEventData
27811)
27812{
Jeff Johnson295189b2012-06-20 16:38:30 -070027813 eHalStatus halStatus;
27814 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027815 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27816 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27818
27819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027820 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027821
27822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027824 -------------------------------------------------------------------------*/
27825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27826 ( NULL == pEventData->pEventData ))
27827 {
27828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027832 }
27833
Jeff Johnsone7245742012-09-05 17:12:55 -070027834 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027835
27836 /*-------------------------------------------------------------------------
27837 Extract response and send it to UMAC
27838 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027839 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27840 {
27841 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27842 pEventData->pEventData,
27843 sizeof(halRcvFltPktSetMcListRsp));
27844
27845 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27846 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27847 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27848 halRcvFltPktSetMcListRsp.bssIdx;
27849 }
27850 else
27851 {
27852 halStatus = *((eHalStatus*)pEventData->pEventData);
27853 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27854 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027855
27856 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027857 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027858
Jeff Johnsone7245742012-09-05 17:12:55 -070027859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027860}
27861
27862/**
27863 @brief Process Set Rsp function (called when a
27864 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027865
27866 @param pWDICtx: pointer to the WLAN DAL context
27867 pEventData: pointer to the event information structure
27868
Jeff Johnson295189b2012-06-20 16:38:30 -070027869 @see
27870 @return Result of the function call
27871*/
27872WDI_Status
27873WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027874(
Jeff Johnson295189b2012-06-20 16:38:30 -070027875 WDI_ControlBlockType* pWDICtx,
27876 WDI_EventInfoType* pEventData
27877)
27878{
Jeff Johnson295189b2012-06-20 16:38:30 -070027879 eHalStatus halStatus;
27880 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027881 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27882 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27884
27885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027886 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027887
27888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027890 -------------------------------------------------------------------------*/
27891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27892 ( NULL == pEventData->pEventData ))
27893 {
27894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027898 }
27899
27900 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027901 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027902
27903 /*-------------------------------------------------------------------------
27904 Extract response and send it to UMAC
27905 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027906 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27907 {
27908 wpalMemoryCopy( &halSetPktFilterRspParams,
27909 pEventData->pEventData,
27910 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027911
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027912 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27913 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27914 }
27915 else
27916 {
27917 halStatus = *((eHalStatus*)pEventData->pEventData);
27918 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27919 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027921 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027922
Jeff Johnsone7245742012-09-05 17:12:55 -070027923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027924}
27925
27926/**
27927 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027928
27929 @param pWDICtx: pointer to the WLAN DAL context
27930 pEventData: pointer to the event information structure
27931
Jeff Johnson295189b2012-06-20 16:38:30 -070027932 @see
27933 @return Result of the function call
27934*/
27935WDI_Status
27936WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027937(
Jeff Johnson295189b2012-06-20 16:38:30 -070027938 WDI_ControlBlockType* pWDICtx,
27939 WDI_EventInfoType* pEventData
27940)
27941{
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027943 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027944 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27945 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027946
27947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27948
27949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027950 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027951
27952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027954 -------------------------------------------------------------------------*/
27955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27956 ( NULL == pEventData->pEventData ))
27957 {
27958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027962 }
27963
Jeff Johnsone7245742012-09-05 17:12:55 -070027964 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027965
27966 /*-------------------------------------------------------------------------
27967 Extract response and send it to UMAC
27968 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027969 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27970 {
27971 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27972 pEventData->pEventData,
27973 sizeof(halRcvFltrPktMatachRsp));
27974
27975 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27976 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27977 }
27978 else
27979 {
27980 halStatus = *((eHalStatus*)pEventData->pEventData);
27981 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027983
27984 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027985 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027986
Jeff Johnsone7245742012-09-05 17:12:55 -070027987 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027988}
27989
27990/**
27991 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027992
27993 @param pWDICtx: pointer to the WLAN DAL context
27994 pEventData: pointer to the event information structure
27995
Jeff Johnson295189b2012-06-20 16:38:30 -070027996 @see
27997 @return Result of the function call
27998*/
27999WDI_Status
28000WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028001(
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 WDI_ControlBlockType* pWDICtx,
28003 WDI_EventInfoType* pEventData
28004)
28005{
Jeff Johnson295189b2012-06-20 16:38:30 -070028006 eHalStatus halStatus;
28007 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028008 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28009 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28011
28012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028013 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028014
28015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028017 -------------------------------------------------------------------------*/
28018 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28019 ( NULL == pEventData->pEventData ))
28020 {
28021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 }
28026
28027 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028028 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028029
28030 /*-------------------------------------------------------------------------
28031 Extract response and send it to UMAC
28032 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028033 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28034 {
28035 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28036 pEventData->pEventData,
28037 sizeof(halRcvFltPktClearRspMsg));
28038
28039 wdiRcvFltPktClearRspParamsType.wdiStatus =
28040 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28041 wdiRcvFltPktClearRspParamsType.bssIdx =
28042 halRcvFltPktClearRspMsg.bssIdx;
28043 }
28044 else
28045 {
28046 halStatus = *((eHalStatus*)pEventData->pEventData);
28047 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28048 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028049
28050 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028051 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028052
Jeff Johnsone7245742012-09-05 17:12:55 -070028053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028054}
28055#endif // WLAN_FEATURE_PACKET_FILTERING
28056
28057/**
28058 @brief Process Shutdown Rsp function
28059 There is no shutdown response comming from HAL
28060 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028061
Jeff Johnson295189b2012-06-20 16:38:30 -070028062 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028063 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028064
28065 @see
28066 @return Result of the function call
28067*/
28068WDI_Status
28069WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028070(
Jeff Johnson295189b2012-06-20 16:38:30 -070028071 WDI_ControlBlockType* pWDICtx,
28072 WDI_EventInfoType* pEventData
28073)
28074{
28075 /*There is no shutdown response comming from HAL - function just kept for
28076 simmetry */
28077 WDI_ASSERT(0);
28078 return WDI_STATUS_SUCCESS;
28079}/*WDI_ProcessShutdownRsp*/
28080
28081/**
28082 @brief WDI_SetPowerParamsReq
28083
Jeff Johnsone7245742012-09-05 17:12:55 -070028084 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028085 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028086
Jeff Johnson295189b2012-06-20 16:38:30 -070028087 wdiPowerParamsCb: callback for passing back the response
28088 of the Set Power Params operation received from the
28089 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028090
Jeff Johnson295189b2012-06-20 16:38:30 -070028091 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028092 callback
28093
Jeff Johnson295189b2012-06-20 16:38:30 -070028094 @return Result of the function call
28095*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028096WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028097WDI_SetPowerParamsReq
28098(
28099 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28100 WDI_SetPowerParamsCb wdiPowerParamsCb,
28101 void* pUserData
28102)
28103{
28104 WDI_EventInfoType wdiEventData;
28105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28106
28107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 ------------------------------------------------------------------------*/
28110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28111 {
28112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28113 "WDI API call before module is initialized - Fail request");
28114
Jeff Johnsone7245742012-09-05 17:12:55 -070028115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028116 }
28117
28118 /*------------------------------------------------------------------------
28119 Fill in Event data and post to the Main FSM
28120 ------------------------------------------------------------------------*/
28121 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028122 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028123 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028124 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028125 wdiEventData.pUserData = pUserData;
28126
28127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28128}/*WDI_SetPowerParamsReq*/
28129
28130/**
28131 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028132
28133 @param pWDICtx: pointer to the WLAN DAL context
28134 pEventData: pointer to the event information structure
28135
Jeff Johnson295189b2012-06-20 16:38:30 -070028136 @see
28137 @return Result of the function call
28138*/
28139WDI_Status
28140WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028141(
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 WDI_ControlBlockType* pWDICtx,
28143 WDI_EventInfoType* pEventData
28144)
28145{
28146 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28147 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028149 wpt_uint16 usDataOffset = 0;
28150 wpt_uint16 usSendSize = 0;
28151 tSetPowerParamsType powerParams;
28152
28153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 -------------------------------------------------------------------------*/
28156 if (( NULL == pEventData ) ||
28157 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28158 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28159 {
28160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028164 }
28165
28166 /*-----------------------------------------------------------------------
28167 Get message buffer
28168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028170 sizeof(powerParams),
28171 &pSendBuffer, &usDataOffset, &usSendSize))||
28172 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28173 {
28174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028175 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028176 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028179 }
28180
28181 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028182 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028183 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28184
28185 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028186 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028187 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28188
28189 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028190 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028191 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28192
28193 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028194 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028195 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28196
28197 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028198 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028199 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28200
28201 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028202 powerParams.uBETInterval =
28203 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028204
Yue Mac24062f2013-05-13 17:01:29 -070028205 /* MAX LI for modulated DTIM */
28206 powerParams.uMaxLIModulatedDTIM =
28207 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028208
28209 wpalMemoryCopy( pSendBuffer+usDataOffset,
28210 &powerParams,
28211 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028212
28213 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028214 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028215
28216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28220 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028221}
28222
28223/**
28224 @brief Process Power Params Rsp function (called when a
28225 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028226
28227 @param pWDICtx: pointer to the WLAN DAL context
28228 pEventData: pointer to the event information structure
28229
Jeff Johnson295189b2012-06-20 16:38:30 -070028230 @see
28231 @return Result of the function call
28232*/
28233WDI_Status
28234WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028235(
Jeff Johnson295189b2012-06-20 16:38:30 -070028236 WDI_ControlBlockType* pWDICtx,
28237 WDI_EventInfoType* pEventData
28238)
28239{
28240 WDI_Status wdiStatus;
28241 eHalStatus halStatus;
28242 WDI_SetPowerParamsCb wdiPowerParamsCb;
28243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28244
28245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028247 -------------------------------------------------------------------------*/
28248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28249 ( NULL == pEventData->pEventData ))
28250 {
28251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028255 }
28256
Jeff Johnsone7245742012-09-05 17:12:55 -070028257 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028258
28259 /*-------------------------------------------------------------------------
28260 Extract response and send it to UMAC
28261 -------------------------------------------------------------------------*/
28262 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028263 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028264
28265 /*Notify UMAC*/
28266 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28267
Jeff Johnsone7245742012-09-05 17:12:55 -070028268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028269}/*WDI_ProcessSetPowerParamsRsp*/
28270
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028271/**
28272 @brief WDI_dhcpStartInd
28273 Host will send an event to the FW when DHCP is initiated
28274
28275 @param
28276 WDI_DHCPInd: DHCP Indication
28277 @see
28278 @return Result of the function call
28279*/
28280WDI_Status
28281WDI_dhcpStartInd
28282(
28283 WDI_DHCPInd *wdiDHCPInd
28284)
28285{
28286 WDI_EventInfoType wdiEventData;
28287
28288 /*------------------------------------------------------------------------
28289 Sanity Check
28290 ------------------------------------------------------------------------*/
28291 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28292 {
28293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28294 "WDI API call before module is initialized - Fail request");
28295
28296 return WDI_STATUS_E_NOT_ALLOWED;
28297 }
28298
28299 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28300 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028301 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028302 wdiEventData.pCBfnc = NULL;
28303 wdiEventData.pUserData = NULL;
28304
28305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28306}
28307
28308
28309/**
28310 @brief WDI_dhcpStopInd
28311 Host will send an event to the FW when DHCP is completed
28312
28313 @param
28314 WDI_DHCPInd: DHCP Indication
28315 @see
28316 @return Result of the function call
28317*/
28318WDI_Status
28319WDI_dhcpStopInd
28320(
28321 WDI_DHCPInd *wdiDHCPInd
28322)
28323{
28324 WDI_EventInfoType wdiEventData;
28325
28326 /*------------------------------------------------------------------------
28327 Sanity Check
28328 ------------------------------------------------------------------------*/
28329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28330 {
28331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28332 "WDI API call before module is initialized - Fail request");
28333
28334 return WDI_STATUS_E_NOT_ALLOWED;
28335 }
28336
28337 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28338 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028339 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028340 wdiEventData.pCBfnc = NULL;
28341 wdiEventData.pUserData = NULL;
28342
28343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28344}
28345
28346
28347/**
28348 @brief Process DHCP Start Indication message and post it to HAL
28349
28350 @param pWDICtx: pointer to the WLAN DAL context
28351 pEventData: pointer to the event information structure
28352
28353 @see
28354 @return Result of the function call
28355*/
28356WDI_Status
28357WDI_ProcessDHCPStartInd
28358(
28359 WDI_ControlBlockType* pWDICtx,
28360 WDI_EventInfoType* pEventData
28361)
28362{
28363 wpt_uint8* pSendBuffer = NULL;
28364 wpt_uint16 usDataOffset = 0;
28365 wpt_uint16 usSendSize = 0;
28366 wpt_uint16 usLen = 0;
28367 WDI_DHCPInd* pwdiDHCPInd = NULL;
28368 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028369 WDI_Status wdiStatus;
28370
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028371
28372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28373
28374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28375 "%s", __func__);
28376
28377 /*-------------------------------------------------------------------------
28378 Sanity check
28379 -------------------------------------------------------------------------*/
28380 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28381 {
28382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28383 "%s: Invalid parameters", __func__);
28384 WDI_ASSERT(0);
28385 return WDI_STATUS_E_FAILURE;
28386 }
28387 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28388 /*-----------------------------------------------------------------------
28389 Get message buffer
28390 -----------------------------------------------------------------------*/
28391
28392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28393 WDI_DHCP_START_IND,
28394 sizeof(tDHCPInfo),
28395 &pSendBuffer, &usDataOffset, &usSendSize))||
28396 ( usSendSize < (usDataOffset + usLen )))
28397 {
28398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28399 "Unable to get send buffer in DHCP Start req %p ",
28400 pEventData);
28401 WDI_ASSERT(0);
28402 return WDI_STATUS_E_FAILURE;
28403 }
28404
Sandeep Puligillaee789512014-02-13 19:14:52 +053028405 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028406 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28407 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28408 WDI_MAC_ADDR_LEN);
28409
28410 pWDICtx->pReqStatusUserData = NULL;
28411 pWDICtx->pfncRspCB = NULL;
28412
28413 /*-------------------------------------------------------------------------
28414 Send DHCP Start Indication to HAL
28415 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028416 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28417 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028418}/*WDI_ProcessDHCPStartInd*/
28419
28420/**
28421 @brief Process DHCP Stop indication message and post it to HAL
28422
28423 @param pWDICtx: pointer to the WLAN DAL context
28424 pEventData: pointer to the event information structure
28425
28426 @see
28427 @return Result of the function call
28428*/
28429WDI_Status
28430WDI_ProcessDHCPStopInd
28431(
28432 WDI_ControlBlockType* pWDICtx,
28433 WDI_EventInfoType* pEventData
28434)
28435{
28436 wpt_uint8* pSendBuffer = NULL;
28437 wpt_uint16 usDataOffset = 0;
28438 wpt_uint16 usSendSize = 0;
28439 wpt_uint16 usLen = 0;
28440 WDI_DHCPInd* pwdiDHCPInd = NULL;
28441 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028442 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028443
28444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28445
28446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28447 "%s", __func__);
28448
28449 /*-------------------------------------------------------------------------
28450 Sanity check
28451 -------------------------------------------------------------------------*/
28452
28453 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28454 {
28455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28456 "%s: Invalid parameters", __func__);
28457 WDI_ASSERT(0);
28458 return WDI_STATUS_E_FAILURE;
28459 }
28460 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28461 /*-----------------------------------------------------------------------
28462 Get message buffer
28463 -----------------------------------------------------------------------*/
28464
28465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28466 WDI_DHCP_STOP_IND,
28467 sizeof(tDHCPInfo),
28468 &pSendBuffer, &usDataOffset, &usSendSize))||
28469 ( usSendSize < (usDataOffset + usLen )))
28470 {
28471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28472 "Unable to get send buffer in DHCP Start req %p ",
28473 pEventData);
28474 WDI_ASSERT(0);
28475 return WDI_STATUS_E_FAILURE;
28476 }
28477
Sandeep Puligillaee789512014-02-13 19:14:52 +053028478 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028479 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28480 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28481 WDI_MAC_ADDR_LEN);
28482
28483 pWDICtx->pReqStatusUserData = NULL;
28484 pWDICtx->pfncRspCB = NULL;
28485 /*-------------------------------------------------------------------------
28486 Send DHCP Stop indication to HAL
28487 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028488 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28489 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028490
28491}/*WDI_ProcessDHCPStopInd*/
28492
28493
Jeff Johnson295189b2012-06-20 16:38:30 -070028494#ifdef WLAN_FEATURE_GTK_OFFLOAD
28495/**
28496 @brief WDI_GTKOffloadReq will be called when the upper MAC
28497 wants to set GTK Rekey Counter while in power save. Upon
28498 the call of this API the WLAN DAL will pack and send a
28499 HAL GTK offload request message to the lower RIVA
28500 sub-system if DAL is in state STARTED.
28501
28502 In state BUSY this request will be queued. Request won't
28503 be allowed in any other state.
28504
28505 WDI_PostAssocReq must have been called.
28506
28507 @param pwdiGtkOffloadParams: the GTK offload as specified
28508 by the Device Interface
28509
28510 wdiGtkOffloadCb: callback for passing back the response
28511 of the GTK offload operation received from the device
28512
28513 pUserData: user data will be passed back with the
28514 callback
28515
28516 @see WDI_PostAssocReq
28517 @return Result of the function call
28518*/
28519WDI_Status
28520WDI_GTKOffloadReq
28521(
28522 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28523 WDI_GtkOffloadCb wdiGtkOffloadCb,
28524 void* pUserData
28525)
28526{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028527 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28529
28530 /*------------------------------------------------------------------------
28531 Sanity Check
28532 ------------------------------------------------------------------------*/
28533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28534 {
28535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28536 "WDI API call before module is initialized - Fail request");
28537
28538 return WDI_STATUS_E_NOT_ALLOWED;
28539 }
28540
28541 /*------------------------------------------------------------------------
28542 Fill in Event data and post to the Main FSM
28543 ------------------------------------------------------------------------*/
28544 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28545 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028546 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028547 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28548 wdiEventData.pUserData = pUserData;
28549
28550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28551}
28552
28553
28554/**
28555 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28556 MAC wants to get GTK Rekey Counter while in power save.
28557 Upon the call of this API the WLAN DAL will pack and
28558 send a HAL GTK offload request message to the lower RIVA
28559 sub-system if DAL is in state STARTED.
28560
28561 In state BUSY this request will be queued. Request won't
28562 be allowed in any other state.
28563
28564 WDI_PostAssocReq must have been called.
28565
28566 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28567 Information Message as specified by the
28568 Device Interface
28569
28570 wdiGtkOffloadGetInfoCb: callback for passing back the
28571 response of the GTK offload operation received from the
28572 device
28573
28574 pUserData: user data will be passed back with the
28575 callback
28576
28577 @see WDI_PostAssocReq
28578 @return Result of the function call
28579*/
28580WDI_Status
28581WDI_GTKOffloadGetInfoReq
28582(
28583 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28584 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28585 void* pUserData
28586)
28587{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028588 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28590
28591 /*------------------------------------------------------------------------
28592 Sanity Check
28593 ------------------------------------------------------------------------*/
28594 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28595 {
28596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28597 "WDI API call before module is initialized - Fail request");
28598
28599 return WDI_STATUS_E_NOT_ALLOWED;
28600 }
28601
28602 /*------------------------------------------------------------------------
28603 Fill in Event data and post to the Main FSM
28604 ------------------------------------------------------------------------*/
28605 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28606 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28607 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28608 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28609 wdiEventData.pUserData = pUserData;
28610
28611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28612}
28613
28614
28615/**
28616 @brief Process set GTK Offload Request function
28617
28618 @param pWDICtx: pointer to the WLAN DAL context
28619 pEventData: pointer to the event information structure
28620
28621 @see
28622 @return Result of the function call
28623*/
28624WDI_Status
28625WDI_ProcessGTKOffloadReq
28626(
28627 WDI_ControlBlockType* pWDICtx,
28628 WDI_EventInfoType* pEventData
28629)
28630{
28631 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28632 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28633 wpt_uint8* pSendBuffer = NULL;
28634 wpt_uint16 usDataOffset = 0;
28635 wpt_uint16 usSendSize = 0;
28636 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028637 wpt_uint8 ucCurrentSessionId = 0;
28638 WDI_BSSSessionType* pBSSSes = NULL;
28639
Jeff Johnson295189b2012-06-20 16:38:30 -070028640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28641
28642 /*-------------------------------------------------------------------------
28643 Sanity check
28644 -------------------------------------------------------------------------*/
28645 if (( NULL == pEventData ) ||
28646 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28647 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28648 {
28649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028651 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028652 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028653 }
28654
28655 /*-----------------------------------------------------------------------
28656 Get message buffer
28657 -----------------------------------------------------------------------*/
28658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28659 sizeof(gtkOffloadReqParams),
28660 &pSendBuffer, &usDataOffset, &usSendSize))||
28661 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28662 {
28663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028664 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028665 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28666 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028667 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028668 }
28669
28670 //
28671 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28672 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028673 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28674 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28675 &pBSSSes);
28676 if ( NULL == pBSSSes )
28677 {
28678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028679 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028680 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028681 }
28682
28683 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28684
Jeff Johnson295189b2012-06-20 16:38:30 -070028685 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28686 // Copy KCK
28687 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28688 // Copy KEK
28689 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28690 // Copy KeyReplayCounter
28691 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28692
28693 wpalMemoryCopy( pSendBuffer+usDataOffset,
28694 &gtkOffloadReqParams,
28695 sizeof(gtkOffloadReqParams));
28696
28697 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28698 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28699
28700 /*-------------------------------------------------------------------------
28701 Send Get STA Request to HAL
28702 -------------------------------------------------------------------------*/
28703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28704 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028705
28706fail:
28707 // Release the message buffer so we don't leak
28708 wpalMemoryFree(pSendBuffer);
28709
28710failRequest:
28711 //WDA should have failure check to avoid the memory leak
28712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028713}
28714
28715
28716/**
28717 @brief Process GTK Offload Get Information Request function
28718
28719 @param pWDICtx: pointer to the WLAN DAL context
28720 pEventData: pointer to the event information structure
28721
28722 @see
28723 @return Result of the function call
28724*/
28725WDI_Status
28726WDI_ProcessGTKOffloadGetInfoReq
28727(
28728 WDI_ControlBlockType* pWDICtx,
28729 WDI_EventInfoType* pEventData
28730)
28731{
28732 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28733 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28734 wpt_uint8* pSendBuffer = NULL;
28735 wpt_uint16 usDataOffset = 0;
28736 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028737 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28738 wpt_uint8 ucCurrentSessionId = 0;
28739 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028740
28741 /*-------------------------------------------------------------------------
28742 Sanity check
28743 -------------------------------------------------------------------------*/
28744 if (( NULL == pEventData ) ||
28745 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28746 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28747 {
28748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028750 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028751 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028752 }
28753
28754 /*-----------------------------------------------------------------------
28755 Get message buffer
28756 -----------------------------------------------------------------------*/
28757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028758 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028759 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028760 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028761 {
28762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028763 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028764 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28765 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028766 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028767 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028768 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28769 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28770 &pBSSSes);
28771 if ( NULL == pBSSSes )
28772 {
28773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028774 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028775 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028776 }
28777 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028778
28779 //
28780 // Don't need to fill send buffer other than header
28781 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028782 wpalMemoryCopy( pSendBuffer+usDataOffset,
28783 &halGtkOffloadGetInfoReqParams,
28784 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028785
28786 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28787 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28788
28789 /*-------------------------------------------------------------------------
28790 Send Get STA Request to HAL
28791 -------------------------------------------------------------------------*/
28792 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28793 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028794fail:
28795 // Release the message buffer so we don't leak
28796 wpalMemoryFree(pSendBuffer);
28797
28798failRequest:
28799 //WDA should have failure check to avoid the memory leak
28800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028801}
28802
28803/**
28804 @brief Process host offload Rsp function (called when a
28805 response is being received over the bus from HAL)
28806
28807 @param pWDICtx: pointer to the WLAN DAL context
28808 pEventData: pointer to the event information structure
28809
28810 @see
28811 @return Result of the function call
28812*/
28813WDI_Status
28814WDI_ProcessGtkOffloadRsp
28815(
28816 WDI_ControlBlockType* pWDICtx,
28817 WDI_EventInfoType* pEventData
28818)
28819{
Jeff Johnson295189b2012-06-20 16:38:30 -070028820 eHalStatus halStatus;
28821 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028822 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28823 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028824
28825 /*-------------------------------------------------------------------------
28826 Sanity check
28827 -------------------------------------------------------------------------*/
28828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28829 ( NULL == pEventData->pEventData))
28830 {
28831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028833 WDI_ASSERT(0);
28834 return WDI_STATUS_E_FAILURE;
28835 }
28836
Wilson Yang00256342013-10-10 23:13:38 -070028837 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28838
Jeff Johnson295189b2012-06-20 16:38:30 -070028839 /*-------------------------------------------------------------------------
28840 Extract response and send it to UMAC
28841 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028842 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28843 {
28844 wpalMemoryCopy( &halGtkOffloadRspParams,
28845 pEventData->pEventData,
28846 sizeof(halGtkOffloadRspParams));
28847
28848 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028849 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028850 wdiGtkOffloadRsparams.bssIdx =
28851 halGtkOffloadRspParams.bssIdx;
28852 }
28853 else
28854 {
28855 halStatus = *((eHalStatus*)pEventData->pEventData);
28856 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28857 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028858
28859 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028860 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028861
28862 return WDI_STATUS_SUCCESS;
28863}
28864
28865/**
28866 @brief Process GTK Offload Get Information Response function
28867
28868 @param pWDICtx: pointer to the WLAN DAL context
28869 pEventData: pointer to the event information structure
28870
28871 @see
28872 @return Result of the function call
28873*/
28874WDI_Status
28875WDI_ProcessGTKOffloadGetInfoRsp
28876(
28877 WDI_ControlBlockType* pWDICtx,
28878 WDI_EventInfoType* pEventData
28879)
28880{
Jeff Johnson295189b2012-06-20 16:38:30 -070028881 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028882 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028883 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28884 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028885 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028886
Jeff Johnson295189b2012-06-20 16:38:30 -070028887
28888 /*-------------------------------------------------------------------------
28889 Sanity check
28890 -------------------------------------------------------------------------*/
28891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28892 ( NULL == pEventData->pEventData ))
28893 {
28894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028896 WDI_ASSERT(0);
28897 return WDI_STATUS_E_FAILURE;
28898 }
28899
Wilson Yang00256342013-10-10 23:13:38 -070028900 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28901
28902 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028903 Extract response and send it to UMAC
28904 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028905 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28906 {
28907 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28908 pEventData->pEventData,
28909 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028910
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028911 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028912 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028913 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28914 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28915 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28916 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28917 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28918 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28919 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28920 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028921
28922 wpalMutexAcquire(&pWDICtx->wptMutex);
28923 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28924 &pBSSSes);
28925
28926 if ( NULL == pBSSSes )
28927 {
28928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28929 "Association sequence for this BSS does not exist or "
28930 "association no longer in progress - mysterious HAL response");
28931 wpalMutexRelease(&pWDICtx->wptMutex);
28932 return WDI_STATUS_E_NOT_ALLOWED;
28933 }
28934
28935 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28936 sizeof (wpt_macAddr));
28937 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028938 }
28939 else
28940 {
28941 halStatus = *((eHalStatus*)pEventData->pEventData);
28942 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28943 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028944 /*Notify UMAC*/
28945 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28946 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028947 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028948
28949 return WDI_STATUS_SUCCESS;
28950}
28951#endif // WLAN_FEATURE_GTK_OFFLOAD
28952
28953#ifdef WLAN_WAKEUP_EVENTS
28954WDI_Status
28955WDI_ProcessWakeReasonInd
28956(
28957 WDI_ControlBlockType* pWDICtx,
28958 WDI_EventInfoType* pEventData
28959)
28960{
28961 WDI_LowLevelIndType *pWdiInd;
28962 tpWakeReasonParams pWakeReasonParams;
28963 wpt_uint32 allocSize = 0;
28964
28965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028966 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028967
28968 /*-------------------------------------------------------------------------
28969 Sanity check
28970 -------------------------------------------------------------------------*/
28971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28972 ( NULL == pEventData->pEventData ))
28973 {
28974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028976 WDI_ASSERT( 0 );
28977 return WDI_STATUS_E_FAILURE;
28978 }
28979
28980 /*-------------------------------------------------------------------------
28981 Extract indication and send it to UMAC
28982 -------------------------------------------------------------------------*/
28983 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28984
28985 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28986
28987 //Allocate memory for WDI_WakeReasonIndType structure
28988 pWdiInd = wpalMemoryAllocate(allocSize) ;
28989
28990 if(NULL == pWdiInd)
28991 {
28992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028993 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028994 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028995 WDI_ASSERT(0);
28996 return WDI_STATUS_E_FAILURE;
28997 }
28998
28999 wpalMemoryZero(pWdiInd, allocSize);
29000
29001 /* Fill in the indication parameters*/
29002 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29003 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29004 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29005 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29006 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29007 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29008 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29009 &(pWakeReasonParams->aDataStart[0]),
29010 pWakeReasonParams->ulStoredDataLen);
29011
ltimariub77f24b2013-01-24 18:54:33 -080029012
29013 if ( pWDICtx->wdiLowLevelIndCB )
29014 {
29015 /*Notify UMAC*/
29016 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29017 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029018
29019 //Free memory allocated for WDI_WakeReasonIndType structure
29020 wpalMemoryFree(pWdiInd);
29021
29022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029023 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029024
29025 return WDI_STATUS_SUCCESS;
29026}
29027#endif // WLAN_WAKEUP_EVENTS
29028
29029void WDI_GetWcnssCompiledApiVersion
29030(
29031 WDI_WlanVersionType *pWcnssApiVersion
29032)
29033{
29034 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29035 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29036 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29037 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29038}
29039
29040/**
29041 @brief Process Set TM Level Rsp function (called when a
29042 response is being received over the bus from HAL)
29043
29044 @param pWDICtx: pointer to the WLAN DAL context
29045 pEventData: pointer to the event information structure
29046
29047 @see
29048 @return Result of the function call
29049*/
29050WDI_Status
29051WDI_ProcessSetTmLevelRsp
29052(
29053 WDI_ControlBlockType* pWDICtx,
29054 WDI_EventInfoType* pEventData
29055)
29056{
29057 WDI_Status wdiStatus;
29058 eHalStatus halStatus;
29059 WDI_SetTmLevelCb wdiSetTmLevelCb;
29060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29061
29062 /*-------------------------------------------------------------------------
29063 Sanity check
29064 -------------------------------------------------------------------------*/
29065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29066 ( NULL == pEventData->pEventData ))
29067 {
29068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029070 WDI_ASSERT(0);
29071 return WDI_STATUS_E_FAILURE;
29072 }
29073
29074 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29075
29076 /*-------------------------------------------------------------------------
29077 Extract response and send it to UMAC
29078 -------------------------------------------------------------------------*/
29079 halStatus = *((eHalStatus*)pEventData->pEventData);
29080 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29081
29082 /*Notify UMAC*/
29083 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29084
29085 return WDI_STATUS_SUCCESS;
29086}/*WDI_ProcessSetTmLevelRsp*/
29087
29088/**
29089 @brief Process Set Thermal Mitigation level Changed request
29090
29091 @param pWDICtx: pointer to the WLAN DAL context
29092 pEventData: pointer to the event information structure
29093
29094 @see
29095 @return Result of the function call
29096*/
29097WDI_Status
29098WDI_ProcessSetTmLevelReq
29099(
29100 WDI_ControlBlockType* pWDICtx,
29101 WDI_EventInfoType* pEventData
29102)
29103{
29104 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29105 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29106 wpt_uint8* pSendBuffer = NULL;
29107 wpt_uint16 usDataOffset = 0;
29108 wpt_uint16 usSendSize = 0;
29109 tSetThermalMitgationType halTmMsg;
29110
29111 /*-------------------------------------------------------------------------
29112 Sanity check
29113 -------------------------------------------------------------------------*/
29114 if (( NULL == pEventData ) ||
29115 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29116 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29117 {
29118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029120 WDI_ASSERT(0);
29121 return WDI_STATUS_E_FAILURE;
29122 }
29123
29124 /*-----------------------------------------------------------------------
29125 Get message buffer
29126 -----------------------------------------------------------------------*/
29127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29128 sizeof(halTmMsg),
29129 &pSendBuffer, &usDataOffset, &usSendSize))||
29130 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29131 {
29132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029133 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029134 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29135 WDI_ASSERT(0);
29136 return WDI_STATUS_E_FAILURE;
29137 }
29138
29139 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29140 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29141
29142 wpalMemoryCopy( pSendBuffer+usDataOffset,
29143 &halTmMsg,
29144 sizeof(halTmMsg));
29145
29146 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29147 pWDICtx->pfncRspCB = NULL;
29148 /*-------------------------------------------------------------------------
29149 Send Get STA Request to HAL
29150 -------------------------------------------------------------------------*/
29151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29152 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29153}
29154
29155/* Fill the value from the global features enabled array to the global capabilities
29156 * bitmap struct
29157 */
29158static void
29159FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29160{
29161 wpt_int8 i;
29162 for (i=0; i<len; i++)
29163 {
29164 setFeatCaps(fCaps, enabledFeat[i]);
29165 }
29166}
29167
29168/**
29169 @brief WDI_featureCapsExchangeReq
29170 Post feature capability bitmap exchange event.
29171 Host will send its own capability to FW in this req and
29172 expect FW to send its capability back as a bitmap in Response
29173
29174 @param
29175
29176 wdiFeatureCapsExchangeCb: callback called on getting the response.
29177 It is kept to mantain similarity between WDI reqs and if needed, can
29178 be used in future. Currently, It is set to NULL
29179
29180 pUserData: user data will be passed back with the
29181 callback
29182
29183 @see
29184 @return Result of the function call
29185*/
29186WDI_Status
29187WDI_featureCapsExchangeReq
29188(
29189 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29190 void* pUserData
29191)
29192{
29193 WDI_EventInfoType wdiEventData;
29194 wpt_int32 fCapsStructSize;
29195
29196 /*------------------------------------------------------------------------
29197 Sanity Check
29198 ------------------------------------------------------------------------*/
29199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29200 {
29201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29202 "WDI API call before module is initialized - Fail request");
29203
29204 return WDI_STATUS_E_NOT_ALLOWED;
29205 }
29206
29207 /* Allocate memory separately for global variable carrying FW caps */
29208 fCapsStructSize = sizeof(tWlanFeatCaps);
29209 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29210 if ( NULL == gpHostWlanFeatCaps )
29211 {
29212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029213 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029214 WDI_ASSERT(0);
29215 return WDI_STATUS_MEM_FAILURE;
29216 }
29217
29218 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29219
29220 /*------------------------------------------------------------------------
29221 Fill in Event data and post to the Main FSM
29222 ------------------------------------------------------------------------*/
29223 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29224 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029226 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029227 gpHostWlanFeatCaps->featCaps[0],
29228 gpHostWlanFeatCaps->featCaps[1],
29229 gpHostWlanFeatCaps->featCaps[2],
29230 gpHostWlanFeatCaps->featCaps[3]
29231 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29233 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029234 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29235 wdiEventData.pEventData = gpHostWlanFeatCaps;
29236 wdiEventData.uEventDataSize = fCapsStructSize;
29237 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29238 wdiEventData.pUserData = pUserData;
29239
29240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29241}
29242
29243/**
Yathish9f22e662012-12-10 14:21:35 -080029244 @brief Disable Active mode offload in Host
29245
29246 @param void
29247 @see
29248 @return void
29249*/
29250void
29251WDI_disableCapablityFeature(wpt_uint8 feature_index)
29252{
29253 supportEnabledFeatures[feature_index] = 0;
29254 return;
29255}
29256
29257/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029258 @brief Process Host-FW Capability Exchange Request function
29259
29260 @param pWDICtx: pointer to the WLAN DAL context
29261 pEventData: pointer to the event information structure
29262
29263 @see
29264 @return Result of the function call
29265*/
29266WDI_Status
29267WDI_ProcessFeatureCapsExchangeReq
29268(
29269 WDI_ControlBlockType* pWDICtx,
29270 WDI_EventInfoType* pEventData
29271)
29272{
29273 wpt_uint8* pSendBuffer = NULL;
29274 wpt_uint16 usDataOffset = 0;
29275 wpt_uint16 usSendSize = 0;
29276 wpt_uint16 usLen = 0;
29277
29278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29279
29280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029281 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029282
29283 /*-------------------------------------------------------------------------
29284 Sanity check
29285 -------------------------------------------------------------------------*/
29286 /* Call back function is NULL since not required for cap exchange req */
29287 if (( NULL == pEventData ) ||
29288 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29289 {
29290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029292 WDI_ASSERT(0);
29293 return WDI_STATUS_E_FAILURE;
29294 }
29295
29296 /*-----------------------------------------------------------------------
29297 Get message buffer
29298 -----------------------------------------------------------------------*/
29299 usLen = sizeof(tWlanFeatCaps);
29300
29301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29302 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29303 usLen,
29304 &pSendBuffer, &usDataOffset, &usSendSize))||
29305 ( usSendSize < (usDataOffset + usLen )))
29306 {
29307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029308 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029309 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29310 WDI_ASSERT(0);
29311 return WDI_STATUS_E_FAILURE;
29312 }
29313
29314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029315 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029316 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29317 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29318 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29319 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29320 );
29321
29322 /* Copy host caps after the offset in the send buffer */
29323 wpalMemoryCopy( pSendBuffer+usDataOffset,
29324 (tWlanFeatCaps *)pEventData->pEventData,
29325 usLen);
29326
29327 /*-------------------------------------------------------------------------
29328 Send Start Request to HAL
29329 -------------------------------------------------------------------------*/
29330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29331 (WDI_StartRspCb)pEventData->pCBfnc,
29332 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29333
29334}/*WDI_ProcessFeatureCapsExchangeReq*/
29335
29336/**
29337 @brief Process Host-FW Capability Exchange Response function
29338
29339 @param pWDICtx: pointer to the WLAN DAL context
29340 pEventData: pointer to the event information structure
29341
29342 @see
29343 @return Result of the function call
29344*/
29345WDI_Status
29346WDI_ProcessFeatureCapsExchangeRsp
29347(
29348 WDI_ControlBlockType* pWDICtx,
29349 WDI_EventInfoType* pEventData
29350)
29351{
29352 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29353 wpt_int32 fCapsStructSize;
29354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29355
29356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029357 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029358
29359 /*-------------------------------------------------------------------------
29360 Sanity check
29361 -------------------------------------------------------------------------*/
29362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29363 ( NULL == pEventData->pEventData ))
29364 {
29365 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029368 WDI_ASSERT(0);
29369 return WDI_STATUS_E_FAILURE;
29370 }
29371
29372 /* Allocate memory separately for global variable carrying FW caps */
29373 fCapsStructSize = sizeof(tWlanFeatCaps);
29374 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29375 if ( NULL == gpFwWlanFeatCaps )
29376 {
29377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029378 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029379 WDI_ASSERT(0);
29380 return WDI_STATUS_MEM_FAILURE;
29381 }
29382
29383 /*-------------------------------------------------------------------------
29384 Unpack HAL Response Message - the header was already extracted by the
29385 main Response Handling procedure
29386 -------------------------------------------------------------------------*/
29387 /*-------------------------------------------------------------------------
29388 Extract response and send it to UMAC
29389 -------------------------------------------------------------------------*/
29390
29391 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29392 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029394 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029395 gpFwWlanFeatCaps->featCaps[0],
29396 gpFwWlanFeatCaps->featCaps[1],
29397 gpFwWlanFeatCaps->featCaps[2],
29398 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029399 );
29400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29401 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029402 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29403
29404 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29405 if (wdiFeatureCapsExchangeCb != NULL)
29406 wdiFeatureCapsExchangeCb(NULL, NULL);
29407
29408 return WDI_STATUS_SUCCESS;
29409}
29410
Mohit Khanna4a70d262012-09-11 16:30:12 -070029411#ifdef WLAN_FEATURE_11AC
29412WDI_Status
29413WDI_ProcessUpdateVHTOpModeRsp
29414(
29415 WDI_ControlBlockType* pWDICtx,
29416 WDI_EventInfoType* pEventData
29417)
29418{
29419 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29420 WDI_Status wdiStatus;
29421 eHalStatus halStatus;
29422
29423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29424
29425 /*-------------------------------------------------------------------------
29426 Sanity check
29427 -------------------------------------------------------------------------*/
29428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29429 ( NULL == pEventData->pEventData))
29430 {
29431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029432 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029433 WDI_ASSERT(0);
29434 return WDI_STATUS_E_FAILURE;
29435 }
29436 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29437
29438 /*-------------------------------------------------------------------------
29439 Extract response and send it to UMAC
29440 -------------------------------------------------------------------------*/
29441 halStatus = *((eHalStatus*)pEventData->pEventData);
29442 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29443
29444 /*Notify UMAC*/
29445 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29446
29447 return WDI_STATUS_SUCCESS;
29448}
29449#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029450/**
29451 @brief WDI_getHostWlanFeatCaps
29452 WDI API that returns whether the feature passed to it as enum value in
29453 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29454 variable storing host capability bitmap to find this. This can be used by
29455 other moduels to decide certain things like call different APIs based on
29456 whether a particular feature is supported.
29457
29458 @param
29459
29460 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29461
29462 @see
29463 @return
29464 0 - if the feature is NOT supported in host
29465 any non-zero value - if the feature is SUPPORTED in host.
29466*/
29467wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29468{
29469 wpt_uint8 featSupported = 0;
29470 if (gpHostWlanFeatCaps != NULL)
29471 {
29472 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29473 }
29474 else
29475 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029477 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029478 }
29479 return featSupported;
29480}
29481
29482/**
29483 @brief WDI_getFwWlanFeatCaps
29484 WDI API that returns whether the feature passed to it as enum value in
29485 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29486 variable storing host capability bitmap to find this. This can be used by
29487 other moduels to decide certain things like call different APIs based on
29488 whether a particular feature is supported.
29489
29490 @param
29491
29492 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29493 in wlan_hal_msg.h.
29494
29495 @see
29496 @return
29497 0 - if the feature is NOT supported in FW
29498 any non-zero value - if the feature is SUPPORTED in FW.
29499*/
29500wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29501{
29502 wpt_uint8 featSupported = 0;
29503 if (gpFwWlanFeatCaps != NULL)
29504 {
29505 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29506 }
29507 else
29508 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029510 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029511 }
29512 return featSupported;
29513}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029514
29515#ifdef WLAN_FEATURE_11AC
29516WDI_Status
29517WDI_ProcessUpdateVHTOpModeReq
29518(
29519 WDI_ControlBlockType* pWDICtx,
29520 WDI_EventInfoType* pEventData
29521)
29522{
29523 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29524 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29525 wpt_uint8* pSendBuffer = NULL;
29526 wpt_uint16 usDataOffset = 0;
29527 wpt_uint16 usSendSize = 0;
29528
29529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29530
29531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029532 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029533
29534 /*-------------------------------------------------------------------------
29535 Sanity check
29536 -------------------------------------------------------------------------*/
29537 if (( NULL == pEventData ) ||
29538 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29539 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29540 {
29541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029542 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029543 WDI_ASSERT(0);
29544 return WDI_STATUS_E_FAILURE;
29545 }
29546
29547 /*-----------------------------------------------------------------------
29548 Get message buffer
29549 -----------------------------------------------------------------------*/
29550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29551 sizeof(WDI_UpdateVHTOpMode),
29552 &pSendBuffer, &usDataOffset, &usSendSize))||
29553 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29554 {
29555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29556 "Unable to get send buffer in update vht opMode req");
29557 WDI_ASSERT(0);
29558 return WDI_STATUS_E_FAILURE;
29559 }
29560
29561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029562 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029563
29564 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29565 sizeof(WDI_UpdateVHTOpMode));
29566
29567 /*-------------------------------------------------------------------------
29568 Send Start Request to HAL
29569 -------------------------------------------------------------------------*/
29570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29571 wdiVHTOpModeCb,
29572 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29573
29574}
29575
29576WDI_Status
29577WDI_UpdateVHTOpModeReq
29578(
29579 WDI_UpdateVHTOpMode *pData,
29580 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29581 void* pUserData
29582)
29583{
29584 WDI_EventInfoType wdiEventData;
29585
29586 /*------------------------------------------------------------------------
29587 Sanity Check
29588 ------------------------------------------------------------------------*/
29589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29590 {
29591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29592 "WDI API call before module is initialized - Fail request");
29593
29594 return WDI_STATUS_E_NOT_ALLOWED;
29595 }
29596
29597 /*------------------------------------------------------------------------
29598 Fill in Event data and post to the Main FSM
29599 ------------------------------------------------------------------------*/
29600 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29601 wdiEventData.pEventData = pData;
29602 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29603 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29604 wdiEventData.pUserData = pUserData;
29605
29606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029607 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029608
29609 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29610
29611}
29612#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029613
29614/**
29615 @brief WDI_TransportChannelDebug -
29616 Display DXE Channel debugging information
29617 User may request to display DXE channel snapshot
29618 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029619
Jeff Johnsonb88db982012-12-10 13:34:59 -080029620 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029621 @param debugFlags : Enable stall detect features
29622 defined by WPAL_DeviceDebugFlags
29623 These features may effect
29624 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029625 @see
29626 @return none
29627*/
29628void WDI_TransportChannelDebug
29629(
29630 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029631 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029632)
29633{
Mihir Shete40a55652014-03-02 14:14:47 +053029634 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029635 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029636}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029637/**
29638 @brief WDI_SsrTimerCB
29639 Callback function for SSR timer, if this is called then the graceful
29640 shutdown for Riva did not happen.
29641
29642 @param pUserData : user data to timer
29643
29644 @see
29645 @return none
29646*/
29647void
29648WDI_SsrTimerCB
29649(
29650 void *pUserData
29651)
29652{
29653 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29655
29656 if (NULL == pWDICtx )
29657 {
29658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029659 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029660 WDI_ASSERT(0);
29661 return;
29662 }
29663 wpalRivaSubystemRestart();
29664
29665 return;
29666
29667}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029668
29669/**
29670 @brief WDI_SetEnableSSR -
29671 This API is called to enable/disable SSR on WDI timeout.
29672
29673 @param enableSSR : enable/disable SSR
29674
29675 @see
29676 @return none
29677*/
29678void WDI_SetEnableSSR(wpt_boolean enableSSR)
29679{
29680 gWDICb.bEnableSSR = enableSSR;
29681}
Leo Chang9056f462013-08-01 19:21:11 -070029682
29683
29684#ifdef FEATURE_WLAN_LPHB
29685/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029686 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029687 This function will be invoked when FW detects low power
29688 heart beat failure
29689
29690 @param pWDICtx : wdi context
29691 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029692 @see
29693 @return Result of the function call
29694*/
29695WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029696WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029697(
29698 WDI_ControlBlockType* pWDICtx,
29699 WDI_EventInfoType* pEventData
29700)
29701{
29702 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029703 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29705
29706 /*-------------------------------------------------------------------------
29707 Sanity check
29708 -------------------------------------------------------------------------*/
29709 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29710 (NULL == pEventData->pEventData))
29711 {
29712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29713 "%s: Invalid parameters", __func__);
29714 WDI_ASSERT(0);
29715 return WDI_STATUS_E_FAILURE;
29716 }
29717
29718 /*-------------------------------------------------------------------------
29719 Extract indication and send it to UMAC
29720 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029721 wpalMemoryCopy(&lphbIndicationParam,
29722 pEventData->pEventData,
29723 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029724
Leo Changd9df8aa2013-09-26 13:32:26 -070029725 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029726 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029727 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029728 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029729 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029730 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029731 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029732 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029733 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029734 /*Notify UMAC*/
29735 if (pWDICtx->wdiLowLevelIndCB)
29736 {
29737 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29738 }
29739
29740 return WDI_STATUS_SUCCESS;
29741}
29742
29743/**
29744 @brief WDI_ProcessLphbCfgRsp -
29745 LPHB configuration response from FW
29746
29747 @param pWDICtx : wdi context
29748 pEventData : indication data
29749
29750 @see
29751 @return Result of the function call
29752*/
29753WDI_Status WDI_ProcessLphbCfgRsp
29754(
29755 WDI_ControlBlockType* pWDICtx,
29756 WDI_EventInfoType* pEventData
29757)
29758{
29759 WDI_Status wdiStatus;
29760 eHalStatus halStatus;
29761 WDI_LphbCfgCb wdiLphbCfgCb;
29762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29763
29764 /*-------------------------------------------------------------------------
29765 Sanity check
29766 -------------------------------------------------------------------------*/
29767 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29768 (NULL == pEventData->pEventData))
29769 {
29770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29771 "%s: Invalid parameters", __func__);
29772 WDI_ASSERT(0);
29773 return WDI_STATUS_E_FAILURE;
29774 }
29775
29776 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29777
29778 /*-------------------------------------------------------------------------
29779 Extract response and send it to UMAC
29780 -------------------------------------------------------------------------*/
29781 halStatus = *((eHalStatus*)pEventData->pEventData);
29782 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29783
29784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29785 "LPHB Cfg Rsp Return status %d", wdiStatus);
29786 /*Notify UMAC*/
29787 if (NULL != wdiLphbCfgCb)
29788 {
29789 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29790 }
29791
29792 return WDI_STATUS_SUCCESS;
29793}
29794
29795/**
29796 @brief WDI_ProcessLPHBConfReq -
29797 LPHB configuration request to FW
29798
29799 @param pWDICtx : wdi context
29800 pEventData : indication data
29801
29802 @see
29803 @return none
29804*/
29805WDI_Status WDI_ProcessLPHBConfReq
29806(
29807 WDI_ControlBlockType* pWDICtx,
29808 WDI_EventInfoType* pEventData
29809)
29810{
29811 WDI_LPHBReq *pLphbReqParams;
29812 WDI_Status wdiStatus;
29813 wpt_uint8* pSendBuffer = NULL;
29814 wpt_uint16 usDataOffset = 0;
29815 wpt_uint16 usSendSize = 0;
29816 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29818
29819 /*-------------------------------------------------------------------------
29820 Sanity check
29821 -------------------------------------------------------------------------*/
29822 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29823 {
29824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29825 "%s: Invalid parameters in Suspend ind",__func__);
29826 WDI_ASSERT(0);
29827 return WDI_STATUS_E_FAILURE;
29828 }
29829
29830 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29831
29832 /*-----------------------------------------------------------------------
29833 Get message buffer
29834 -----------------------------------------------------------------------*/
29835 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29836 WDI_LPHB_CFG_REQ,
29837 sizeof(tHalLowPowerHeartBeatReqMsg),
29838 &pSendBuffer, &usDataOffset, &usSendSize))||
29839 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29840 {
29841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29842 "Unable to get send buffer in LPHB Ind ");
29843 WDI_ASSERT(0);
29844 return WDI_STATUS_E_FAILURE;
29845 }
29846
29847 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29848 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29849
29850 halLphbReqRarams->lowPowerHeartBeatCmdType =
29851 (tANI_U16)(++pLphbReqParams->cmd);
29852 switch ((tANI_U16)pLphbReqParams->cmd)
29853 {
29854 case WDI_LPHB_SET_EN_PARAMS_INDID:
29855 halLphbReqRarams->sessionIdx =
29856 pLphbReqParams->params.lphbEnableReq.session;
29857 halLphbReqRarams->options.control.heartBeatEnable =
29858 pLphbReqParams->params.lphbEnableReq.enable;
29859 halLphbReqRarams->options.control.heartBeatType =
29860 pLphbReqParams->params.lphbEnableReq.item;
29861 break;
29862
29863 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29864 halLphbReqRarams->sessionIdx =
29865 pLphbReqParams->params.lphbTcpParamReq.session;
29866 halLphbReqRarams->options.tcpParams.timeOutSec =
29867 pLphbReqParams->params.lphbTcpParamReq.timeout;
29868 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29869 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29870 sizeof(v_U32_t));
29871 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29872 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29873 sizeof(v_U32_t));
29874
29875 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29876 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29877 WDI_MAC_ADDR_LEN);
29878
29879 halLphbReqRarams->options.tcpParams.hostPort =
29880 pLphbReqParams->params.lphbTcpParamReq.src_port;
29881 halLphbReqRarams->options.tcpParams.destPort =
29882 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029883 halLphbReqRarams->options.tcpParams.timePeriodSec =
29884 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29885 halLphbReqRarams->options.tcpParams.tcpSn =
29886 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029887 break;
29888
29889 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29890 halLphbReqRarams->sessionIdx =
29891 pLphbReqParams->params.lphbTcpFilterReq.session;
29892 halLphbReqRarams->options.tcpUdpFilter.offset =
29893 pLphbReqParams->params.lphbTcpFilterReq.offset;
29894 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29895 pLphbReqParams->params.lphbTcpFilterReq.length;
29896 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29897 pLphbReqParams->params.lphbTcpFilterReq.filter,
29898 WDI_LPHB_FILTER_LEN);
29899 break;
29900
29901 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29902 halLphbReqRarams->sessionIdx =
29903 pLphbReqParams->params.lphbUdpParamReq.session;
29904 halLphbReqRarams->options.udpParams.timeOutSec =
29905 pLphbReqParams->params.lphbUdpParamReq.timeout;
29906 halLphbReqRarams->options.udpParams.timePeriodSec =
29907 pLphbReqParams->params.lphbUdpParamReq.interval;
29908 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29909 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29910 sizeof(v_U32_t));
29911 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29912 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29913 sizeof(v_U32_t));
29914
29915 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29916 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29917 WDI_MAC_ADDR_LEN);
29918
29919 halLphbReqRarams->options.udpParams.hostPort =
29920 pLphbReqParams->params.lphbUdpParamReq.src_port;
29921 halLphbReqRarams->options.udpParams.destPort =
29922 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29923 break;
29924
29925 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29926 halLphbReqRarams->sessionIdx =
29927 pLphbReqParams->params.lphbUdpFilterReq.session;
29928 halLphbReqRarams->options.tcpUdpFilter.offset =
29929 pLphbReqParams->params.lphbUdpFilterReq.offset;
29930 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29931 pLphbReqParams->params.lphbUdpFilterReq.length;
29932 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29933 pLphbReqParams->params.lphbUdpFilterReq.filter,
29934 WDI_LPHB_FILTER_LEN);
29935 break;
29936
29937 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29938 /* NA */
29939 break;
29940
29941 default:
29942 break;
29943 }
29944
29945 /*-------------------------------------------------------------------------
29946 Send Suspend Request to HAL
29947 -------------------------------------------------------------------------*/
29948 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29949 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29950
29951 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29952 usSendSize, pWDICtx->pfncRspCB,
29953 pWDICtx->pReqStatusUserData,
29954 WDI_LPHB_CFG_RESP);
29955
29956 return wdiStatus;
29957}
29958
29959/**
29960 @brief WDI_LPHBConfReq -
29961 LPHB configuration request API
29962
29963 @param lphbconfParam : configuration parameter
29964 usrData : client context
29965 lphbCfgCb : callback function pointer
29966
29967 @see
29968 @return Success or fail status code
29969*/
29970WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29971 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29972{
29973 WDI_EventInfoType wdiEventData;
29974
29975 /*------------------------------------------------------------------------
29976 Sanity Check
29977 ------------------------------------------------------------------------*/
29978 if (eWLAN_PAL_FALSE == gWDIInitialized)
29979 {
29980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29981 "WDI API call before module is initialized - Fail request");
29982
29983 return WDI_STATUS_E_NOT_ALLOWED;
29984 }
29985
29986 /*------------------------------------------------------------------------
29987 Fill in Event data and post to the Main FSM
29988 ------------------------------------------------------------------------*/
29989 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29990 wdiEventData.pEventData = lphbconfParam;
29991 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29992 wdiEventData.pCBfnc = lphbCfgCb;
29993 wdiEventData.pUserData = usrData;
29994
29995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29996}
29997#endif /* FEATURE_WLAN_LPHB */
29998
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029999/**
30000 @brief WDI_ProcessIbssPeerInactivityInd
30001 Process peer inactivity indication coming from HAL
30002
30003 @param pWDICtx: pointer to the WLAN DAL context
30004 pEventData: pointer to the event information structure
30005 @see
30006 @return Result of the function call
30007*/
30008WDI_Status
30009WDI_ProcessIbssPeerInactivityInd
30010(
30011 WDI_ControlBlockType* pWDICtx,
30012 WDI_EventInfoType* pEventData
30013)
30014{
30015 WDI_LowLevelIndType wdiInd;
30016 tIbssPeerInactivityIndMsg halIbssIndMsg;
30017
30018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30019
30020 /*-------------------------------------------------------------------------
30021 Sanity check
30022 -------------------------------------------------------------------------*/
30023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30024 ( NULL == pEventData->pEventData ))
30025 {
30026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30027 "%s: Invalid parameters", __func__);
30028 WDI_ASSERT( 0 );
30029 return WDI_STATUS_E_FAILURE;
30030 }
30031
30032 /*-------------------------------------------------------------------------
30033 Extract indication and send it to UMAC
30034 -------------------------------------------------------------------------*/
30035 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30036 pEventData->pEventData,
30037 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30038
30039 /*Fill in the indication parameters*/
30040 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30041
30042 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30043 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30044
30045 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30046 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30047
30048 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30049 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30050 sizeof(tSirMacAddr));
30051
30052 /*Notify UMAC*/
30053 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30054
30055 return WDI_STATUS_SUCCESS;
30056
30057} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030058
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030059/**
30060*@brief WDI_RateUpdateInd will be called when the upper MAC
30061 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030062
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030063
30064 @param wdiRateUpdateIndParams:
30065
30066
30067 @see
30068 @return Result of the function call
30069*/
30070WDI_Status
30071WDI_RateUpdateInd
30072(
30073 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30074)
30075{
30076 WDI_EventInfoType wdiEventData;
30077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30078
30079 /*------------------------------------------------------------------------
30080 Sanity Check
30081 ------------------------------------------------------------------------*/
30082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30083 {
30084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30085 "WDI API call before module is initialized - Fail request");
30086
30087 return WDI_STATUS_E_NOT_ALLOWED;
30088 }
30089
30090 /*------------------------------------------------------------------------
30091 Fill in Event data and post to the Main FSM
30092 ------------------------------------------------------------------------*/
30093 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30094 wdiEventData.pEventData = wdiRateUpdateIndParams;
30095 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30096 wdiEventData.pCBfnc = NULL;
30097 wdiEventData.pUserData = NULL;
30098
30099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30100
30101}/* WDI_RateUpdateInd */
30102
30103/**
30104 @brief Process Rate Update Indication and post it to HAL
30105
30106 @param pWDICtx: pointer to the WLAN DAL context
30107 pEventData: pointer to the event information structure
30108
30109 @see
30110 @return Result of the function call
30111*/
30112WDI_Status
30113WDI_ProcessRateUpdateInd
30114(
30115 WDI_ControlBlockType* pWDICtx,
30116 WDI_EventInfoType* pEventData
30117)
30118{
30119 wpt_uint8* pSendBuffer = NULL;
30120 wpt_uint16 usDataOffset = 0;
30121 wpt_uint16 usSendSize = 0;
30122 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30123 tHalRateUpdateInd *pRateUpdateInd;
30124 WDI_Status wdiStatus;
30125
30126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30127
30128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30129 "%s", __func__);
30130
30131 /*-------------------------------------------------------------------------
30132 Sanity check
30133 -------------------------------------------------------------------------*/
30134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30135 {
30136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30137 "%s: Invalid parameters", __func__);
30138 WDI_ASSERT(0);
30139 return WDI_STATUS_E_FAILURE;
30140 }
30141 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30142 /*-----------------------------------------------------------------------
30143 Get message buffer
30144 -----------------------------------------------------------------------*/
30145
30146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30147 WDI_RATE_UPDATE_IND,
30148 sizeof(tHalRateUpdateParams),
30149 &pSendBuffer, &usDataOffset, &usSendSize))||
30150 ( usSendSize < (usDataOffset +
30151 sizeof(tHalRateUpdateParams) )))
30152 {
30153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30154 "Unable to get send buffer in Rate Update Indication %p ",
30155 pEventData);
30156 WDI_ASSERT(0);
30157 return WDI_STATUS_E_FAILURE;
30158 }
30159
30160 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30161
30162 /* Copy the bssid */
30163 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30164 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30165
30166 /* Copy the tx flags */
30167 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30168 pwdiRateUpdateInd->ucastDataRateTxFlag;
30169 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30170 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30171 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30172 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30173 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30174 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30175
30176 /* Copy the tx rates */
30177 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30178 pwdiRateUpdateInd->ucastDataRate;
30179 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30180 pwdiRateUpdateInd->reliableMcastDataRate;
30181 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30182 pwdiRateUpdateInd->mcastDataRate24GHz;
30183 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30184 pwdiRateUpdateInd->mcastDataRate5GHz;
30185
30186 /*-------------------------------------------------------------------------
30187 Send Rate Update Indication to HAL
30188 -------------------------------------------------------------------------*/
30189 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30190 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30191
30192 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30193
30194 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30195 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30196
30197} /* WDI_ProcessRateUpdateInd */
30198
30199#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030200/**
30201 @brief Process stop batch indication from WDA
30202
30203 @param pWDICtx: pointer to the WLAN DAL context
30204 pEventData: pointer to the event information structure
30205
30206 @see
30207 @return Result of the function call
30208*/
30209WDI_Status
30210WDI_ProcessStopBatchScanInd
30211(
30212 WDI_ControlBlockType* pWDICtx,
30213 WDI_EventInfoType* pEventData
30214)
30215{
30216 wpt_uint8* pSendBuffer = NULL;
30217 wpt_uint16 usDataOffset = 0;
30218 wpt_uint16 usSendSize = 0;
30219 WDI_Status wdiStatus;
30220 tHalBatchScanStopIndParam *pHalInd = NULL;
30221 WDI_StopBatchScanIndType *pWdiInd = NULL;
30222
30223
30224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30225
30226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30227 "%s", __func__);
30228
30229 /*-------------------------------------------------------------------------
30230 Sanity check
30231 -------------------------------------------------------------------------*/
30232
30233 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30234 {
30235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30236 "%s: Invalid parameters", __func__);
30237 WDI_ASSERT(0);
30238 return WDI_STATUS_E_FAILURE;
30239 }
30240 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30241 /*-----------------------------------------------------------------------
30242 Get message buffer
30243 -----------------------------------------------------------------------*/
30244
30245 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30246 WDI_STOP_BATCH_SCAN_IND,
30247 sizeof(tHalBatchScanStopIndParam),
30248 &pSendBuffer, &usDataOffset, &usSendSize))||
30249 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30250 {
30251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30252 "Unable to get send buffer in stop batch scan ind %p ",
30253 pEventData);
30254 WDI_ASSERT(0);
30255 return WDI_STATUS_E_FAILURE;
30256 }
30257
30258 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30259 pHalInd->param = pWdiInd->param;
30260
30261 pWDICtx->pReqStatusUserData = NULL;
30262 pWDICtx->pfncRspCB = NULL;
30263 /*-------------------------------------------------------------------------
30264 Send Stop batch scan indication to HAL
30265 -------------------------------------------------------------------------*/
30266 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30267 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30268}
30269
30270/**
30271 @brief This API is called to trigger batch scan results from FW
30272
30273 @param pWDICtx: pointer to the WLAN DAL context
30274 pEventData: pointer to the event information structure
30275
30276 @see
30277 @return Result of the function call
30278*/
30279WDI_Status
30280WDI_ProcessTriggerBatchScanResultInd
30281(
30282 WDI_ControlBlockType* pWDICtx,
30283 WDI_EventInfoType* pEventData
30284)
30285{
30286 WDI_Status wdiStatus;
30287 wpt_uint8* pSendBuffer = NULL;
30288 wpt_uint16 usDataOffset = 0;
30289 wpt_uint16 usSendSize = 0;
30290 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30291 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30292
30293
30294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30295
30296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30297 "%s", __func__);
30298
30299 /*-------------------------------------------------------------------------
30300 Sanity check
30301 -------------------------------------------------------------------------*/
30302
30303 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30304 {
30305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30306 "%s: Invalid parameters", __func__);
30307 WDI_ASSERT(0);
30308 return WDI_STATUS_E_FAILURE;
30309 }
30310 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30311 /*-----------------------------------------------------------------------
30312 Get message buffer
30313 -----------------------------------------------------------------------*/
30314
30315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30316 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30317 sizeof(tHalBatchScanTriggerResultParam),
30318 &pSendBuffer, &usDataOffset, &usSendSize))||
30319 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30320 {
30321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30322 "Unable to get send buffer in stop batch scan ind %p ",
30323 pEventData);
30324 WDI_ASSERT(0);
30325 return WDI_STATUS_E_FAILURE;
30326 }
30327
30328 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30329 pHalInd->param = pWdiInd->param;
30330
30331 pWDICtx->pReqStatusUserData = NULL;
30332 pWDICtx->pfncRspCB = NULL;
30333 /*-------------------------------------------------------------------------
30334 Send trigger batch scan result indication to HAL
30335 -------------------------------------------------------------------------*/
30336 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30337 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30338}
30339
30340
30341/**
30342 @brief Process set batch scan response from FW
30343
30344 @param pWDICtx: pointer to the WLAN DAL context
30345 pEventData: pointer to the event information structure
30346
30347 @see
30348 @return Result of the function call
30349*/
30350WDI_Status
30351WDI_ProcessSetBatchScanRsp
30352(
30353 WDI_ControlBlockType* pWDICtx,
30354 WDI_EventInfoType* pEventData
30355)
30356{
30357 WDI_SetBatchScanCb wdiSetBatchScanCb;
30358 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30359
30360 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30362
30363 /*sanity check*/
30364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30365 ( NULL == pEventData->pEventData))
30366 {
30367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30368 "%s: Invalid parameters", __func__);
30369 WDI_ASSERT(0);
30370 return WDI_STATUS_E_FAILURE;
30371 }
30372
30373 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30374 if ( NULL == wdiSetBatchScanCb)
30375 {
30376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30377 "%s: call back function is NULL", __func__);
30378 WDI_ASSERT(0);
30379 return WDI_STATUS_E_FAILURE;
30380 }
30381
30382 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30383
30384 if (NULL == pSetBatchScanRsp)
30385 {
30386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030387 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030388 pWDICtx, pEventData, pEventData->pEventData);
30389 WDI_ASSERT(0);
30390 return WDI_STATUS_E_FAILURE;
30391 }
30392
Sunil Duttbd736ed2014-05-26 21:19:41 +053030393 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030394 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30395
30396 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30397
Sunil Duttbd736ed2014-05-26 21:19:41 +053030398 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030399 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30400
30401 wpalMemoryFree(pSetBatchScanRsp);
30402
30403 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030404}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030405
30406/**
30407 @brief Process batch scan result indication from FW
30408
30409 @param pWDICtx: pointer to the WLAN DAL context
30410 pEventData: pointer to the event information structure
30411
30412 @see
30413 @return Result of the function call
30414*/
30415WDI_Status
30416WDI_ProcessBatchScanResultInd
30417(
30418 WDI_ControlBlockType* pWDICtx,
30419 WDI_EventInfoType* pEventData
30420)
30421{
30422 void *pBatchScanResultInd;
30423 WDI_LowLevelIndType wdiInd;
30424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30425
Sunil Duttbd736ed2014-05-26 21:19:41 +053030426 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30428 ( NULL == pEventData->pEventData))
30429 {
30430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30431 "%s: Invalid parameters", __func__);
30432 WDI_ASSERT(0);
30433 return WDI_STATUS_E_FAILURE;
30434 }
30435
Sunil Duttbd736ed2014-05-26 21:19:41 +053030436 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030437 pBatchScanResultInd = (void *)pEventData->pEventData;
30438
Sunil Duttbd736ed2014-05-26 21:19:41 +053030439 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030440 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30441
30442 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30443
Sunil Duttbd736ed2014-05-26 21:19:41 +053030444 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030445 if (pWDICtx->wdiLowLevelIndCB)
30446 {
30447 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30448 }
30449 else
30450 {
30451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30452 "%s: WDILowLevelIndCb is null", __func__);
30453 WDI_ASSERT(0);
30454 return WDI_STATUS_E_FAILURE;
30455 }
30456
30457 return WDI_STATUS_SUCCESS;
30458} /*End of WDI_ProcessBatchScanResultInd*/
30459
Sunil Duttbd736ed2014-05-26 21:19:41 +053030460#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30461/**
30462 @brief Process Link Layer Statistics Result indication from FW
30463
30464 @param pWDICtx: pointer to the WLAN DAL context
30465 pEventData: pointer to the event information structure
30466
30467 @see
30468 @return Result of the function call
30469*/
30470WDI_Status
30471WDI_ProcessLinkLayerStatsResultsInd
30472(
30473 WDI_ControlBlockType* pWDICtx,
30474 WDI_EventInfoType* pEventData
30475)
30476{
30477 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030478 WDI_LLstatsResultsType *halLLStatsResults;
30479 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030480 WDI_LowLevelIndType wdiInd;
30481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30482
30483 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30484 "%s: Event RESULTS Indication", __func__);
30485
30486 /* sanity check */
30487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30488 ( NULL == pEventData->pEventData))
30489 {
30490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30491 "%s: Invalid parameters", __func__);
30492 WDI_ASSERT(0);
30493 return WDI_STATUS_E_FAILURE;
30494 }
30495
30496 /* extract response and send it to UMAC */
30497 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30498
30499 /* Fill in the indication parameters */
30500 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30501
Dino Mycled3d50022014-07-07 12:58:25 +053030502 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30503 = pLinkLayerStatsInd;
30504
30505 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30506
30507
30508 /* Need to fill in the MAC address */
30509 if ( WDI_STATUS_SUCCESS !=
30510 WDI_STATableGetStaMacAddr(pWDICtx,
30511 halLLStatsResults->iface_id,
30512 &macAddr))
30513 {
30514 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30515 " ifaceId: %u does not exist in the WDI Station Table",
30516 halLLStatsResults->iface_id);
30517
30518 return WDI_STATUS_E_FAILURE;
30519 }
30520 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30521 macAddr, WDI_MAC_ADDR_LEN);
30522
30523 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30524 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30525 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030526
30527 /* Notify UMAC */
30528 if (pWDICtx->wdiLowLevelIndCB)
30529 {
30530 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30531 }
30532 else
30533 {
30534 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30535 "%s: WDILowLevelIndCb is null", __func__);
30536 WDI_ASSERT(0);
30537 return WDI_STATUS_E_FAILURE;
30538 }
30539
30540 return WDI_STATUS_SUCCESS;
30541} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30542#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30543
Rajeev79dbe4c2013-10-05 11:03:42 +053030544/**
30545 @brief WDI_ProcessSetBatchScanReq -
30546 Set batch scan request to FW
30547
30548 @param pWDICtx : wdi context
30549 pEventData : indication data
30550
30551 @see
30552 @return none
30553*/
30554WDI_Status WDI_ProcessSetBatchScanReq
30555(
30556 WDI_ControlBlockType* pWDICtx,
30557 WDI_EventInfoType* pEventData
30558)
30559{
30560 WDI_SetBatchScanReqType *pWdiReq;
30561 WDI_Status wdiStatus;
30562 wpt_uint8* pSendBuffer = NULL;
30563 wpt_uint16 usDataOffset = 0;
30564 wpt_uint16 usSendSize = 0;
30565 tHalBatchScanSetParams *pHalReq;
30566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30567
30568 /*sanity check*/
30569 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30570 {
30571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30572 "%s: Invalid parameters in set batch scan request", __func__);
30573 WDI_ASSERT(0);
30574 return WDI_STATUS_E_FAILURE;
30575 }
30576
30577
30578 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30579
30580
30581 /*get message buffer*/
30582 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30583 WDI_SET_BATCH_SCAN_REQ,
30584 sizeof(tHalBatchScanSetParams),
30585 &pSendBuffer, &usDataOffset, &usSendSize))||
30586 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30587 {
30588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30589 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30590 WDI_ASSERT(0);
30591 return WDI_STATUS_E_FAILURE;
30592 }
30593
30594 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30595
30596 pHalReq->rtt = pWdiReq->rtt;
30597 pHalReq->rfBand = pWdiReq->rfBand;
30598 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30599 pHalReq->scanInterval = pWdiReq->scanFrequency;
30600 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30601
30602 /*send set batch scan request to fw*/
30603 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30604 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30605
30606 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30607 usSendSize, pWDICtx->pfncRspCB,
30608 pWDICtx->pReqStatusUserData,
30609 WDI_SET_BATCH_SCAN_RESP);
30610
30611 return wdiStatus;
30612}
30613
30614/**
30615 @brief WDI_SetBatchScanReq
30616 This API is called to set batch scan request in FW
30617
30618 @param pBatchScanReqParam : pointer to set batch scan re param
30619 usrData : Client context
30620 setBatchScanRspCb : set batch scan resp callback
30621 @see
30622 @return SUCCESS or FAIL
30623*/
30624WDI_Status WDI_SetBatchScanReq
30625(
30626 void *pBatchScanReqParam,
30627 void *usrData,
30628 WDI_SetBatchScanCb setBatchScanRspCb
30629)
30630{
30631 WDI_EventInfoType wdiEventData;
30632
30633 /*sanity check*/
30634 if (eWLAN_PAL_FALSE == gWDIInitialized)
30635 {
30636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30637 "WDI API call before module is initialized - Fail request");
30638
30639 return WDI_STATUS_E_NOT_ALLOWED;
30640 }
30641
30642 /* fill in event data and post to the main FSM */
30643 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30644 wdiEventData.pEventData = pBatchScanReqParam;
30645 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30646 wdiEventData.pCBfnc = setBatchScanRspCb;
30647 wdiEventData.pUserData = usrData;
30648
30649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30650}
30651
30652/**
30653 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30654
30655 @param None
30656
30657 @see
30658
30659 @return Status of the request
30660*/
30661WDI_Status
30662WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30663{
30664 WDI_EventInfoType wdiEventData;
30665
30666 /*-------------------------------------------------------------------------
30667 Sanity Check
30668 ------------------------------------------------------------------------*/
30669 if (eWLAN_PAL_FALSE == gWDIInitialized)
30670 {
30671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30672 "WDI API call before module is initialized - Fail request!");
30673
30674 return WDI_STATUS_E_NOT_ALLOWED;
30675 }
30676
30677 /*-------------------------------------------------------------------------
30678 Fill in Event data and post to the Main FSM
30679 ------------------------------------------------------------------------*/
30680 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30681 wdiEventData.pEventData = pWdiReq;
30682 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30683 wdiEventData.pCBfnc = NULL;
30684 wdiEventData.pUserData = NULL;
30685
30686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30687}
30688
30689/**
30690 @brief WDI_TriggerBatchScanResultInd
30691 This API is called to pull batch scan result from FW
30692
30693 @param pWdiReq : pointer to get batch scan ind param
30694 @see
30695 @return SUCCESS or FAIL
30696*/
30697WDI_Status WDI_TriggerBatchScanResultInd
30698(
30699 WDI_TriggerBatchScanResultIndType *pWdiReq
30700)
30701{
30702 WDI_EventInfoType wdiEventData;
30703 /*-------------------------------------------------------------------------
30704 Sanity Check
30705 ------------------------------------------------------------------------*/
30706 if (eWLAN_PAL_FALSE == gWDIInitialized)
30707 {
30708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30709 "WDI API call before module is initialized - Fail request!");
30710
30711 return WDI_STATUS_E_NOT_ALLOWED;
30712 }
30713
30714 /*-------------------------------------------------------------------------
30715 Fill in Event data and post to the Main FSM
30716 ------------------------------------------------------------------------*/
30717 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30718 wdiEventData.pEventData = pWdiReq;
30719 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30720 wdiEventData.pCBfnc = NULL;
30721 wdiEventData.pUserData = NULL;
30722
30723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30724}
Rajeev79dbe4c2013-10-05 11:03:42 +053030725#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030726
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030727/**
30728 @brief Process Update Channel Rsp function (called when a response is
30729 being received over the bus from HAL)
30730
30731 @param pWDICtx: pointer to the WLAN DAL context
30732 pEventData: pointer to the event information structure
30733
30734 @see
30735 @return Result of the function call
30736*/
30737WDI_Status
30738WDI_ProcessUpdateChanRsp
30739(
30740 WDI_ControlBlockType* pWDICtx,
30741 WDI_EventInfoType* pEventData
30742)
30743{
30744 WDI_Status wdiStatus;
30745 eHalStatus halStatus;
30746 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30748
30749 /*-------------------------------------------------------------------------
30750 Sanity check
30751 -------------------------------------------------------------------------*/
30752 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30753 ( NULL == pEventData->pEventData))
30754 {
30755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30756 "%s: Invalid parameters", __func__);
30757 WDI_ASSERT(0);
30758 return WDI_STATUS_E_FAILURE;
30759 }
30760
30761 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30762
30763 /*-------------------------------------------------------------------------
30764 Extract response and send it to UMAC
30765 -------------------------------------------------------------------------*/
30766 halStatus = *((eHalStatus*)pEventData->pEventData);
30767 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30768
30769 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30770
30771 return WDI_STATUS_SUCCESS;
30772}/*WDI_ProcessUpdateChanRsp*/
30773
Leo Chang0b0e45a2013-12-15 15:18:55 -080030774#ifdef FEATURE_WLAN_CH_AVOID
30775/**
30776 @brief v -WDI_ProcessChAvoidInd
30777
30778
30779 @param pWDICtx : wdi context
30780 pEventData : indication data
30781 @see
30782 @return Result of the function call
30783*/
30784WDI_Status
30785WDI_ProcessChAvoidInd
30786(
30787 WDI_ControlBlockType* pWDICtx,
30788 WDI_EventInfoType* pEventData
30789)
30790{
30791 WDI_LowLevelIndType wdiInd;
30792 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30793 wpt_uint16 rangeLoop;
30794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30795
30796 /*-------------------------------------------------------------------------
30797 Sanity check
30798 -------------------------------------------------------------------------*/
30799 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30800 (NULL == pEventData->pEventData))
30801 {
30802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30803 "%s: Invalid parameters", __func__);
30804 WDI_ASSERT(0);
30805 return WDI_STATUS_E_FAILURE;
30806 }
30807
30808 /*-------------------------------------------------------------------------
30809 Extract indication and send it to UMAC
30810 -------------------------------------------------------------------------*/
30811 wpalMemoryCopy(&chAvoidIndicationParam,
30812 pEventData->pEventData,
30813 sizeof(tHalAvoidFreqRangeIndParams));
30814
30815 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30816 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30817 chAvoidIndicationParam.avoidCnt;
30818 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30819 (void *)chAvoidIndicationParam.avoidRange,
30820 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30821 sizeof(WDI_ChAvoidFreqType));
30822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30823 "%s: band count %d", __func__,
30824 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30825 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30826 {
30827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30828 "%s: srart freq %d, end freq %d", __func__,
30829 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30830 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30831 }
30832
30833 /*Notify UMAC*/
30834 if (pWDICtx->wdiLowLevelIndCB)
30835 {
30836 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30837 }
30838
30839 return WDI_STATUS_SUCCESS;
30840}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030841
Leo Chang0b0e45a2013-12-15 15:18:55 -080030842#endif /* FEATURE_WLAN_CH_AVOID */
30843
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030844/**
30845 @brief Process OBSS Start scan result indication
30846
30847 @param pWDICtx: pointer to the WLAN DAL context
30848 pEventData: pointer to the event information structure
30849
30850 @see
30851 @return Result of the function call
30852*/
30853WDI_Status
30854WDI_ProcessHT40OBSSScanInd
30855(
30856 WDI_ControlBlockType* pWDICtx,
30857 WDI_EventInfoType* pEventData
30858)
30859{
30860 wpt_uint8* pSendBuffer = NULL;
30861 wpt_uint16 usDataOffset = 0;
30862 wpt_uint16 usSendSize = 0;
30863 wpt_uint16 usLen = 0;
30864 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30865 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30866 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30867 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30868
30869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30870
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030872 "%s", __func__);
30873
30874 /*-------------------------------------------------------------------------
30875 Sanity check
30876 -------------------------------------------------------------------------*/
30877 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30878 {
30879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30880 "%s: Invalid parameters", __func__);
30881 WDI_ASSERT(0);
30882 return WDI_STATUS_E_FAILURE;
30883 }
30884 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30885
30886 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30887 /*-----------------------------------------------------------------------
30888 Get message buffer
30889 -----------------------------------------------------------------------*/
30890
30891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30892 WDI_START_HT40_OBSS_SCAN_IND,
30893 sizeof(tHT40ObssScanIndType),
30894 &pSendBuffer, &usDataOffset, &usSendSize))||
30895 ( usSendSize < (usDataOffset + usLen )))
30896 {
30897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30898 "Unable to get send buffer in HT40 OBSS Start req %p ",
30899 pEventData);
30900 WDI_ASSERT(0);
30901 return WDI_STATUS_E_FAILURE;
30902 }
30903 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30904 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30905 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30906 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30907 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30908 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30909 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30910 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30911 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30912 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30913 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30914 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30915 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30916 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30917 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30918 pHT40ObssScanInd->OBSSScanActivityThreshold =
30919 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30920 pHT40ObssScanInd->selfStaIdx =
30921 pwdiHT40OBSSScanInd->selfStaIdx;
30922 pHT40ObssScanInd->bssIdx =
30923 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030924 pHT40ObssScanInd->currentOperatingClass =
30925 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030926 pHT40ObssScanInd->fortyMHZIntolerent =
30927 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30928 pHT40ObssScanInd->channelCount =
30929 pwdiHT40OBSSScanInd->channelCount;
30930
30931 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30932 WDI_ROAM_SCAN_MAX_CHANNELS);
30933 pHT40ObssScanInd->ieFieldLen =
30934 pwdiHT40OBSSScanInd->ieFieldLen;
30935
30936 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30937 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30938 pWDICtx->pReqStatusUserData = NULL;
30939 pWDICtx->pfncRspCB = NULL;
30940
30941 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30942 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30943
30944 /*-------------------------------------------------------------------------
30945 Send OBSS Start Indication to HAL
30946 -------------------------------------------------------------------------*/
30947 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30948 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30949
30950} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30951
30952
30953/**
30954 @brief wdi_HT40OBSSScanInd
30955 This API is called to start OBSS scan
30956
30957 @param pWdiReq : pointer to get ind param
30958 @see
30959 @return SUCCESS or FAIL
30960*/
30961WDI_Status WDI_HT40OBSSScanInd
30962(
30963 WDI_HT40ObssScanParamsType *pWdiReq
30964)
30965{
30966 WDI_EventInfoType wdiEventData;
30967
30968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30969 "%s", __func__);
30970 /*-------------------------------------------------------------------------
30971 Sanity Check
30972 ------------------------------------------------------------------------*/
30973 if (eWLAN_PAL_FALSE == gWDIInitialized)
30974 {
30975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30976 "WDI API call before module is initialized - Fail request!");
30977
30978 return WDI_STATUS_E_NOT_ALLOWED;
30979 }
30980
30981 /*-------------------------------------------------------------------------
30982 Fill in Event data and post to the Main FSM
30983 ------------------------------------------------------------------------*/
30984 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30985 wdiEventData.pEventData = pWdiReq;
30986 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30987 wdiEventData.pCBfnc = NULL;
30988 wdiEventData.pUserData = NULL;
30989
30990
30991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30992}
30993
30994/**
30995 @brief Process OBSS Stop scan result
30996
30997 @param pWDICtx: pointer to the WLAN DAL context
30998 pEventData: pointer to the event information structure
30999
31000 @see
31001 @return Result of the function call
31002*/
31003WDI_Status
31004WDI_ProcessHT40OBSSStopScanInd
31005(
31006 WDI_ControlBlockType* pWDICtx,
31007 WDI_EventInfoType* pEventData
31008)
31009{
31010 wpt_uint8* pSendBuffer = NULL;
31011 wpt_uint16 usDataOffset = 0;
31012 wpt_uint16 usSendSize = 0;
31013 wpt_uint16 usLen = 0;
31014 wpt_uint8 *wdiBssIdx = 0;
31015 tANI_U8 *bssIdx = 0;
31016 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31017
31018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31019
31020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31021 "%s", __func__);
31022
31023 /*-------------------------------------------------------------------------
31024 Sanity check
31025 -------------------------------------------------------------------------*/
31026 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31027 {
31028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31029 "%s: Invalid parameters", __func__);
31030 WDI_ASSERT(0);
31031 return WDI_STATUS_E_FAILURE;
31032 }
31033 bssIdx = (wpt_uint8*)pEventData->pEventData;
31034 /*-----------------------------------------------------------------------
31035 Get message buffer
31036 -----------------------------------------------------------------------*/
31037
31038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31039 WDI_STOP_HT40_OBSS_SCAN_IND,
31040 sizeof(tANI_U8),
31041 &pSendBuffer, &usDataOffset, &usSendSize))||
31042 ( usSendSize < (usDataOffset + usLen )))
31043 {
31044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31045 "Unable to get send buffer in HT40 OBSS Start req %p ",
31046 pEventData);
31047 WDI_ASSERT(0);
31048 return WDI_STATUS_E_FAILURE;
31049 }
31050
31051 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31052 bssIdx = wdiBssIdx;
31053
31054 pWDICtx->pReqStatusUserData = NULL;
31055 pWDICtx->pfncRspCB = NULL;
31056
31057 /*-------------------------------------------------------------------------
31058 Send DHCP Start Indication to HAL
31059 -------------------------------------------------------------------------*/
31060 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31061 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31062} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31063
31064/**
31065 @brief WDI_HT40OBSSStopScanInd
31066 This API is called to start OBSS scan
31067 @param pWdiReq : pointer to get ind param
31068 @see
31069 @return SUCCESS or FAIL
31070*/
31071WDI_Status WDI_HT40OBSSStopScanInd
31072(
31073 wpt_uint8 bssIdx
31074)
31075{
31076 WDI_EventInfoType wdiEventData;
31077
31078 /*-------------------------------------------------------------------------
31079 Sanity Check
31080 ------------------------------------------------------------------------*/
31081 if (eWLAN_PAL_FALSE == gWDIInitialized)
31082 {
31083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31084 "WDI API call before module is initialized - Fail request!");
31085
31086 return WDI_STATUS_E_NOT_ALLOWED;
31087 }
31088
31089 /*-------------------------------------------------------------------------
31090 Fill in Event data and post to the Main FSM
31091 ------------------------------------------------------------------------*/
31092 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31093 wdiEventData.pEventData = &bssIdx;
31094 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31095 wdiEventData.pCBfnc = NULL;
31096 wdiEventData.pUserData = NULL;
31097
31098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31099}
31100
c_hpothu86041002014-04-14 19:06:51 +053031101WDI_Status
31102WDI_printRegInfo
31103(
31104 WDI_ControlBlockType* pWDICtx,
31105 WDI_EventInfoType* pEventData
31106)
31107{
31108 tHalRegDebugInfo *pRegTable;
31109 tHalRegDebugInfoParams *pRegParams;
31110 uint32 cnt=0;
31111
31112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31113 "%s: ", __func__);
31114 /*-------------------------------------------------------------------------
31115 Sanity check
31116 -------------------------------------------------------------------------*/
31117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31118 ( NULL == pEventData->pEventData))
31119 {
31120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31121 "%s: Invalid parameters", __func__);
31122 WDI_ASSERT(0);
31123 return WDI_STATUS_E_FAILURE;
31124 }
31125
31126 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31127
31128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31129 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31130 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31131
31132 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31133
31134 if (pRegParams->regCount <= 0)
31135 {
31136 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31137 "%s incorrect parameters passed", __func__);
31138 return WDI_STATUS_E_FAILURE;
31139 }
31140
31141 while(pRegParams->regCount--)
31142 {
31143 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31144 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31145 cnt++;
31146 }
31147
31148 return WDI_STATUS_SUCCESS;
31149}
c_hpothu92367912014-05-01 15:18:17 +053031150
31151/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031152 * FUNCTION: WDI_delBaInd
31153 * send the delBA to peer.
31154 */
31155
31156WDI_Status
31157WDI_delBaInd
31158(
31159 WDI_ControlBlockType* pWDICtx,
31160 WDI_EventInfoType* pEventData
31161
31162)
31163{
31164 tHalWlanDelBaIndMsg halDelBaInd;
31165 WDI_LowLevelIndType wdiInd;
31166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31167
31168 /*-------------------------------------------------------------------------
31169 Sanity check
31170 -------------------------------------------------------------------------*/
31171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31172 ( NULL == pEventData->pEventData))
31173 {
31174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31175 "%s: Invalid parameters", __func__);
31176 WDI_ASSERT(0);
31177 return WDI_STATUS_E_FAILURE;
31178 }
31179
31180 /*-------------------------------------------------------------------------
31181 Extract indication and send it to UMAC
31182 -------------------------------------------------------------------------*/
31183
31184 /* Parameters need to be unpacked according to HAL struct*/
31185 wpalMemoryCopy( &halDelBaInd,
31186 pEventData->pEventData,
31187 sizeof(halDelBaInd));
31188
31189 /*Fill in the indication parameters*/
31190 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31191
31192 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31193 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31194 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31195
31196 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31197 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31198 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31199
31200 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31201 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31202 if ( pWDICtx->wdiLowLevelIndCB )
31203 {
31204 /*Notify UMAC*/
31205 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31206 }
31207
31208 return WDI_STATUS_SUCCESS;
31209
31210
31211}
31212
31213/*
c_hpothu92367912014-05-01 15:18:17 +053031214 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31215 * send the response to PE with beacon miss count
31216 * received from WDI.
31217 */
31218WDI_Status
31219WDI_ProcessGetBcnMissRateRsp
31220(
31221 WDI_ControlBlockType* pWDICtx,
31222 WDI_EventInfoType* pEventData
31223)
31224{
31225 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31226 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31227
31228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31229 "In %s",__func__);
31230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31231
31232 /*-------------------------------------------------------------------------
31233 Sanity check
31234 -------------------------------------------------------------------------*/
31235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31236 ( NULL == pEventData->pEventData))
31237 {
31238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31239 "%s: Invalid parameters", __func__);
31240 WDI_ASSERT(0);
31241 return WDI_STATUS_E_FAILURE;
31242 }
31243
31244 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31245 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31246
31247 /*Notify UMAC*/
31248 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31249 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31250 return WDI_STATUS_SUCCESS;
31251}
31252
31253/*
31254 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31255 * Request to WDI to get missed beacon rate.
31256 */
31257WDI_Status
31258WDI_ProcessGetBcnMissRateReq
31259(
31260 WDI_ControlBlockType* pWDICtx,
31261 WDI_EventInfoType* pEventData
31262)
31263{
31264 wpt_uint8* pSendBuffer = NULL;
31265 wpt_uint16 usDataOffset = 0;
31266 wpt_uint16 usSendSize = 0;
31267 wpt_uint8 ucCurrentBSSSesIdx = 0;
31268 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031269 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31270 tHalBcnMissRateReqParams halBcnMissRateReq;
31271
31272/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31273
31274 /*-------------------------------------------------------------------------
31275 Sanity check
31276 -------------------------------------------------------------------------*/
31277 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31278 ( NULL == pEventData->pCBfnc ) )
31279 {
31280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31281 "%s: Invalid parameters", __func__);
31282 WDI_ASSERT(0);
31283 return WDI_STATUS_E_FAILURE;
31284 }
31285
31286 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31287
31288 wpalMutexAcquire(&pWDICtx->wptMutex);
31289
31290 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31291 pEventData->pEventData, &pBSSSes);
31292 if ( NULL == pBSSSes )
31293 {
31294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31295 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031296 MAC_ADDRESS_STR, __func__,
31297 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031298 wpalMutexRelease(&pWDICtx->wptMutex);
31299 return WDI_STATUS_E_NOT_ALLOWED;
31300 }
31301 wpalMutexRelease(&pWDICtx->wptMutex);
31302
31303 /*-----------------------------------------------------------------------
31304 Get message buffer
31305 -----------------------------------------------------------------------*/
31306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31307 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31308 sizeof(tHalBcnMissRateReqParams),
31309 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31310 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31311 {
31312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31313 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31314 pEventData);
31315 WDI_ASSERT(0);
31316 return WDI_STATUS_E_FAILURE;
31317 }
31318
31319 pWDICtx->wdiReqStatusCB = NULL;
31320 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31321
31322 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31323
31324 wpalMemoryCopy( pSendBuffer+usDataOffset,
31325 &halBcnMissRateReq,
31326 sizeof(tHalBcnMissRateReqParams));
31327 /*-------------------------------------------------------------------------
31328 Send Get STA Request to HAL
31329 -------------------------------------------------------------------------*/
31330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31331 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31332}
31333
31334/**
31335 @brief WDI_GetBcnMissRate
31336
31337 @param pUserData: user data will be passed back with the
31338 callback
31339 WDI_GetBcnMissRateCb: callback for passing back the response
31340 of the get stats operation received from the device
31341 bssid: bssid, to send bssIdx to FW
31342
31343 @return SUCCESS or FAIL
31344*/
31345WDI_Status WDI_GetBcnMissRate( void *pUserData,
31346 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31347 tANI_U8 *bssid )
31348{
31349 WDI_EventInfoType wdiEventData;
31350
31351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31352
31353 /*------------------------------------------------------------------------
31354 Sanity Check
31355 ------------------------------------------------------------------------*/
31356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31357 {
31358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31359 "WDI API call before module is initialized - Fail request");
31360
31361 return WDI_STATUS_E_NOT_ALLOWED;
31362 }
31363
31364 /*------------------------------------------------------------------------
31365 Fill in Event data and post to the Main FSM
31366 ------------------------------------------------------------------------*/
31367 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31368 wdiEventData.pEventData = bssid;
31369 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31370 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31371 wdiEventData.pUserData = pUserData;
31372
31373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31374}
Abhishek Singh85b74712014-10-08 11:38:19 +053031375
31376/*
31377 * FUNCTION: WDI_ProcessGetFwStatsRsp
31378 * send the response with FW stats asked.
31379 */
31380WDI_Status
31381 WDI_ProcessGetFwStatsRsp
31382(
31383 WDI_ControlBlockType* pWDICtx,
31384 WDI_EventInfoType* pEventData
31385)
31386{
31387 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31388 tpHalfwStatsRspParams pHalFwstatsRsp;
31389 WDI_FWStatsResults fwStats;
31390
31391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31392
31393 /*-------------------------------------------------------------------------
31394 Sanity check
31395 -------------------------------------------------------------------------*/
31396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31397 ( NULL == pEventData->pEventData))
31398 {
31399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31400 "%s: Invalid parameters", __func__);
31401 WDI_ASSERT(0);
31402 return WDI_STATUS_E_FAILURE;
31403 }
31404 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31405 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31406
31407 if(pHalFwstatsRsp->length)
31408 {
31409 switch( pHalFwstatsRsp->type )
31410 {
31411 case FW_UBSP_STATS:
31412 {
31413 ubspFwStats *ubspStatsfromFw;
31414
31415 fwStats.type = pHalFwstatsRsp->type;
31416 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31417 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31418 ubspStatsfromFw->ubsp_enter_cnt;
31419 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31420 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31421 }
31422 break;
31423 default:
31424 {
31425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31426 "%s: No handling for stats type %d", __func__,
31427 pHalFwstatsRsp->type);
31428 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31429 NULL, pWDICtx->pRspCBUserData);
31430 return WDI_STATUS_E_FAILURE;
31431 }
31432 }
31433 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31434 }
31435 else
31436 {
31437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31438 "%s: Length = 0 for type %d return failure ", __func__,
31439 pHalFwstatsRsp->type);
31440 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31441 NULL, pWDICtx->pRspCBUserData);
31442 return WDI_STATUS_E_FAILURE;
31443 }
31444 return WDI_STATUS_SUCCESS;
31445}
31446
31447/*
31448 * FUNCTION: WDI_ProcessGetFwStatsReq
31449 * Request to WDI to get FW Stats.
31450 */
31451WDI_Status
31452 WDI_ProcessGetFwStatsReq
31453(
31454 WDI_ControlBlockType* pWDICtx,
31455 WDI_EventInfoType* pEventData
31456)
31457{
31458 wpt_uint8* pSendBuffer = NULL;
31459 wpt_uint16 usDataOffset = 0;
31460 wpt_uint16 usSendSize = 0;
31461 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31462 tHalfwStatsReqParams halFwStatsReq;
31463
31464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31465
31466 /*-------------------------------------------------------------------------
31467 Sanity check
31468 -------------------------------------------------------------------------*/
31469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31470 ( NULL == pEventData->pCBfnc ) )
31471 {
31472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31473 "%s: Invalid parameters", __func__);
31474 WDI_ASSERT(0);
31475 return WDI_STATUS_E_FAILURE;
31476 }
31477
31478 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31479
31480 /*-----------------------------------------------------------------------
31481 Get message buffer
31482 -----------------------------------------------------------------------*/
31483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31484 pWDICtx, WDI_GET_FW_STATS_REQ,
31485 sizeof(tHalfwStatsReqParams),
31486 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31487 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31488 {
31489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31490 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31491 pEventData);
31492 WDI_ASSERT(0);
31493 return WDI_STATUS_E_FAILURE;
31494 }
31495
31496 pWDICtx->wdiReqStatusCB = NULL;
31497 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31498 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31499 wpalMemoryCopy( pSendBuffer+usDataOffset,
31500 &halFwStatsReq,
31501 sizeof(tHalfwStatsReqParams));
31502 /*-------------------------------------------------------------------------
31503 Send Get STA Request to HAL
31504 -------------------------------------------------------------------------*/
31505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31506 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31507}
31508
Sunil Duttbd736ed2014-05-26 21:19:41 +053031509#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31510
31511/**
31512 @brief WDI_LLStatsSetReq
31513 This API is called to set link layer stats request in FW
31514
31515 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31516 wdiLLStatsSetRspCb : set link layer stats resp callback
31517 usrData : Client context
31518 @see
31519 @return SUCCESS or FAIL
31520*/
31521WDI_Status
31522WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31523 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31524 void* pUserData)
31525{
31526 WDI_EventInfoType wdiEventData;
31527
31528 /*------------------------------------------------------------------------
31529 Sanity Check
31530 ------------------------------------------------------------------------*/
31531 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31532 {
31533 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31534 "WDI API call before module is initialized - Fail request");
31535
31536 return WDI_STATUS_E_NOT_ALLOWED;
31537 }
31538
31539 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31540 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31541 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31542 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31543 wdiEventData.pUserData = pUserData;
31544
31545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31546}
31547
31548/**
31549 @brief WDI_ProcessLLStatsSetReq -
31550 Set Link Layer Stats request to FW
31551
31552 @param pWDICtx : wdi context
31553 pEventData : indication data
31554
31555 @see
31556 @return none
31557*/
31558WDI_Status
31559WDI_ProcessLLStatsSetReq
31560(
31561 WDI_ControlBlockType* pWDICtx,
31562 WDI_EventInfoType* pEventData
31563)
31564{
31565 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31566 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31567 wpt_uint8* pSendBuffer = NULL;
31568 wpt_uint16 usSendSize = 0;
31569 wpt_uint16 usDataOffset = 0;
31570 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31571
31572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31573 ( NULL == pEventData->pCBfnc ))
31574 {
31575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31576 "%s: Invalid parameters", __func__);
31577 WDI_ASSERT(0);
31578 return WDI_STATUS_E_FAILURE;
31579 }
31580
31581 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31582 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31583
31584 /*-----------------------------------------------------------------------
31585 Get message buffer
31586 ! TO DO : proper conversion into the HAL Message Request Format
31587 -----------------------------------------------------------------------*/
31588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31589 pWDICtx,
31590 WDI_LL_STATS_SET_REQ,
31591 sizeof(tHalMacLlSetStatsReqParams),
31592 &pSendBuffer, &usDataOffset,
31593 &usSendSize))||
31594 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31595 {
31596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31597 "Unable to get send buffer in %s %p %p %p", __func__,
31598 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31599 WDI_ASSERT(0);
31600 return WDI_STATUS_E_FAILURE;
31601 }
31602
31603
Dino Mycled3d50022014-07-07 12:58:25 +053031604 /* Need to fill in the self STA Index */
31605 if ( WDI_STATUS_SUCCESS !=
31606 WDI_STATableFindStaidByAddr(pWDICtx,
31607 pwdiLLStatsSetReqParams->macAddr,
31608 &halLLStatsSetParams.sta_id))
31609 {
31610 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31611 MAC_ADDRESS_STR
31612 ": This station does not exist in the WDI Station Table",
31613 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31614
31615 wpalMemoryFree(pSendBuffer);
31616 return WDI_STATUS_E_FAILURE;
31617 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031618
31619 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031620 halLLStatsSetParams.mpdu_size_threshold =
31621 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31622 halLLStatsSetParams.aggressive_statistics_gathering =
31623 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31624
31625 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31626 " halLLStatsSetParams.req_id = %u",
31627 halLLStatsSetParams.req_id);
31628 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31629 " halLLStatsSetParams.sta_id = %u",
31630 halLLStatsSetParams.sta_id);
31631 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31632 " halLLStatsSetParams.mpdu_size_threshold = %u",
31633 halLLStatsSetParams.mpdu_size_threshold);
31634 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31635 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31636 halLLStatsSetParams.aggressive_statistics_gathering);
31637
31638 wpalMemoryCopy(pSendBuffer+usDataOffset,
31639 &halLLStatsSetParams,
31640 sizeof(halLLStatsSetParams));
31641
31642 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31643
31644 /*-------------------------------------------------------------------------
31645 Send Clear Link Layer Stats Request to HAL
31646 -------------------------------------------------------------------------*/
31647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31648 wdiLLStatsSetCb, pEventData->pUserData,
31649 WDI_LL_STATS_SET_RSP);
31650}
31651
31652/**
31653 @brief WDI_LLStatsGetReq
31654 This API is called to get link layer stats request in FW
31655
31656 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31657 wdiLLStatsGetRspCb : get link layer stats resp callback
31658 usrData : Client context
31659 @see
31660 @return SUCCESS or FAIL
31661*/
31662WDI_Status
31663WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31664 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31665 void* pUserData)
31666{
31667 WDI_EventInfoType wdiEventData;
31668
31669 /*------------------------------------------------------------------------
31670 Sanity Check
31671 ------------------------------------------------------------------------*/
31672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31673 {
31674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31675 "WDI API call before module is initialized - Fail request");
31676
31677 return WDI_STATUS_E_NOT_ALLOWED;
31678 }
31679
31680 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31681 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31682 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31683 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31684 wdiEventData.pUserData = pUserData;
31685
31686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31687}
31688
31689/**
31690 @brief WDI_ProcessLLStatsGetReq -
31691 Get Link Layer Stats request to FW
31692
31693 @param pWDICtx : wdi context
31694 pEventData : indication data
31695
31696 @see
31697 @return none
31698*/
31699WDI_Status
31700WDI_ProcessLLStatsGetReq
31701(
31702 WDI_ControlBlockType* pWDICtx,
31703 WDI_EventInfoType* pEventData
31704)
31705{
31706 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31707 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31708 wpt_uint8* pSendBuffer = NULL;
31709 wpt_uint16 usSendSize = 0;
31710 wpt_uint16 usDataOffset = 0;
31711 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31712
31713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31714 ( NULL == pEventData->pCBfnc ))
31715 {
31716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31717 "%s: Invalid parameters", __func__);
31718 WDI_ASSERT(0);
31719 return WDI_STATUS_E_FAILURE;
31720 }
31721
31722 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31723 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31724
31725 /*-----------------------------------------------------------------------
31726 Get message buffer
31727 ! TO DO : proper conversion into the HAL Message Request Format
31728 -----------------------------------------------------------------------*/
31729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31730 pWDICtx,
31731 WDI_LL_STATS_GET_REQ,
31732 sizeof(tHalMacLlGetStatsReqParams),
31733 &pSendBuffer, &usDataOffset,
31734 &usSendSize))||
31735 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31736 {
31737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31738 "Unable to get send buffer in %s %p %p %p", __func__,
31739 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31740 WDI_ASSERT(0);
31741 return WDI_STATUS_E_FAILURE;
31742 }
Dino Mycled3d50022014-07-07 12:58:25 +053031743 /* Need to fill in the self STA Index */
31744 if ( WDI_STATUS_SUCCESS !=
31745 WDI_STATableFindStaidByAddr(pWDICtx,
31746 pwdiLLStatsGetReqParams->macAddr,
31747 &halLLStatsGetParams.sta_id))
31748 {
31749 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31750 MAC_ADDRESS_STR
31751 ": This station does not exist in the WDI Station Table",
31752 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31753
31754 wpalMemoryFree(pSendBuffer);
31755 return WDI_STATUS_E_FAILURE;
31756 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031757
31758 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031759 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31760
31761 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31762 " halLLStatsGetParams.req_id = %u",
31763 halLLStatsGetParams.req_id);
31764 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31765 " halLLStatsGetParams.staId = %u",
31766 halLLStatsGetParams.sta_id);
31767 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31768 " halLLStatsGetParams.Mask = %u",
31769 halLLStatsGetParams.param_id_mask);
31770
31771 wpalMemoryCopy(pSendBuffer+usDataOffset,
31772 &halLLStatsGetParams,
31773 sizeof(halLLStatsGetParams));
31774
31775 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31776
31777 /*-------------------------------------------------------------------------
31778 Send Clear Link Layer Stats Request to HAL
31779 -------------------------------------------------------------------------*/
31780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31781 wdiLLStatsGetCb, pEventData->pUserData,
31782 WDI_LL_STATS_GET_RSP);
31783}
31784
31785/**
31786 @brief WDI_LLStatsClearReq
31787 This API is called to clear link layer stats request in FW
31788
31789 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31790 wdiLLStatsSetRspCb : clear link layer stats resp callback
31791 usrData : Client context
31792 @see
31793 @return SUCCESS or FAIL
31794*/
31795WDI_Status
31796WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31797 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31798 void* pUserData)
31799{
31800 WDI_EventInfoType wdiEventData;
31801
31802 /*------------------------------------------------------------------------
31803 Sanity Check
31804 ------------------------------------------------------------------------*/
31805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31806 {
31807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31808 "WDI API call before module is initialized - Fail request");
31809
31810 return WDI_STATUS_E_NOT_ALLOWED;
31811 }
31812
31813 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31814 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31815 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31816 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31817 wdiEventData.pUserData = pUserData;
31818
31819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31820 "%s:%d Enter", __func__, __LINE__);
31821
31822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31823}
31824
31825/**
31826 @brief WDI_ProcessLLStatsClearReq -
31827 Clear Link Layer Stats request to FW
31828
31829 @param pWDICtx : wdi context
31830 pEventData : indication data
31831
31832 @see
31833 @return none
31834*/
31835WDI_Status
31836WDI_ProcessLLStatsClearReq
31837(
31838 WDI_ControlBlockType* pWDICtx,
31839 WDI_EventInfoType* pEventData
31840)
31841{
31842 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31843 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31844 wpt_uint8* pSendBuffer = NULL;
31845 wpt_uint16 usSendSize = 0;
31846 wpt_uint16 usDataOffset = 0;
31847 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31848
31849 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31850 ( NULL == pEventData->pCBfnc ))
31851 {
31852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31853 "%s: Invalid parameters", __func__);
31854 WDI_ASSERT(0);
31855 return WDI_STATUS_E_FAILURE;
31856 }
31857
31858 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31859 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31860
31861 /*-----------------------------------------------------------------------
31862 Get message buffer
31863 ! TO DO : proper conversion into the HAL Message Request Format
31864 -----------------------------------------------------------------------*/
31865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31866 pWDICtx,
31867 WDI_LL_STATS_CLEAR_REQ,
31868 sizeof(tHalMacLlClearStatsReqParams),
31869 &pSendBuffer, &usDataOffset,
31870 &usSendSize))||
31871 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31872 {
31873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31874 "Unable to get send buffer in %s %p %p %p", __func__,
31875 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31876 WDI_ASSERT(0);
31877 return WDI_STATUS_E_FAILURE;
31878 }
Dino Mycled3d50022014-07-07 12:58:25 +053031879 /* Need to fill in the self STA Index */
31880 if ( WDI_STATUS_SUCCESS !=
31881 WDI_STATableFindStaidByAddr(pWDICtx,
31882 pwdiLLStatsClearReqParams->macAddr,
31883 &halLLStatsClearParams.sta_id))
31884 {
31885 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31886 MAC_ADDRESS_STR
31887 ": This station does not exist in the WDI Station Table",
31888 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31889
31890 wpalMemoryFree(pSendBuffer);
31891 return WDI_STATUS_E_FAILURE;
31892 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031893
31894 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031895 halLLStatsClearParams.stats_clear_req_mask =
31896 pwdiLLStatsClearReqParams->statsClearReqMask;
31897 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31898
31899 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31900 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31902 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31903 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31904 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31905 halLLStatsClearParams.stats_clear_req_mask);
31906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31907 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31908
31909 wpalMemoryCopy(pSendBuffer+usDataOffset,
31910 &halLLStatsClearParams,
31911 sizeof(halLLStatsClearParams));
31912
31913 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31914
31915 /*-------------------------------------------------------------------------
31916 Send Clear Link Layer Stats Request to HAL
31917 -------------------------------------------------------------------------*/
31918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31919 wdiLLStatsClearCb, pEventData->pUserData,
31920 WDI_LL_STATS_CLEAR_RSP);
31921}
31922#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031923
Abhishek Singh85b74712014-10-08 11:38:19 +053031924WDI_Status WDI_FWStatsGetReq( void* pUserData,
31925 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31926 wpt_uint32 stats)
31927{
31928 WDI_EventInfoType wdiEventData;
31929
31930 /*------------------------------------------------------------------------
31931 Sanity Check
31932 ------------------------------------------------------------------------*/
31933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31934 {
31935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31936 "WDI API call before module is initialized - Fail request");
31937 return WDI_STATUS_E_NOT_ALLOWED;
31938 }
31939 /*------------------------------------------------------------------------
31940 Fill in Event data and post to the Main FSM
31941 ------------------------------------------------------------------------*/
31942 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31943 wdiEventData.pEventData = (void *)&stats;
31944 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31945 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31946 wdiEventData.pUserData = pUserData;
31947
31948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31949
31950}
31951
Dino Mycle41bdc942014-06-10 11:30:24 +053031952#ifdef WLAN_FEATURE_EXTSCAN
31953
31954/**
31955 @brief Process EXTSCAN BUffer full indication from FW
31956
31957 @param pWDICtx: pointer to the WLAN DAL context
31958 pEventData: pointer to the event information structure
31959
31960 @see
31961 @return Result of the function call
31962*/
31963WDI_Status
31964WDI_ProcessEXTScanProgressInd
31965(
31966 WDI_ControlBlockType* pWDICtx,
31967 WDI_EventInfoType* pEventData
31968)
31969{
31970 WDI_LowLevelIndType wdiInd;
31971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31972
31973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31974 "%s: ", __func__);
31975
31976 /* sanity check */
31977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31978 ( NULL == pEventData->pEventData))
31979 {
31980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31981 "%s: Invalid parameters", __func__);
31982 WDI_ASSERT(0);
31983 return WDI_STATUS_E_FAILURE;
31984 }
31985
31986 /* Fill in the indication parameters */
31987 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31988
31989 /* extract response and send it to UMAC */
31990 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31991
31992 /* Notify UMAC */
31993 if (pWDICtx->wdiLowLevelIndCB)
31994 {
31995 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31996 }
31997 else
31998 {
Dino Mycled3d50022014-07-07 12:58:25 +053031999 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032000 "%s: WDILowLevelIndCb is null", __func__);
32001 WDI_ASSERT(0);
32002 return WDI_STATUS_E_FAILURE;
32003 }
32004 return WDI_STATUS_SUCCESS;
32005
32006} /* End of WDI_ProcessEXTScanProgressInd */
32007
32008
32009/**
32010 @brief Process EXTScan Scan Available indication from FW
32011
32012 @param pWDICtx: pointer to the WLAN DAL context
32013 pEventData: pointer to the event information structure
32014
32015 @see
32016 @return Result of the function call
32017*/
32018WDI_Status
32019WDI_ProcessEXTScanScanAvailableInd
32020(
32021 WDI_ControlBlockType* pWDICtx,
32022 WDI_EventInfoType* pEventData
32023)
32024{
32025 WDI_LowLevelIndType wdiInd;
32026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32027
32028 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32029 "%s: ", __func__);
32030
32031 /* sanity check */
32032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32033 ( NULL == pEventData->pEventData))
32034 {
32035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32036 "%s: Invalid parameters", __func__);
32037 WDI_ASSERT(0);
32038 return WDI_STATUS_E_FAILURE;
32039 }
32040
32041
32042
32043 /* Fill in the indication parameters */
32044 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32045
32046 /* extract response and send it to UMAC */
32047 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32048
32049 /* Notify UMAC */
32050 if (pWDICtx->wdiLowLevelIndCB)
32051 {
32052 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32053 }
32054 else
32055 {
32056 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32057 "%s: WDILowLevelIndCb is null", __func__);
32058 WDI_ASSERT(0);
32059 return WDI_STATUS_E_FAILURE;
32060 }
32061 return WDI_STATUS_SUCCESS;
32062} /* End of WDI_ProcessEXTScanScanDoneInd */
32063
32064/**
32065 @brief Process EXTScan Result Indication indication from FW
32066
32067 @param pWDICtx: pointer to the WLAN DAL context
32068 pEventData: pointer to the event information structure
32069
32070 @see
32071 @return Result of the function call
32072*/
32073WDI_Status
32074WDI_ProcessEXTScanResultInd
32075(
32076 WDI_ControlBlockType* pWDICtx,
32077 WDI_EventInfoType* pEventData
32078)
32079{
32080 WDI_LowLevelIndType wdiInd;
32081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32082
32083 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32084 "%s: ", __func__);
32085
32086 /* sanity check */
32087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32088 ( NULL == pEventData->pEventData))
32089 {
32090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32091 "%s: Invalid parameters", __func__);
32092 WDI_ASSERT(0);
32093 return WDI_STATUS_E_FAILURE;
32094 }
32095
32096 /* Fill in the indication parameters */
32097 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32098
32099 /* extract response and send it to UMAC */
32100 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32101
32102 /* Notify UMAC */
32103 if (pWDICtx->wdiLowLevelIndCB)
32104 {
32105 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32106 }
32107 else
32108 {
32109 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32110 "%s: WDILowLevelIndCb is null", __func__);
32111 WDI_ASSERT(0);
32112 return WDI_STATUS_E_FAILURE;
32113 }
32114 return WDI_STATUS_SUCCESS;
32115} /* End of WDI_ProcessEXTScanResultInd */
32116
32117/**
32118 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32119
32120 @param pWDICtx: pointer to the WLAN DAL context
32121 pEventData: pointer to the event information structure
32122
32123 @see
32124 @return Result of the function call
32125*/
32126WDI_Status
32127WDI_ProcessEXTScanBssidHotListResultInd
32128(
32129 WDI_ControlBlockType* pWDICtx,
32130 WDI_EventInfoType* pEventData
32131)
32132{
32133 WDI_LowLevelIndType wdiInd;
32134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32135
32136 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32137 "%s: ", __func__);
32138
32139 /* sanity check */
32140 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32141 ( NULL == pEventData->pEventData))
32142 {
32143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32144 "%s: Invalid parameters", __func__);
32145 WDI_ASSERT(0);
32146 return WDI_STATUS_E_FAILURE;
32147 }
32148
32149 /* Fill in the indication parameters */
32150 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32151
32152 /* extract response and send it to UMAC */
32153 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32154
32155 /* Notify UMAC */
32156 if (pWDICtx->wdiLowLevelIndCB)
32157 {
32158 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32159 }
32160 else
32161 {
32162 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32163 "%s: WDILowLevelIndCb is null", __func__);
32164 WDI_ASSERT(0);
32165 return WDI_STATUS_E_FAILURE;
32166 }
32167 return WDI_STATUS_SUCCESS;
32168} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32169
32170/**
32171 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32172
32173 @param pWDICtx: pointer to the WLAN DAL context
32174 pEventData: pointer to the event information structure
32175
32176 @see
32177 @return Result of the function call
32178*/
32179WDI_Status
32180WDI_ProcessEXTScanSignfRssiResultInd
32181(
32182 WDI_ControlBlockType* pWDICtx,
32183 WDI_EventInfoType* pEventData
32184)
32185{
32186 WDI_LowLevelIndType wdiInd;
32187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32188
32189 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32190 "%s: ", __func__);
32191
32192 /* sanity check */
32193 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32194 ( NULL == pEventData->pEventData))
32195 {
32196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32197 "%s: Invalid parameters", __func__);
32198 WDI_ASSERT(0);
32199 return WDI_STATUS_E_FAILURE;
32200 }
32201
32202 /* Fill in the indication parameters */
32203 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32204
32205 /* extract response and send it to UMAC */
32206 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32207
32208 /* Notify UMAC */
32209 if (pWDICtx->wdiLowLevelIndCB)
32210 {
32211 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32212 }
32213 else
32214 {
32215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32216 "%s: WDILowLevelIndCb is null", __func__);
32217 WDI_ASSERT(0);
32218 return WDI_STATUS_E_FAILURE;
32219 }
32220 return WDI_STATUS_SUCCESS;
32221} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32222
32223/**
32224 @brief WDI_EXTScanGetCapabilitiesReq
32225
32226 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32227 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32228 of the Req operation received from the device
32229 pUserData: user data will be passed back with the callback
32230
32231 @return SUCCESS or FAIL
32232*/
32233WDI_Status
32234WDI_EXTScanGetCapabilitiesReq(
32235 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32236 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32237 void* pUserData)
32238{
32239 WDI_EventInfoType wdiEventData;
32240
32241 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32242 "%s: %d ",__func__, __LINE__);
32243 /*------------------------------------------------------------------------
32244 Sanity Check
32245 ------------------------------------------------------------------------*/
32246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32247 {
32248 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32249 "WDI API call before module is initialized - Fail request");
32250
32251 return WDI_STATUS_E_NOT_ALLOWED;
32252 }
32253
32254 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32255 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32256 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32257 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32258 wdiEventData.pUserData = pUserData;
32259
32260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32261}
32262
32263/**
32264 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32265 Extended Scan Get Capability request to FW
32266
32267 @param pWDICtx : wdi context
32268 pEventData : indication data
32269
32270 @see
32271 @return none
32272*/
32273WDI_Status
32274WDI_ProcessEXTScanGetCapabilitiesReq
32275(
32276 WDI_ControlBlockType* pWDICtx,
32277 WDI_EventInfoType* pEventData
32278)
32279{
32280 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32281 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32282 wpt_uint8* pSendBuffer = NULL;
32283 wpt_uint16 usSendSize = 0;
32284 wpt_uint16 usDataOffset = 0;
32285 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32286
32287 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32288 "%s: %d Enter",__func__, __LINE__);
32289
32290 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32291 ( NULL == pEventData->pCBfnc ))
32292 {
32293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32294 "%s: Invalid parameters", __func__);
32295 WDI_ASSERT(0);
32296 return WDI_STATUS_E_FAILURE;
32297 }
32298
32299 pwdiEXTScanGetCapabilitiesReqParams =
32300 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32301 wdiEXTScanGetCapabilitiesRspCb =
32302 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32303
32304 /*-----------------------------------------------------------------------
32305 Get message buffer
32306 ! TO DO : proper conversion into the HAL Message Request Format
32307 -----------------------------------------------------------------------*/
32308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32309 pWDICtx,
32310 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32311 sizeof(halEXTScanGetCapReqParams),
32312 &pSendBuffer, &usDataOffset,
32313 &usSendSize))||
32314 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32315 {
32316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32317 "Unable to get send buffer in %s %p %p %p", __func__,
32318 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32319 wdiEXTScanGetCapabilitiesRspCb);
32320 WDI_ASSERT(0);
32321 return WDI_STATUS_E_FAILURE;
32322 }
32323
32324 halEXTScanGetCapReqParams.requestId =
32325 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32326 halEXTScanGetCapReqParams.sessionId =
32327 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32328
32329 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32330 " requestId %u "
32331 " sessionId %u ",
32332 halEXTScanGetCapReqParams.requestId,
32333 halEXTScanGetCapReqParams.sessionId);
32334
32335 wpalMemoryCopy(pSendBuffer+usDataOffset,
32336 &halEXTScanGetCapReqParams,
32337 sizeof(halEXTScanGetCapReqParams));
32338
32339 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32340
32341
32342 /*-------------------------------------------------------------------------
32343 Send EXTScan Stop Request to HAL
32344 -------------------------------------------------------------------------*/
32345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32346 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32347 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32348}
32349
32350/**
32351 @brief WDI_EXTScanGetCachedResultsReq
32352
32353 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32354 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32355 of the Req operation received from the device
32356 pUserData: user data will be passed back with the callback
32357
32358 @return SUCCESS or FAIL
32359*/
32360
32361WDI_Status
32362WDI_EXTScanGetCachedResultsReq(
32363 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32364 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32365 void* pUserData)
32366{
32367 WDI_EventInfoType wdiEventData;
32368
32369 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32370 "%s: %d Enter",__func__, __LINE__);
32371 /*------------------------------------------------------------------------
32372 Sanity Check
32373 ------------------------------------------------------------------------*/
32374 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32375 {
32376 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32377 "WDI API call before module is initialized - Fail request");
32378
32379 return WDI_STATUS_E_NOT_ALLOWED;
32380 }
32381
32382 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32383 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32384 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32385 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32386 wdiEventData.pUserData = pUserData;
32387
32388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32389}
32390
32391/**
32392 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32393 Extended Scan Get Cached Result request to FW
32394
32395 @param pWDICtx : wdi context
32396 pEventData : indication data
32397
32398 @see
32399 @return none
32400*/
32401WDI_Status
32402WDI_ProcessEXTScanGetCachedResultsReq
32403(
32404 WDI_ControlBlockType* pWDICtx,
32405 WDI_EventInfoType* pEventData
32406)
32407{
32408 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32409 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32410 wpt_uint8* pSendBuffer = NULL;
32411 wpt_uint16 usSendSize = 0;
32412 wpt_uint16 usDataOffset = 0;
32413 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32414
32415 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32416 "%s: %d Enter",__func__, __LINE__);
32417
32418 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32419 ( NULL == pEventData->pCBfnc ))
32420 {
32421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32422 "%s: Invalid parameters", __func__);
32423 WDI_ASSERT(0);
32424 return WDI_STATUS_E_FAILURE;
32425 }
32426
32427 pwdiEXTScanGetCachedResultsReqParams =
32428 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32429 wdiEXTScanGetCachedResultsCb =
32430 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32431
32432 /*-----------------------------------------------------------------------
32433 Get message buffer
32434 ! TO DO : proper conversion into the HAL Message Request Format
32435 -----------------------------------------------------------------------*/
32436 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32437 pWDICtx,
32438 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32439 sizeof(tHalExtScanGetScanReq),
32440 &pSendBuffer, &usDataOffset,
32441 &usSendSize))||
32442 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32443 {
32444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32445 "Unable to get send buffer in %s %p %p %p", __func__,
32446 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32447 wdiEXTScanGetCachedResultsCb);
32448 WDI_ASSERT(0);
32449 return WDI_STATUS_E_FAILURE;
32450 }
32451
32452 halEXTScanGetScanReqParams.requestId =
32453 pwdiEXTScanGetCachedResultsReqParams->requestId;
32454 halEXTScanGetScanReqParams.sessionId =
32455 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32456 halEXTScanGetScanReqParams.flush =
32457 pwdiEXTScanGetCachedResultsReqParams->flush;
32458
32459 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32460 " requestId %u "
32461 " sessionId %u "
32462 " flush %u ",
32463 halEXTScanGetScanReqParams.requestId,
32464 halEXTScanGetScanReqParams.sessionId,
32465 halEXTScanGetScanReqParams.flush);
32466
32467 wpalMemoryCopy(pSendBuffer+usDataOffset,
32468 &halEXTScanGetScanReqParams,
32469 sizeof(halEXTScanGetScanReqParams));
32470
32471 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32472
32473
32474 /*-------------------------------------------------------------------------
32475 Send EXTScan Stop Request to HAL
32476 -------------------------------------------------------------------------*/
32477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32478 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32479 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32480}
32481
32482/**
32483 @brief WDI_EXTScanStopReq
32484
32485 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32486 WDI_EXTScanStopRspCb: callback for passing back the response
32487 of the Req operation received from the device
32488 pUserData: user data will be passed back with the callback
32489
32490 @return SUCCESS or FAIL
32491*/
32492WDI_Status
32493WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32494 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32495 void* pUserData)
32496{
32497 WDI_EventInfoType wdiEventData;
32498
32499 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32500 "%s: %d ",__func__, __LINE__);
32501 /*------------------------------------------------------------------------
32502 Sanity Check
32503 ------------------------------------------------------------------------*/
32504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32505 {
32506 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32507 "WDI API call before module is initialized - Fail request");
32508
32509 return WDI_STATUS_E_NOT_ALLOWED;
32510 }
32511
32512 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32513 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32514 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32515 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32516 wdiEventData.pUserData = pUserData;
32517
32518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32519}
32520
32521/**
32522 @brief WDI_ProcessEXTScanStopReq -
32523 Extended Scan Stop request to FW
32524
32525 @param pWDICtx : wdi context
32526 pEventData : indication data
32527
32528 @see
32529 @return none
32530*/
32531WDI_Status
32532WDI_ProcessEXTScanStopReq
32533(
32534 WDI_ControlBlockType* pWDICtx,
32535 WDI_EventInfoType* pEventData
32536)
32537{
32538 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32539 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32540 wpt_uint8* pSendBuffer = NULL;
32541 wpt_uint16 usSendSize = 0;
32542 wpt_uint16 usDataOffset = 0;
32543 tHalExtScanStopReq halEXTScanStopReqParams;
32544
32545 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32546 "%s: %d ",__func__, __LINE__);
32547
32548 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32549 ( NULL == pEventData->pCBfnc ))
32550 {
32551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32552 "%s: Invalid parameters", __func__);
32553 WDI_ASSERT(0);
32554 return WDI_STATUS_E_FAILURE;
32555 }
32556
32557 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32558 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32559
32560 /*-----------------------------------------------------------------------
32561 Get message buffer
32562 ! TO DO : proper conversion into the HAL Message Request Format
32563 -----------------------------------------------------------------------*/
32564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32565 pWDICtx,
32566 WDI_EXTSCAN_STOP_REQ,
32567 sizeof(tHalExtScanStopReq),
32568 &pSendBuffer, &usDataOffset,
32569 &usSendSize))||
32570 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32571 {
32572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32573 "Unable to get send buffer in %s %p %p %p", __func__,
32574 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32575 WDI_ASSERT(0);
32576 return WDI_STATUS_E_FAILURE;
32577 }
32578
32579 halEXTScanStopReqParams.requestId =
32580 pwdiEXTScanStopReqParams->requestId;
32581 halEXTScanStopReqParams.sessionId =
32582 pwdiEXTScanStopReqParams->sessionId;
32583
32584 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32585 " halEXTScanStopReqParams.requestId %u "
32586 " halEXTScanStopReqParams.sessionId %u ",
32587 halEXTScanStopReqParams.requestId,
32588 halEXTScanStopReqParams.sessionId);
32589
32590 wpalMemoryCopy(pSendBuffer+usDataOffset,
32591 &halEXTScanStopReqParams,
32592 sizeof(halEXTScanStopReqParams));
32593
32594 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32595
32596
32597 /*-------------------------------------------------------------------------
32598 Send EXTScan Stop Request to HAL
32599 -------------------------------------------------------------------------*/
32600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32601 wdiEXTScanStopCb, pEventData->pUserData,
32602 WDI_EXTSCAN_STOP_RSP);
32603}
32604
32605/**
32606 @brief WDI_EXTScanStartReq
32607
32608 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32609 WDI_EXTScanStartRspCb: callback for passing back the response
32610 of the Req operation received from the device
32611 pUserData: user data will be passed back with the callback
32612
32613 @return SUCCESS or FAIL
32614*/
32615WDI_Status
32616WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32617 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32618 void* pUserData)
32619{
32620 WDI_EventInfoType wdiEventData;
32621
32622 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32623 "%s: %d Enter",__func__, __LINE__);
32624 /*------------------------------------------------------------------------
32625 Sanity Check
32626 ------------------------------------------------------------------------*/
32627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32628 {
32629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32630 "WDI API call before module is initialized - Fail request");
32631
32632 return WDI_STATUS_E_NOT_ALLOWED;
32633 }
32634
32635 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32636 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32637 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32638 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32639 wdiEventData.pUserData = pUserData;
32640
32641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32642}
32643
32644/**
32645 @brief WDI_ProcessEXTScanStartReq -
32646 Extended Scan Start Request to FW
32647
32648 @param pWDICtx : wdi context
32649 pEventData : indication data
32650
32651 @see
32652 @return none
32653*/
32654WDI_Status
32655WDI_ProcessEXTScanStartReq
32656(
32657 WDI_ControlBlockType* pWDICtx,
32658 WDI_EventInfoType* pEventData
32659)
32660{
32661 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32662 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32663 wpt_uint8* pSendBuffer = NULL;
32664 wpt_uint16 usSendSize = 0;
32665 wpt_uint16 usDataOffset = 0;
32666 tpHalExtScanStartReq pHalExtScanStartReqParams;
32667 int i = 0;
32668 int j = 0;
32669
32670 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32671 "%s: %d Enter",__func__, __LINE__);
32672
32673 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32674 ( NULL == pEventData->pCBfnc ))
32675 {
32676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32677 "%s: Invalid parameters", __func__);
32678 WDI_ASSERT(0);
32679 return WDI_STATUS_E_FAILURE;
32680 }
32681
32682 pwdiEXTScanStartReqParams =
32683 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32684 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32685
32686 /*-----------------------------------------------------------------------
32687 Get message buffer
32688 ! TO DO : proper conversion into the HAL Message Request Format
32689 -----------------------------------------------------------------------*/
32690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32691 pWDICtx,
32692 WDI_EXTSCAN_START_REQ,
32693 sizeof(tHalExtScanStartReq),
32694 &pSendBuffer, &usDataOffset,
32695 &usSendSize))||
32696 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32697 {
32698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32699 "Unable to get send buffer in %s %p %p %p", __func__,
32700 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32701 WDI_ASSERT(0);
32702 return WDI_STATUS_E_FAILURE;
32703 }
32704
32705 pHalExtScanStartReqParams =
32706 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32707
32708 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32709 pHalExtScanStartReqParams->maxApPerScan =
32710 pwdiEXTScanStartReqParams->maxAPperScan;
32711 pHalExtScanStartReqParams->reportThreshold =
32712 pwdiEXTScanStartReqParams->reportThreshold;
32713 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32714 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32715 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32716
32717 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32718 {
32719 pHalExtScanStartReqParams->bucketData[i].bucketId =
32720 pwdiEXTScanStartReqParams->buckets[i].bucket;
32721 pHalExtScanStartReqParams->bucketData[i].channelBand =
32722 pwdiEXTScanStartReqParams->buckets[i].band;
32723 pHalExtScanStartReqParams->bucketData[i].period =
32724 pwdiEXTScanStartReqParams->buckets[i].period;
32725 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32726 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32727 pHalExtScanStartReqParams->bucketData[i].numChannels =
32728 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32729
32730 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32731 {
32732 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32733 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32734 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32735 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32736 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32737 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32738 }
32739
32740 }
32741
32742
32743 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32744 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32745 " sessionId %u numBuckets%u ",
32746 pHalExtScanStartReqParams->basePeriod,
32747 pHalExtScanStartReqParams->maxApPerScan,
32748 pHalExtScanStartReqParams->reportThreshold,
32749 pHalExtScanStartReqParams->requestId,
32750 pHalExtScanStartReqParams->sessionId,
32751 pHalExtScanStartReqParams->numBuckets);
32752
32753 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32754 {
32755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32756 " %d) bucketId %u channelBand %u period %u "
32757 " reportEvents %u numChannels %u ",i,
32758 pHalExtScanStartReqParams->bucketData[i].bucketId,
32759 pHalExtScanStartReqParams->bucketData[i].channelBand,
32760 pHalExtScanStartReqParams->bucketData[i].period,
32761 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32762 pHalExtScanStartReqParams->bucketData[i].numChannels);
32763
32764 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32765 {
32766 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32767 "%d) channel %u dwellTimeMs %u passive %u ",j,
32768 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32769 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32770 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32771 }
32772
32773 }
32774
Dino Mycle41bdc942014-06-10 11:30:24 +053032775 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32776
32777 /*-------------------------------------------------------------------------
32778 Send EXTSCAN Start Request to HAL
32779 -------------------------------------------------------------------------*/
32780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32781 wdiEXTScanStartCb, pEventData->pUserData,
32782 WDI_EXTSCAN_START_RSP);
32783}
32784
32785/**
32786 @brief WDI_EXTScanSetBSSIDHotlistReq
32787
32788 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32789 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32790 of the Req operation received from the device
32791 pUserData: user data will be passed back with the callback
32792
32793 @return SUCCESS or FAIL
32794*/
32795WDI_Status
32796WDI_EXTScanSetBSSIDHotlistReq(
32797 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32798 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32799 void* pUserData)
32800{
32801 WDI_EventInfoType wdiEventData;
32802
32803 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32804 "%s: %d Enter ",__func__, __LINE__);
32805 /*------------------------------------------------------------------------
32806 Sanity Check
32807 ------------------------------------------------------------------------*/
32808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32809 {
32810 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32811 "WDI API call before module is initialized - Fail request");
32812
32813 return WDI_STATUS_E_NOT_ALLOWED;
32814 }
32815
32816 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32817 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32818 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32819 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32820 wdiEventData.pUserData = pUserData;
32821
32822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32823}
32824
32825/**
32826 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32827 Extended Scan Set BSSSID Hotlist Request to FW
32828
32829 @param pWDICtx : wdi context
32830 pEventData : indication data
32831
32832 @see
32833 @return none
32834*/
32835WDI_Status
32836WDI_ProcessEXTScanSetBSSIDHotlistReq
32837(
32838 WDI_ControlBlockType* pWDICtx,
32839 WDI_EventInfoType* pEventData
32840)
32841{
32842 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32843 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32844 wpt_uint8* pSendBuffer = NULL;
32845 wpt_uint16 usSendSize = 0;
32846 wpt_uint16 usDataOffset = 0;
32847 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32848 int i;
32849
32850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32851 "%s: %d Enter",__func__, __LINE__);
32852
32853 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32854 ( NULL == pEventData->pCBfnc ))
32855 {
32856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32857 "%s: Invalid parameters", __func__);
32858 WDI_ASSERT(0);
32859 return WDI_STATUS_E_FAILURE;
32860 }
32861
32862 pwdiEXTScanSetBSSIDHotlistReqParams =
32863 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32864 wdiEXTScanSetBSSIDHotlistRspCb =
32865 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32866
32867 /*-----------------------------------------------------------------------
32868 Get message buffer
32869 ! TO DO : proper conversion into the HAL Message Request Format
32870 -----------------------------------------------------------------------*/
32871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32872 pWDICtx,
32873 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32874 sizeof(tHalBssidHotlistSetReq),
32875 &pSendBuffer, &usDataOffset,
32876 &usSendSize))||
32877 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32878 {
32879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32880 "Unable to get send buffer in %s %p %p %p", __func__,
32881 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32882 wdiEXTScanSetBSSIDHotlistRspCb);
32883 WDI_ASSERT(0);
32884 return WDI_STATUS_E_FAILURE;
32885 }
32886 pHalBssidHotlistSetReqParams =
32887 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32888
32889 pHalBssidHotlistSetReqParams->requestId =
32890 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32891
32892 pHalBssidHotlistSetReqParams->sessionId =
32893 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32894
32895 pHalBssidHotlistSetReqParams->numAp =
32896 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32897
32898 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32899
32900 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32901 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32902 WDI_MAC_ADDR_LEN);
32903
32904 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32905 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32906
32907 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32908 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32909
32910 pHalBssidHotlistSetReqParams->ap[i].channel =
32911 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32912
32913 }
32914
32915 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32916 "ReqID %u sessionId %u numAp %u ",
32917 pHalBssidHotlistSetReqParams->requestId,
32918 pHalBssidHotlistSetReqParams->sessionId,
32919 pHalBssidHotlistSetReqParams->numAp);
32920
32921 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32922
32923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32924 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32925 __func__, __LINE__, i,
32926 pHalBssidHotlistSetReqParams->ap[i].bssid,
32927 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32928 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32929 pHalBssidHotlistSetReqParams->ap[i].channel);
32930
32931 }
32932
32933 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32934
32935
32936 /*-------------------------------------------------------------------------
32937 Send EXTScan Stop Request to HAL
32938 -------------------------------------------------------------------------*/
32939 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32940 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32941 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32942}
32943
32944/**
32945 @brief WDI_EXTScanResetBSSIDHotlistReq
32946
32947 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32948 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32949 of the Req operation received from the device
32950 pUserData: user data will be passed back with the callback
32951
32952 @return SUCCESS or FAIL
32953*/
32954WDI_Status
32955WDI_EXTScanResetBSSIDHotlistReq(
32956 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32957 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32958 void* pUserData)
32959{
32960 WDI_EventInfoType wdiEventData;
32961
32962 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32963 "%s: %d",__func__, __LINE__);
32964 /*------------------------------------------------------------------------
32965 Sanity Check
32966 ------------------------------------------------------------------------*/
32967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32968 {
32969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32970 "WDI API call before module is initialized - Fail request");
32971
32972 return WDI_STATUS_E_NOT_ALLOWED;
32973 }
32974
32975 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32976 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32977 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32978 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32979 wdiEventData.pUserData = pUserData;
32980
32981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32982}
32983
32984/**
32985 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32986 Extended Scan reset BSSID hotlist Request to FW
32987
32988 @param pWDICtx : wdi context
32989 pEventData : indication data
32990
32991 @see
32992 @return none
32993*/
32994WDI_Status
32995WDI_ProcessEXTScanResetBSSIDHotlistReq
32996(
32997 WDI_ControlBlockType* pWDICtx,
32998 WDI_EventInfoType* pEventData
32999)
33000{
33001 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33002 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33003 wpt_uint8* pSendBuffer = NULL;
33004 wpt_uint16 usSendSize = 0;
33005 wpt_uint16 usDataOffset = 0;
33006 tpHalHotlistResetReq pHalHotlistResetReqParams;
33007
33008 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33009 "%s: %d",__func__, __LINE__);
33010
33011 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33012 ( NULL == pEventData->pCBfnc ))
33013 {
33014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33015 "%s: Invalid parameters", __func__);
33016 WDI_ASSERT(0);
33017 return WDI_STATUS_E_FAILURE;
33018 }
33019
33020 pwdiEXTScanResetBSSIDHotlistReqParams =
33021 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33022 wdiEXTScanResetBSSIDHotlistRspCb =
33023 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33024
33025 /*-----------------------------------------------------------------------
33026 Get message buffer
33027 ! TO DO : proper conversion into the HAL Message Request Format
33028 -----------------------------------------------------------------------*/
33029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33030 pWDICtx,
33031 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33032 sizeof(tHalHotlistResetReq),
33033 &pSendBuffer, &usDataOffset,
33034 &usSendSize))||
33035 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33036 {
33037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33038 "Unable to get send buffer in %s %p %p %p", __func__,
33039 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33040 wdiEXTScanResetBSSIDHotlistRspCb);
33041 WDI_ASSERT(0);
33042 return WDI_STATUS_E_FAILURE;
33043 }
33044 pHalHotlistResetReqParams =
33045 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33046
33047 pHalHotlistResetReqParams->requestId =
33048 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33049
33050 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33051
33052 /*-------------------------------------------------------------------------
33053 Send EXTScan Stop Request to HAL
33054 -------------------------------------------------------------------------*/
33055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33056 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33057 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33058}
33059
33060/**
33061 @brief WDI_EXTScanSetSignfRSSIChangeReq
33062
33063 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33064 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33065 of the Req operation received from the device
33066 pUserData: user data will be passed back with the callback
33067
33068 @return SUCCESS or FAIL
33069*/
33070WDI_Status
33071WDI_EXTScanSetSignfRSSIChangeReq(
33072 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33073 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33074 void* pUserData)
33075{
33076 WDI_EventInfoType wdiEventData;
33077
33078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33079 "%s: %d ",__func__, __LINE__);
33080 /*------------------------------------------------------------------------
33081 Sanity Check
33082 ------------------------------------------------------------------------*/
33083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33084 {
33085 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33086 "WDI API call before module is initialized - Fail request");
33087
33088 return WDI_STATUS_E_NOT_ALLOWED;
33089 }
33090
33091 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33092 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33093 wdiEventData.uEventDataSize =
33094 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33095 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33096 wdiEventData.pUserData = pUserData;
33097
33098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33099}
33100
33101/**
33102 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33103 Extended Scan set Significant RSSI change Request to FW
33104
33105 @param pWDICtx : wdi context
33106 pEventData : indication data
33107
33108 @see
33109 @return none
33110*/
33111WDI_Status
33112WDI_ProcessEXTScanSetSignifRSSIChangeReq
33113(
33114 WDI_ControlBlockType* pWDICtx,
33115 WDI_EventInfoType* pEventData
33116)
33117{
33118 WDI_EXTScanSetSignfRSSIChangeReqParams*
33119 pwdiEXTScanSetSignfRSSIChangeReqParams;
33120 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33121 wpt_uint8* pSendBuffer = NULL;
33122 wpt_uint16 usSendSize = 0;
33123 wpt_uint16 usDataOffset = 0;
33124 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33125 int i;
33126
33127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33128 "%s: %d Enter",__func__, __LINE__);
33129
33130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33131 ( NULL == pEventData->pCBfnc ))
33132 {
33133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33134 "%s: Invalid parameters", __func__);
33135 WDI_ASSERT(0);
33136 return WDI_STATUS_E_FAILURE;
33137 }
33138
33139 pwdiEXTScanSetSignfRSSIChangeReqParams =
33140 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33141 wdiEXTScanSetSignfRSSIChangeRspCb =
33142 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33143
33144 /*-----------------------------------------------------------------------
33145 Get message buffer
33146 ! TO DO : proper conversion into the HAL Message Request Format
33147 -----------------------------------------------------------------------*/
33148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33149 pWDICtx,
33150 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33151 sizeof(tHalSigRssiSetReq),
33152 &pSendBuffer, &usDataOffset,
33153 &usSendSize))||
33154 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33155 {
33156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33157 "Unable to get send buffer in %s %p %p %p", __func__,
33158 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33159 wdiEXTScanSetSignfRSSIChangeRspCb);
33160 WDI_ASSERT(0);
33161 return WDI_STATUS_E_FAILURE;
33162 }
33163
33164 pHalSigRssiSetReqParams =
33165 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33166
33167 pHalSigRssiSetReqParams->requestId =
33168 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33169 pHalSigRssiSetReqParams->sessionId =
33170 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33171 pHalSigRssiSetReqParams->rssiSampleSize =
33172 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33173 pHalSigRssiSetReqParams->lostApSampleSize =
33174 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33175 pHalSigRssiSetReqParams->minBreaching =
33176 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33177 pHalSigRssiSetReqParams->numAp =
33178 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33179
33180
33181 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33182
33183 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33184 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33185 WDI_MAC_ADDR_LEN);
33186
33187 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33188 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33189
33190 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33191 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33192
33193 pHalSigRssiSetReqParams->ap[i].channel =
33194 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33195
33196 }
33197
33198
33199 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33200 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33201 " minBreaching %u numAp %u ",
33202 pHalSigRssiSetReqParams->requestId,
33203 pHalSigRssiSetReqParams->sessionId,
33204 pHalSigRssiSetReqParams->rssiSampleSize,
33205 pHalSigRssiSetReqParams->lostApSampleSize,
33206 pHalSigRssiSetReqParams->minBreaching,
33207 pHalSigRssiSetReqParams->numAp);
33208
33209 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33210
33211 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33212 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33213 i,
33214 pHalSigRssiSetReqParams->ap[i].bssid,
33215 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33216 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33217 pHalSigRssiSetReqParams->ap[i].channel);
33218
33219 }
33220
33221 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33222
33223
33224 /*-------------------------------------------------------------------------
33225 Send EXTScan Stop Request to HAL
33226 -------------------------------------------------------------------------*/
33227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33228 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33229 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33230}
33231
33232/**
33233 @brief WDI_EXTScanResetSignfRSSIChangeReq
33234
33235 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33236 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33237 of the Req operation received from the device
33238 pUserData: user data will be passed back with the callback
33239
33240 @return SUCCESS or FAIL
33241*/
33242WDI_Status
33243WDI_EXTScanResetSignfRSSIChangeReq(
33244 WDI_EXTScanResetSignfRSSIChangeReqParams*
33245 pwdiEXTScanResetSignfRSSIChangeReqParams,
33246 WDI_EXTScanResetSignfRSSIChangeRspCb
33247 wdiEXTScanResetSignfRSSIChangeRspCb,
33248 void* pUserData)
33249{
33250 WDI_EventInfoType wdiEventData;
33251
33252 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33253 "%s: %d ",__func__, __LINE__);
33254 /*------------------------------------------------------------------------
33255 Sanity Check
33256 ------------------------------------------------------------------------*/
33257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33258 {
33259 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33260 "WDI API call before module is initialized - Fail request");
33261
33262 return WDI_STATUS_E_NOT_ALLOWED;
33263 }
33264
33265 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33266 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33267 wdiEventData.uEventDataSize =
33268 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33269 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33270 wdiEventData.pUserData = pUserData;
33271
33272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33273}
33274
33275/**
33276 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33277 Extended Scana reset Significant RSSI change Request to FW
33278
33279 @param pWDICtx : wdi context
33280 pEventData : indication data
33281
33282 @see
33283 @return none
33284*/
33285WDI_Status
33286WDI_ProcessEXTScanResetSignfRSSIChangeReq
33287(
33288 WDI_ControlBlockType* pWDICtx,
33289 WDI_EventInfoType* pEventData
33290)
33291{
33292 WDI_EXTScanResetSignfRSSIChangeReqParams*
33293 pwdiEXTScanResetSignfRSSIChangeReqParams;
33294 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33295 wpt_uint8* pSendBuffer = NULL;
33296 wpt_uint16 usSendSize = 0;
33297 wpt_uint16 usDataOffset = 0;
33298 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33299
33300 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33301 "%s: %d ",__func__, __LINE__);
33302
33303 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33304 ( NULL == pEventData->pCBfnc ))
33305 {
33306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33307 "%s: Invalid parameters", __func__);
33308 WDI_ASSERT(0);
33309 return WDI_STATUS_E_FAILURE;
33310 }
33311
33312 pwdiEXTScanResetSignfRSSIChangeReqParams =
33313 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33314 wdiEXTScanResetSignfRSSIChangeRspCb =
33315 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33316
33317 /*-----------------------------------------------------------------------
33318 Get message buffer
33319 ! TO DO : proper conversion into the HAL Message Request Format
33320 -----------------------------------------------------------------------*/
33321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33322 pWDICtx,
33323 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33324 sizeof(tHalSigRssiResetReq),
33325 &pSendBuffer, &usDataOffset,
33326 &usSendSize))||
33327 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33328 {
33329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33330 "Unable to get send buffer in %s %p %p %p", __func__,
33331 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33332 wdiEXTScanResetSignfRSSIChangeRspCb);
33333 WDI_ASSERT(0);
33334 return WDI_STATUS_E_FAILURE;
33335 }
33336 pHalSigRssiResetReqParams =
33337 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33338
33339 pHalSigRssiResetReqParams->requestId =
33340 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33341
33342 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33343
33344
33345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33346 wdiEXTScanResetSignfRSSIChangeRspCb,
33347 pEventData->pUserData,
33348 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33349}
33350
33351/**
33352 @brief Process Extended Scan Start Rsp function (called when a response
33353 is being received over the bus from HAL)
33354
33355 @param pWDICtx: pointer to the WLAN DAL context
33356 pEventData: pointer to the event information structure
33357
33358 @see
33359 @return Result of the function call
33360*/
33361WDI_Status
33362WDI_ProcessEXTScanStartRsp
33363(
33364 WDI_ControlBlockType* pWDICtx,
33365 WDI_EventInfoType* pEventData
33366)
33367{
33368 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33369
33370 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33371 "%s: %d",__func__, __LINE__);
33372 /*-------------------------------------------------------------------------
33373 Sanity check
33374 -------------------------------------------------------------------------*/
33375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33376 ( NULL == pEventData->pEventData))
33377 {
33378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33379 "%s: Invalid parameters", __func__);
33380 WDI_ASSERT(0);
33381 return WDI_STATUS_E_FAILURE;
33382 }
33383
33384 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33385 if ( NULL == wdiEXTScanStartRspCb)
33386 {
33387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33388 "%s: Callback function Invalid", __func__);
33389 WDI_ASSERT(0);
33390 return WDI_STATUS_E_FAILURE;
33391 }
33392
33393 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33394
33395 return WDI_STATUS_SUCCESS;
33396}
33397
33398
33399/**
33400 @brief Process Extended Scan Stop Rsp function (called when a response
33401 is being received over the bus from HAL)
33402
33403 @param pWDICtx: pointer to the WLAN DAL context
33404 pEventData: pointer to the event information structure
33405
33406 @see
33407 @return Result of the function call
33408*/
33409WDI_Status
33410WDI_ProcessEXTScanStopRsp
33411(
33412 WDI_ControlBlockType* pWDICtx,
33413 WDI_EventInfoType* pEventData
33414)
33415{
33416 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33417
33418 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33419 "%s: %d",__func__, __LINE__);
33420
33421
33422 /*-------------------------------------------------------------------------
33423 Sanity check
33424 -------------------------------------------------------------------------*/
33425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33426 ( NULL == pEventData->pEventData))
33427 {
33428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33429 "%s: Invalid parameters", __func__);
33430 WDI_ASSERT(0);
33431 return WDI_STATUS_E_FAILURE;
33432 }
33433
33434 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33435 if ( NULL == wdiEXTScanStopRspCb)
33436 {
33437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33438 "%s: Callback function Invalid", __func__);
33439 WDI_ASSERT(0);
33440 return WDI_STATUS_E_FAILURE;
33441 }
33442
33443 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33444
33445 return WDI_STATUS_SUCCESS;
33446}
33447
33448/**
33449 @brief Process Extended Scan Get Cached Rsp function (called when a response
33450 is being received over the bus from HAL)
33451
33452 @param pWDICtx: pointer to the WLAN DAL context
33453 pEventData: pointer to the event information structure
33454
33455 @see
33456 @return Result of the function call
33457*/
33458WDI_Status
33459WDI_ProcessEXTScanGetCachedResultsRsp
33460(
33461 WDI_ControlBlockType* pWDICtx,
33462 WDI_EventInfoType* pEventData
33463)
33464{
33465 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33466
33467 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33468 "%s: %d Enter",__func__, __LINE__);
33469
33470
33471 /*-------------------------------------------------------------------------
33472 Sanity check
33473 -------------------------------------------------------------------------*/
33474 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33475 ( NULL == pEventData->pEventData))
33476 {
33477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33478 "%s: Invalid parameters", __func__);
33479 WDI_ASSERT(0);
33480 return WDI_STATUS_E_FAILURE;
33481 }
33482
33483 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33484 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33485 {
33486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33487 "%s: Callback function Invalid", __func__);
33488 WDI_ASSERT(0);
33489 return WDI_STATUS_E_FAILURE;
33490 }
33491
33492 wdiEXTScanGetCachedResultsRspCb(
33493 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33494
33495 return WDI_STATUS_SUCCESS;
33496}
33497
33498/**
33499 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33500 is being received over the bus from HAL)
33501
33502 @param pWDICtx: pointer to the WLAN DAL context
33503 pEventData: pointer to the event information structure
33504
33505 @see
33506 @return Result of the function call
33507*/
33508WDI_Status
33509WDI_ProcessEXTScanGetCapabilitiesRsp
33510(
33511 WDI_ControlBlockType* pWDICtx,
33512 WDI_EventInfoType* pEventData
33513)
33514{
33515 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33516
33517 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33518 "%s: %d ",__func__, __LINE__);
33519
33520
33521 /*-------------------------------------------------------------------------
33522 Sanity check
33523 -------------------------------------------------------------------------*/
33524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33525 ( NULL == pEventData->pEventData))
33526 {
33527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33528 "%s: Invalid parameters", __func__);
33529 WDI_ASSERT(0);
33530 return WDI_STATUS_E_FAILURE;
33531 }
33532
33533 wdiEXTScanGetCapabilitiesRspCb =
33534 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33535 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33536 {
33537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33538 "%s: Callback function Invalid", __func__);
33539 WDI_ASSERT(0);
33540 return WDI_STATUS_E_FAILURE;
33541 }
33542
33543 wdiEXTScanGetCapabilitiesRspCb(
33544 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33545
33546 return WDI_STATUS_SUCCESS;
33547}
33548
33549/**
33550 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33551 response is being received over the bus from HAL)
33552
33553 @param pWDICtx: pointer to the WLAN DAL context
33554 pEventData: pointer to the event information structure
33555
33556 @see
33557 @return Result of the function call
33558*/
33559WDI_Status
33560WDI_ProcessEXTScanSetHotlistBSSIDRsp
33561(
33562 WDI_ControlBlockType* pWDICtx,
33563 WDI_EventInfoType* pEventData
33564)
33565{
33566 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33567
33568 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33569 "%s: %d ",__func__, __LINE__);
33570
33571
33572 /*-------------------------------------------------------------------------
33573 Sanity check
33574 -------------------------------------------------------------------------*/
33575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33576 ( NULL == pEventData->pEventData))
33577 {
33578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33579 "%s: Invalid parameters", __func__);
33580 WDI_ASSERT(0);
33581 return WDI_STATUS_E_FAILURE;
33582 }
33583
33584 wdiEXTScanSetBSSIDHotlistRspCb =
33585 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33586 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33587 {
33588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33589 "%s: Callback function Invalid", __func__);
33590 WDI_ASSERT(0);
33591 return WDI_STATUS_E_FAILURE;
33592 }
33593
33594 wdiEXTScanSetBSSIDHotlistRspCb(
33595 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33596
33597 return WDI_STATUS_SUCCESS;
33598}
33599
33600/**
33601 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33602 when a response is being received over the bus from HAL)
33603
33604 @param pWDICtx: pointer to the WLAN DAL context
33605 pEventData: pointer to the event information structure
33606
33607 @see
33608 @return Result of the function call
33609*/
33610WDI_Status
33611WDI_ProcessEXTScanResetHotlistBSSIDRsp
33612(
33613 WDI_ControlBlockType* pWDICtx,
33614 WDI_EventInfoType* pEventData
33615)
33616{
33617 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33618
33619 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33620 "%s: %d ",__func__, __LINE__);
33621
33622
33623 /*-------------------------------------------------------------------------
33624 Sanity check
33625 -------------------------------------------------------------------------*/
33626 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33627 ( NULL == pEventData->pEventData))
33628 {
33629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33630 "%s: Invalid parameters", __func__);
33631 WDI_ASSERT(0);
33632 return WDI_STATUS_E_FAILURE;
33633 }
33634
33635 wdiEXTScanResetBSSIDHotlistRspCb =
33636 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33637 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33638 {
33639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33640 "%s: Callback function Invalid", __func__);
33641 WDI_ASSERT(0);
33642 return WDI_STATUS_E_FAILURE;
33643 }
33644
33645 wdiEXTScanResetBSSIDHotlistRspCb(
33646 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33647
33648 return WDI_STATUS_SUCCESS;
33649}
33650
33651/**
33652 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33653 when a response is being received over the bus from HAL)
33654
33655 @param pWDICtx: pointer to the WLAN DAL context
33656 pEventData: pointer to the event information structure
33657
33658 @see
33659 @return Result of the function call
33660*/
33661WDI_Status
33662WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33663(
33664 WDI_ControlBlockType* pWDICtx,
33665 WDI_EventInfoType* pEventData
33666)
33667{
33668 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33669
33670 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33671 "%s: %d",__func__, __LINE__);
33672
33673
33674 /*-------------------------------------------------------------------------
33675 Sanity check
33676 -------------------------------------------------------------------------*/
33677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33678 ( NULL == pEventData->pEventData))
33679 {
33680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33681 "%s: Invalid parameters", __func__);
33682 WDI_ASSERT(0);
33683 return WDI_STATUS_E_FAILURE;
33684 }
33685
33686 wdiEXTScanSetSignfRSSIChangeRspCb =
33687 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33688 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33689 {
33690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33691 "%s: Callback function Invalid", __func__);
33692 WDI_ASSERT(0);
33693 return WDI_STATUS_E_FAILURE;
33694 }
33695
33696 wdiEXTScanSetSignfRSSIChangeRspCb(
33697 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33698
33699 return WDI_STATUS_SUCCESS;
33700}
33701
33702/**
33703 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33704 (called when a response is being received over the bus from HAL)
33705
33706 @param pWDICtx: pointer to the WLAN DAL context
33707 pEventData: pointer to the event information structure
33708
33709 @see
33710 @return Result of the function call
33711*/
33712WDI_Status
33713WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33714(
33715 WDI_ControlBlockType* pWDICtx,
33716 WDI_EventInfoType* pEventData
33717)
33718{
33719 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33720
33721 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33722 "%s: %d Enter",__func__, __LINE__);
33723
33724
33725 /*-------------------------------------------------------------------------
33726 Sanity check
33727 -------------------------------------------------------------------------*/
33728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33729 ( NULL == pEventData->pEventData))
33730 {
33731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33732 "%s: Invalid parameters", __func__);
33733 WDI_ASSERT(0);
33734 return WDI_STATUS_E_FAILURE;
33735 }
33736
33737 wdiEXTScanResetSignfRSSIChangeRspCb =
33738 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33739 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33740 {
33741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33742 "%s: Callback function Invalid", __func__);
33743 WDI_ASSERT(0);
33744 return WDI_STATUS_E_FAILURE;
33745 }
33746
33747 wdiEXTScanResetSignfRSSIChangeRspCb(
33748 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33749
33750 return WDI_STATUS_SUCCESS;
33751}
33752#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033753
33754/**
33755 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33756
33757 @param None
33758
33759 @see
33760
33761 @return Status of the request
33762*/
33763WDI_Status
33764WDI_SetSpoofMacAddrReq
33765(
33766 WDI_SpoofMacAddrInfoType* pWdiReq,
33767 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33768 void* pUserData)
33769{
33770 WDI_EventInfoType wdiEventData;
33771
33772 /*-------------------------------------------------------------------------
33773 Sanity Check
33774 ------------------------------------------------------------------------*/
33775 if (eWLAN_PAL_FALSE == gWDIInitialized)
33776 {
33777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33778 "WDI API call before module is initialized - Fail request!");
33779
33780 return WDI_STATUS_E_NOT_ALLOWED;
33781 }
33782
33783 /*-------------------------------------------------------------------------
33784 Fill in Event data and post to the Main FSM
33785 ------------------------------------------------------------------------*/
33786 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33787 wdiEventData.pEventData = pWdiReq;
33788 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33789 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33790 wdiEventData.pUserData = pUserData;
33791
33792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33793}
33794
33795/**
33796 @brief Process SpoofMacAddr Request
33797
33798 @param pWDICtx: pointer to the WLAN DAL context
33799 pEventData: pointer to the event information structure
33800
33801 @see
33802 @return Result of the function call
33803*/
33804WDI_Status
33805WDI_ProcessSpoofMacAddrReq
33806(
33807 WDI_ControlBlockType* pWDICtx,
33808 WDI_EventInfoType* pEventData
33809)
33810{
33811 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33812 wpt_uint8* pSendBuffer = NULL;
33813 wpt_uint16 usDataOffset = 0;
33814 wpt_uint16 usSendSize = 0;
33815 WDI_Status wdiStatus;
33816 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33817 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33818
33819
33820 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33821 "%s: %d Enter",__func__, __LINE__);
33822
33823 /*-------------------------------------------------------------------------
33824 Sanity check
33825 -------------------------------------------------------------------------*/
33826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33827 ( NULL == pEventData->pEventData))
33828 {
33829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33830 "%s: Invalid parameters", __func__);
33831 WDI_ASSERT(0);
33832 return WDI_STATUS_E_FAILURE;
33833 }
33834 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33835
33836 /*-----------------------------------------------------------------------
33837 Get message buffer
33838 -----------------------------------------------------------------------*/
33839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33840 WDI_SPOOF_MAC_ADDR_REQ,
33841 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33842 &pSendBuffer, &usDataOffset, &usSendSize))||
33843 (usSendSize < (usDataOffset +
33844 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33845 {
33846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33847 "Unable to get send buffer in Process Spoof Mac Addr Req");
33848 WDI_ASSERT(0);
33849 return WDI_STATUS_E_FAILURE;
33850 }
33851
33852 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33853 wdiSpoofMacAddr->macAddr,
33854 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33855
33856 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33857
33858 wpalMemoryCopy( pSendBuffer+usDataOffset,
33859 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33860 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33861
33862 /*-------------------------------------------------------------------------
33863 Send Suspend Request to HAL
33864 -------------------------------------------------------------------------*/
33865 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33866 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33867
33868 return wdiStatus;
33869}
33870
33871/**
33872 @brief Process Spoof Mac Address Rsp function
33873 (called when a response is being received over the bus from HAL)
33874
33875 @param pWDICtx: pointer to the WLAN DAL context
33876 pEventData: pointer to the event information structure
33877
33878 @see
33879 @return Result of the function call
33880*/
33881WDI_Status
33882WDI_ProcessSpoofMacAddrRsp
33883(
33884 WDI_ControlBlockType* pWDICtx,
33885 WDI_EventInfoType* pEventData
33886)
33887{
33888 tMacSpoofedScanResp halRsp;
33889 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33890 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33891
33892 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33893 "%s: %d Enter",__func__, __LINE__);
33894
33895 /*-------------------------------------------------------------------------
33896 Sanity check
33897 -------------------------------------------------------------------------*/
33898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33899 ( NULL == pEventData->pEventData))
33900 {
33901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33902 "%s: Invalid parameters", __func__);
33903 WDI_ASSERT(0);
33904 return WDI_STATUS_E_FAILURE;
33905 }
33906 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33907
33908 /*-------------------------------------------------------------------------
33909 Extract response and send it to UMAC
33910 -------------------------------------------------------------------------*/
33911 wpalMemoryCopy( &halRsp,
33912 pEventData->pEventData, sizeof(halRsp));
33913
33914 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33915
33916 /*Notify UMAC*/
33917 wdiSpoofMacAddrRspCb(
33918 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33919
33920 return WDI_STATUS_SUCCESS;
33921}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033922
33923/**
Siddharth Bhal64246172015-02-27 01:04:37 +053033924 @brief Process Get Frame Log Rsp function
33925 (called when a response is being received over the bus from HAL)
33926
33927 @param pWDICtx: pointer to the WLAN DAL context
33928 pEventData: pointer to the event information structure
33929
33930 @see
33931 @return Result of the function call
33932*/
33933WDI_Status
33934WDI_ProcessGetFrameLogRsp
33935(
33936 WDI_ControlBlockType* pWDICtx,
33937 WDI_EventInfoType* pEventData
33938)
33939{
33940 tGetFrameLogResp halRsp;
33941 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
33942 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
33943
33944 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33945 "%s: %d Enter",__func__, __LINE__);
33946
33947 /*-------------------------------------------------------------------------
33948 Sanity check
33949 -------------------------------------------------------------------------*/
33950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33951 ( NULL == pEventData->pEventData))
33952 {
33953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33954 "%s: Invalid parameters", __func__);
33955 WDI_ASSERT(0);
33956 return WDI_STATUS_E_FAILURE;
33957 }
33958
33959 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
33960
33961 /*-------------------------------------------------------------------------
33962 Extract response and send it to UMAC
33963 -------------------------------------------------------------------------*/
33964 wpalMemoryCopy( &halRsp,
33965 pEventData->pEventData, sizeof(halRsp));
33966
33967 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33968
33969 /*Notify UMAC*/
33970 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
33971
33972 return WDI_STATUS_SUCCESS;
33973}
33974/**
33975 @brief Process MgmtLoggingInit Request
33976
33977 @param pWDICtx: pointer to the WLAN DAL context
33978 pEventData: pointer to the event information structure
33979
33980 @see
33981 @return Result of the function call
33982*/
33983WDI_Status
33984WDI_ProcessGetFrameLogReq
33985(
33986 WDI_ControlBlockType* pWDICtx,
33987 WDI_EventInfoType* pEventData
33988)
33989{
33990 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
33991 wpt_uint8* pSendBuffer = NULL;
33992 wpt_uint16 usDataOffset = 0;
33993 wpt_uint16 usSendSize = 0;
33994 WDI_Status wdiStatus;
33995 tGetFrameLogReqMsg halGetFrameLogReq;
33996 WDI_MgmtLoggingInitRspCb wdiGetFrameLogRspCb;
33997
33998
33999 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34000 "%s: %d Enter",__func__, __LINE__);
34001
34002 /*-------------------------------------------------------------------------
34003 Sanity check
34004 ------------------------------------------------------------------------*/
34005 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34006 ( NULL == pEventData->pEventData))
34007 {
34008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34009 "%s: Invalid parameters", __func__);
34010 WDI_ASSERT(0);
34011 return WDI_STATUS_E_FAILURE;
34012 }
34013
34014 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34015
34016 /*-----------------------------------------------------------------------
34017 Get message buffer
34018 -----------------------------------------------------------------------*/
34019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34020 WDI_GET_FRAME_LOG_REQ,
34021 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34022 &pSendBuffer, &usDataOffset, &usSendSize))||
34023 (usSendSize < (usDataOffset +
34024 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34025 {
34026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34027 "Unable to get send buffer in GetFrameLog Req");
34028 WDI_ASSERT(0);
34029 return WDI_STATUS_E_FAILURE;
34030 }
34031
34032 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34033 wdiGetFrameLogReq->flags;
34034
34035 wdiGetFrameLogRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34036
34037 wpalMemoryCopy( pSendBuffer+usDataOffset,
34038 &halGetFrameLogReq.tGetFrameLogReqParams,
34039 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34040
34041 /*-------------------------------------------------------------------------
34042 Send Suspend Request to HAL
34043 ------------------------------------------------------------------------*/
34044 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34045 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34046
34047 return wdiStatus;
34048}
34049/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034050 @brief Process MgmtFrame Logging Init Rsp function
34051 (called when a response is being received over the bus from HAL)
34052
34053 @param pWDICtx: pointer to the WLAN DAL context
34054 pEventData: pointer to the event information structure
34055
34056 @see
34057 @return Result of the function call
34058*/
34059WDI_Status
34060WDI_ProcessMgmtFrameLoggingInitRsp
34061(
34062 WDI_ControlBlockType* pWDICtx,
34063 WDI_EventInfoType* pEventData
34064)
34065{
34066 tMgmtLoggingInitResp halRsp;
34067 WDI_MgmtLoggingInitRspCb wdiMgmtFrameLoggingInitRspCb;
34068 WDI_MgmtLoggingRspParamType wdiMgmtFrameLoggingRsp;
34069
34070 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34071 "%s: %d Enter",__func__, __LINE__);
34072
34073 /*-------------------------------------------------------------------------
34074 Sanity check
34075 -------------------------------------------------------------------------*/
34076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34077 ( NULL == pEventData->pEventData))
34078 {
34079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34080 "%s: Invalid parameters", __func__);
34081 WDI_ASSERT(0);
34082 return WDI_STATUS_E_FAILURE;
34083 }
34084 wdiMgmtFrameLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pWDICtx->pfncRspCB;
34085
34086 /*-------------------------------------------------------------------------
34087 Extract response and send it to UMAC
34088 -------------------------------------------------------------------------*/
34089 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34090
34091 wdiMgmtFrameLoggingRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34092
34093 /*Notify UMAC*/
34094 wdiMgmtFrameLoggingInitRspCb( &wdiMgmtFrameLoggingRsp,
34095 pWDICtx->pRspCBUserData);
34096
34097 return WDI_STATUS_SUCCESS;
34098}
34099
34100/**
34101 @brief Process MgmtLoggingInit Request
34102
34103 @param pWDICtx: pointer to the WLAN DAL context
34104 pEventData: pointer to the event information structure
34105
34106 @see
34107 @return Result of the function call
34108*/
34109WDI_Status
34110WDI_ProcessMgmtLoggingInitReq
34111(
34112 WDI_ControlBlockType* pWDICtx,
34113 WDI_EventInfoType* pEventData
34114)
34115{
34116 WDI_MgmtLoggingInitReqInfoType* wdiMgmtLoggingInitReq;
34117 wpt_uint8* pSendBuffer = NULL;
34118 wpt_uint16 usDataOffset = 0;
34119 wpt_uint16 usSendSize = 0;
34120 WDI_Status wdiStatus;
34121 tHalMgmtLoggingInitReqMsg halMgmtLoggingInitReq;
34122 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb;
34123
34124
34125 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34126 "%s: %d Enter",__func__, __LINE__);
34127
34128 /*-------------------------------------------------------------------------
34129 Sanity check
34130 ------------------------------------------------------------------------*/
34131 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34132 ( NULL == pEventData->pEventData))
34133 {
34134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34135 "%s: Invalid parameters", __func__);
34136 WDI_ASSERT(0);
34137 return WDI_STATUS_E_FAILURE;
34138 }
34139 wdiMgmtLoggingInitReq =
34140 (WDI_MgmtLoggingInitReqInfoType *)pEventData->pEventData;
34141
34142 /*-----------------------------------------------------------------------
34143 Get message buffer
34144 -----------------------------------------------------------------------*/
34145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34146 WDI_MGMT_LOGGING_INIT_REQ,
34147 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams),
34148 &pSendBuffer, &usDataOffset, &usSendSize))||
34149 (usSendSize < (usDataOffset +
34150 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams))))
34151 {
34152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34153 "Unable to get send buffer in Process Mgmt Logging Init Req");
34154 WDI_ASSERT(0);
34155 return WDI_STATUS_E_FAILURE;
34156 }
34157
34158 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.enableFlag=
34159 wdiMgmtLoggingInitReq->enableFlag;
34160 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameSize=
34161 wdiMgmtLoggingInitReq->frameSize;
34162 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameType=
34163 wdiMgmtLoggingInitReq->frameType;
34164 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.bufferMode=
34165 wdiMgmtLoggingInitReq->bufferMode;
34166
34167 wdiMgmtLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34168
34169 wpalMemoryCopy( pSendBuffer+usDataOffset,
34170 &halMgmtLoggingInitReq.tMgmtLoggingInitReqParams,
34171 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams));
34172
34173 /*-------------------------------------------------------------------------
34174 Send Mgmt Logging Init Request to HAL
34175 ------------------------------------------------------------------------*/
34176 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34177 wdiMgmtLoggingInitRspCb, pEventData->pUserData,
34178 WDI_MGMT_LOGGING_INIT_RSP);
34179
34180 return wdiStatus;
34181}
34182
34183/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034184 @brief WDI_EncryptMsgReq
34185
34186 @param pwdiEncryptMsgParams: Req parameter for the FW
34187 wdiEncryptMsgCbRsp: callback for passing back the response
34188 of the Req operation received from the device
34189 pUserData: user data will be passed back with the callback
34190
34191 @return SUCCESS or FAIL
34192*/
34193WDI_Status
34194WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34195 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34196 void* pUserData)
34197{
34198 WDI_EventInfoType wdiEventData;
34199
34200 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34201 "%s: %d Enter" ,__func__, __LINE__);
34202 /*------------------------------------------------------------------------
34203 Sanity Check
34204 ------------------------------------------------------------------------*/
34205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34206 {
34207 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34208 "WDI API call before module is initialized - Fail request");
34209
34210 return WDI_STATUS_E_NOT_ALLOWED;
34211 }
34212
34213 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34214 wdiEventData.pEventData = pwdiEncryptMsgParams;
34215 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34216 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34217 wdiEventData.pUserData = pUserData;
34218
34219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34220}
34221
34222/*
34223 * FUNCTION: WDI_ProcessEncryptMsgReq
34224 * Request to WDI to encrypt the given message.
34225 *
34226 * @param pWDICtx: pointer to the WLAN DAL context
34227 * pEventData: pointer to the event information structure
34228 *
34229 * @return Result of the function call
34230 */
34231
34232WDI_Status
34233WDI_ProcessEncryptMsgReq
34234(
34235 WDI_ControlBlockType* pWDICtx,
34236 WDI_EventInfoType* pEventData
34237)
34238{
34239 wpt_uint8* pSendBuffer = NULL;
34240 wpt_uint16 usDataOffset = 0;
34241 wpt_uint16 usSendSize = 0;
34242 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34243 tSetEncryptedDataParams *pHalEncryptDataReq;
34244 wpt_pkt80211 *pkt = NULL;
34245
34246 /*-------------------------------------------------------------------------
34247 Sanity check
34248 -------------------------------------------------------------------------*/
34249 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34250 ( NULL == pEventData->pCBfnc ) )
34251 {
34252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34253 "%s: Invalid parameters", __func__);
34254 WDI_ASSERT(0);
34255 return WDI_STATUS_E_FAILURE;
34256 }
34257
34258 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34259
34260 /*-----------------------------------------------------------------------
34261 Get message buffer
34262 -----------------------------------------------------------------------*/
34263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34264 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34265 sizeof(tSetEncryptedDataReqMsg),
34266 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34267 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34268 {
34269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34270 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34271 pEventData);
34272 WDI_ASSERT(0);
34273 return WDI_STATUS_E_FAILURE;
34274 }
34275
34276 pWDICtx->wdiReqStatusCB = NULL;
34277 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34278 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34279
34280 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34281 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34282
34283 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34284
34285 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34286 pkt->encParams.keyParams.key[0].keyId;
34287
34288 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34289 &pkt->encParams.keyParams.key[0].key[0], 16);
34290
34291 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34292
34293 pHalEncryptDataReq->data.length = pkt->data.length;
34294 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34295
34296 /*-------------------------------------------------------------------------
34297 Send Get STA Request to HAL
34298 -------------------------------------------------------------------------*/
34299 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34300 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34301}
34302
34303/*
34304 * FUNCTION: WDI_ProcessEncryptMsgRsp
34305 * Receives the encrypted message from the firmware
34306 * @param pWDICtx: pointer to the WLAN DAL context
34307 * pEventData: pointer to the event information structure
34308 *
34309 * @return Result of the function call
34310 */
34311WDI_Status
34312WDI_ProcessEncryptMsgRsp
34313(
34314 WDI_ControlBlockType* pWDICtx,
34315 WDI_EventInfoType* pEventData
34316)
34317{
34318 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34319 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34320
34321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34322 "In %s",__func__);
34323
34324 /*-------------------------------------------------------------------------
34325 Sanity check
34326 -------------------------------------------------------------------------*/
34327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34328 ( NULL == pEventData->pEventData))
34329 {
34330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34331 "%s: Invalid parameters", __func__);
34332 WDI_ASSERT(0);
34333 return WDI_STATUS_E_FAILURE;
34334 }
34335
34336 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34337
34338 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34339
34340 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34341 pEventData->pEventData,
34342 pWDICtx->pRspCBUserData);
34343 return WDI_STATUS_SUCCESS;
34344}
Srinivas Dasari32a79262015-02-19 13:04:49 +053034345
34346WDI_Status
34347WDI_NanRequest
34348(
34349 WDI_NanRequestType *pwdiNanRequest,
34350 void *usrData
34351)
34352{
34353 WDI_EventInfoType wdiEventData;
34354
34355 /*------------------------------------------------------------------------
34356 Sanity Check
34357 ------------------------------------------------------------------------*/
34358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34359 {
34360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34361 "WDI API call before module is initialized - Fail request");
34362
34363 return WDI_STATUS_E_NOT_ALLOWED;
34364 }
34365
34366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34367 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
34368 pwdiNanRequest->request_data_len);
34369
34370 /*------------------------------------------------------------------------
34371 Fill in Event data and post to the Main FSM
34372 ------------------------------------------------------------------------*/
34373 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
34374 wdiEventData.pEventData = pwdiNanRequest;
34375 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
34376 + pwdiNanRequest->request_data_len;
34377 wdiEventData.pUserData = usrData;
34378 wdiEventData.pCBfnc = NULL;
34379
34380
34381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34382}
34383
34384WDI_Status
34385WDI_ProcessNanRequest
34386(
34387 WDI_ControlBlockType* pWDICtx,
34388 WDI_EventInfoType* pEventData
34389)
34390{
34391 WDI_NanRequestType *pwdiNanRequest = NULL;
34392 wpt_uint8* pSendBuffer = NULL;
34393 wpt_uint16 usDataOffset = 0;
34394 wpt_uint16 usSendSize = 0;
34395
34396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34397 "WDI_ProcessNanRequest");
34398
34399 /*-------------------------------------------------------------------------
34400 Sanity check
34401 -------------------------------------------------------------------------*/
34402 if (( NULL == pEventData ) ||
34403 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
34404 {
34405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34406 "%s: Invalid parameters", __FUNCTION__);
34407 WDI_ASSERT(0);
34408 return WDI_STATUS_E_FAILURE;
34409 }
34410
34411 /*-----------------------------------------------------------------------
34412 Get message buffer
34413 -----------------------------------------------------------------------*/
34414 if (( WDI_STATUS_SUCCESS
34415 != WDI_GetMessageBuffer( pWDICtx,
34416 WDI_NAN_REQUEST,
34417 pwdiNanRequest->request_data_len,
34418 &pSendBuffer,
34419 &usDataOffset,
34420 &usSendSize))||
34421 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
34422 {
34423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34424 "Unable to get send buffer in NAN request %p %p",
34425 pEventData, pwdiNanRequest);
34426 WDI_ASSERT(0);
34427 return WDI_STATUS_E_FAILURE;
34428 }
34429
34430 wpalMemoryCopy( pSendBuffer+usDataOffset,
34431 pwdiNanRequest->request_data,
34432 pwdiNanRequest->request_data_len);
34433
34434 pWDICtx->pReqStatusUserData = NULL;
34435 pWDICtx->pfncRspCB = NULL;
34436 vos_mem_free( pEventData->pUserData);
34437
34438 /*-------------------------------------------------------------------------
34439 Send NAN Request to HAL
34440 -------------------------------------------------------------------------*/
34441 return WDI_SendMsg( pWDICtx,
34442 pSendBuffer,
34443 usSendSize,
34444 NULL,
34445 NULL,
34446 WDI_NAN_RESPONSE);
34447}
34448
34449/**
34450 @brief Process NAN Response function (called when a
34451 response is being received over the bus from HAL)
34452
34453 @param pWDICtx: pointer to the WLAN DAL context
34454 pEventData: pointer to the event information structure
34455
34456 @see
34457 @return Result of the function call
34458*/
34459WDI_Status
34460WDI_ProcessNanResponse
34461(
34462 WDI_ControlBlockType* pWDICtx,
34463 WDI_EventInfoType* pEventData
34464)
34465{
34466 WDI_Status wdiStatus;
34467 eHalStatus halStatus;
34468
34469 /*-------------------------------------------------------------------------
34470 Sanity check
34471 -------------------------------------------------------------------------*/
34472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34473 ( NULL == pEventData->pEventData))
34474 {
34475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34476 "%s: Invalid parameters", __func__);
34477 WDI_ASSERT(0);
34478 return WDI_STATUS_E_FAILURE;
34479 }
34480
34481 halStatus = *((eHalStatus*)pEventData->pEventData);
34482 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
34483
34484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34485 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
34486
34487 return WDI_STATUS_SUCCESS;
34488}/*WDI_ProcessNanResponse*/
34489
34490
34491/**
34492 @brief Process NAN Event function (called when
34493 an indication is being received over the
34494 bus from HAL)
34495
34496 @param pWDICtx: pointer to the WLAN DAL context
34497 pEventData: pointer to the event information structure
34498
34499 @see
34500 @return Result of the function call
34501*/
34502WDI_Status
34503WDI_ProcessNanEvent
34504(
34505 WDI_ControlBlockType* pWDICtx,
34506 WDI_EventInfoType* pEventData
34507)
34508{
34509 WDI_LowLevelIndType wdiInd;
34510
34511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34512
34513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34514 ( NULL == pEventData->pEventData ))
34515 {
34516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34517 "%s: Invalid parameters", __func__);
34518 WDI_ASSERT( 0 );
34519 return WDI_STATUS_E_FAILURE;
34520 }
34521
34522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34523 "%s: Received NAN event", __func__);
34524 /*-------------------------------------------------------------------------
34525 Extract indication and send it to UMAC
34526 -------------------------------------------------------------------------*/
34527 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
34528 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
34529 pEventData->uEventDataSize;
34530 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
34531 pEventData->pEventData;
34532
34533 /*Notify UMAC*/
34534 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34535
34536 return WDI_STATUS_SUCCESS;
34537}/*WDI_ProcessNanEvent*/
34538
Abhishek Singh41988ba2015-05-25 19:42:29 +053034539WDI_Status
34540WDI_ProcessSetRtsCtsHtvhtInd
34541(
34542 WDI_ControlBlockType* pWDICtx,
34543 WDI_EventInfoType* pEventData
34544)
34545{
34546 wpt_uint8* pSendBuffer = NULL;
34547 wpt_uint16 usDataOffset = 0;
34548 wpt_uint16 usSendSize = 0;
34549 wpt_uint32 *rtsCtsVal;
34550 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
34551 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34552
34553
34554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34555
34556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34557 "%s", __func__);
34558
34559 /*-------------------------------------------------------------------------
34560 Sanity check
34561 -------------------------------------------------------------------------*/
34562 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
34563 {
34564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34565 "%s: Invalid parameters", __func__);
34566 WDI_ASSERT(0);
34567 return WDI_STATUS_E_FAILURE;
34568 }
34569 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
34570 /*-----------------------------------------------------------------------
34571 Get message buffer
34572 -----------------------------------------------------------------------*/
34573
34574 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34575 WDI_SET_RTS_CTS_HTVHT_IND,
34576 sizeof(tHalRtsCtsHtvhtIndParams),
34577 &pSendBuffer, &usDataOffset, &usSendSize))||
34578 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
34579 {
34580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34581 "Unable to get send buffer in RTS CTS ind %p ",
34582 pEventData);
34583 WDI_ASSERT(0);
34584 return WDI_STATUS_E_FAILURE;
34585 }
34586 rtsCtsHtvhtIndParams =
34587 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
34588 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
34589
34590 pWDICtx->pReqStatusUserData = NULL;
34591 pWDICtx->pfncRspCB = NULL;
34592 /*-------------------------------------------------------------------------
34593 Send SET_RTS_CTS_HTVHT Indication to HAL
34594 -------------------------------------------------------------------------*/
34595 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34596 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34597}
34598
34599WDI_Status
34600WDI_SetRtsCtsHTVhtInd
34601(
34602 wpt_uint32 rtsCtsVal
34603)
34604{
34605 WDI_EventInfoType wdiEventData;
34606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34607
34608 /*------------------------------------------------------------------------
34609 Sanity Check
34610 ------------------------------------------------------------------------*/
34611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34612 {
34613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34614 "WDI API call before module is initialized - Fail request");
34615 return WDI_STATUS_E_NOT_ALLOWED;
34616 }
34617
34618 /*------------------------------------------------------------------------
34619 Fill in Event data and post to the Main FSM
34620 ------------------------------------------------------------------------*/
34621 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
34622 wdiEventData.pEventData = (void *) &rtsCtsVal;
34623 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
34624 wdiEventData.pCBfnc = NULL;
34625 wdiEventData.pUserData = NULL;
34626
34627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34628
34629}/* WDI_SetRtsCtsHTVhtInd */