blob: f10377076401d020c05477547b5194e59ee20f8e [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
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530207};
Jeff Johnson295189b2012-06-20 16:38:30 -0700208
209/*--------------------------------------------------------------------------
210 WLAN DAL State Machine
211 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700212WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700213{
214 /*WDI_INIT_ST*/
215 {{
216 WDI_MainStart, /*WDI_START_EVENT*/
217 NULL, /*WDI_STOP_EVENT*/
218 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
219 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
220 WDI_MainClose, /*WDI_CLOSE_EVENT*/
221 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
222 }},
223
224 /*WDI_STARTED_ST*/
225 {{
226 WDI_MainStartStarted, /*WDI_START_EVENT*/
227 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
228 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
229 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
230 NULL, /*WDI_CLOSE_EVENT*/
231 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
232 }},
233
234 /*WDI_STOPPED_ST*/
235 {{
236 WDI_MainStart, /*WDI_START_EVENT*/
237 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
238 NULL, /*WDI_REQUEST_EVENT*/
239 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
240 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700241 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700242 }},
243
244 /*WDI_BUSY_ST*/
245 {{
246 WDI_MainStartBusy, /*WDI_START_EVENT*/
247 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
248 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
249 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
250 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
251 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
252 }}
253};
254
Jeff Johnsone7245742012-09-05 17:12:55 -0700255/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 DAL Request Processing Array - the functions in this table will only be
257 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700258 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700260WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700261{
262 /*INIT*/
263 WDI_ProcessStartReq, /* WDI_START_REQ */
264 WDI_ProcessStopReq, /* WDI_STOP_REQ */
265 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
266
267 /*SCAN*/
268 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
269 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
270 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
271 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
272
273 /*ASSOCIATION*/
274 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
275 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
276 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
277 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
278 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
279
280 /* Security */
281 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
282 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
283 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
284 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
285
286 /* QoS and BA APIs */
287 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
288 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
289 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
290 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
291 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
292
293 /* Miscellaneous Control APIs */
294 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
295 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
296 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
297 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
298 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
299
300 /*BA APIs*/
301 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
302 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
303
304 /*Beacon processing APIs*/
305 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
306 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
307
308 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
309 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
310 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
311 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* PowerSave APIs */
314 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
315 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
316 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
317 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
318 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
319 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
320 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
321 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
322 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
323 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
324 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
325 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
326 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
327 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
328 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
329 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
330 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
331 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
332 /*NV Download APIs*/
333 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
334 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
335 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
336#ifdef WLAN_FEATURE_VOWIFI_11R
337 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
338#else
339 NULL,
340#endif /* WLAN_FEATURE_VOWIFI_11R */
341 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
342 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700344
345#ifdef FEATURE_OEM_DATA_SUPPORT
346 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
347#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700349#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700351
352 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700353
354#ifdef FEATURE_WLAN_SCAN_PNO
355 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
356 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
357 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
358#else
359 NULL,
360 NULL,
361 NULL,
362#endif /* FEATURE_WLAN_SCAN_PNO */
363
364 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365
Jeff Johnson295189b2012-06-20 16:38:30 -0700366#ifdef WLAN_FEATURE_PACKET_FILTERING
367 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700373 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700374 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700375#else
376 NULL,
377 NULL,
378 NULL,
379 NULL,
380#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700381 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700382 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
383 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
384
385 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800386#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
388#else
389 NULL,
390#endif
391
392#ifdef WLAN_FEATURE_GTK_OFFLOAD
393 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
394 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
395#else
396 NULL,
397 NULL,
398#endif // WLAN_FEATURE_GTK_OFFLOAD
399
400 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
401 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700402#ifdef WLAN_FEATURE_11AC
403 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800404#else
405 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700406#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800407#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800408 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
409#else
schang86c22c42013-03-13 18:41:24 -0700410 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800411#endif
schang86c22c42013-03-13 18:41:24 -0700412 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700413#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700414 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700415#else
416 NULL,
417#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530418#ifdef FEATURE_WLAN_TDLS
419 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
420#else
421 NULL,
422#endif
Leo Chang9056f462013-08-01 19:21:11 -0700423#ifdef FEATURE_WLAN_LPHB
424 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
425#else
426 NULL,
427#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530428
429#ifdef FEATURE_WLAN_BATCH_SCAN
430 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
431#else
432 NULL,
433#endif /* FEATURE_WLAN_BATCH_SCAN */
434
Arif Hussaina5ebce02013-08-09 15:09:58 -0700435 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800436
437 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530438
439 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530440
441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
442 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
443 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
444 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
445#else
446 NULL,
447 NULL,
448 NULL,
449#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530450#ifdef WLAN_FEATURE_EXTSCAN
451 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
452 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
453 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
454 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
455 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
456 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
457 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
458 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467 NULL,
468#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530469 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530470
471 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530472
473 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530474
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530475 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530476 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530477
478 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
479
Katya Nigamf0511f62015-05-05 16:40:57 +0530480 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
481 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530482 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
schang86c22c42013-03-13 18:41:24 -0700483 /*-------------------------------------------------------------------------
484 Indications
485 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800487 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530488 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
489 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700490#ifdef WLAN_FEATURE_11W
491 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
492#else
493 NULL,
494#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700495 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
496 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530497#ifdef FEATURE_WLAN_BATCH_SCAN
498 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
499 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
500#else
501 NULL,
502 NULL,
503#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700504 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800505
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530506 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800507 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
508
509 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530510#ifdef FEATURE_WLAN_TDLS
511 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
512#else
513 NULL,
514#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530515 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530516 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700517};
518
519
Jeff Johnsone7245742012-09-05 17:12:55 -0700520/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700521 DAL Request Processing Array - the functions in this table will only be
522 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700523 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700524 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700525WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700526{
527 /*INIT*/
528 WDI_ProcessStartRsp, /* WDI_START_RESP */
529 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
530 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
531
532 /*SCAN*/
533 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
534 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
535 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
536 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
537
538 /* ASSOCIATION*/
539 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
540 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
541 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
542 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
543 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
544
545 /* Security */
546 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
547 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
548 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
549 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
550
551 /* QoS and BA APIs */
552 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
553 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
554 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
555 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
556 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
557
558 /* Miscellaneous Control APIs */
559 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
560 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
561 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
562 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
563 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
564
565 /* BA APIs*/
566 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
567 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 /* IBSS APIs*/
570 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
571 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
572
573 /*Soft AP APIs*/
574 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
575 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
576 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
577 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
578
579 /* PowerSave APIs */
580 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
581 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
582 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
583 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
584 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
585 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
586 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
587 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
588 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
589 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
590 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
591 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
592 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
593 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
594 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
595 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
596 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
597 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700598
Jeff Johnson295189b2012-06-20 16:38:30 -0700599
600 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
601
602 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
603 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
604#ifdef WLAN_FEATURE_VOWIFI_11R
605 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
606#else
607 NULL,
608#endif /* WLAN_FEATURE_VOWIFI_11R */
609 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
610 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700611#ifdef FEATURE_OEM_DATA_SUPPORT
612 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
613#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700614 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700615#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
617
Jeff Johnson295189b2012-06-20 16:38:30 -0700618 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700619
Jeff Johnson295189b2012-06-20 16:38:30 -0700620 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700621
Jeff Johnsone7245742012-09-05 17:12:55 -0700622 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
623
Jeff Johnson295189b2012-06-20 16:38:30 -0700624#ifdef FEATURE_WLAN_SCAN_PNO
625 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
626 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
627 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
628#else
629 NULL,
630 NULL,
631 NULL,
632#endif // FEATURE_WLAN_SCAN_PNO
633
634 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 /*---------------------------------------------------------------------
636 Indications
637 ---------------------------------------------------------------------*/
638#ifdef WLAN_FEATURE_PACKET_FILTERING
639 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700640 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700641 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700642 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700643 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700644 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700645 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700646 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700647#else
648 NULL,
649 NULL,
650 NULL,
651 NULL,
652#endif // WLAN_FEATURE_PACKET_FILTERING
653
654 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
655 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
656
657 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800658#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700659 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
660#else
661 NULL,
662#endif
663
664#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700665 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
666 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700667#else
668 NULL,
669 NULL,
670#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700671 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
672 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700673#ifdef WLAN_FEATURE_11AC
674 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700675#else
676 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700677#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800678#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800679 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
680#else
681 NULL,
682#endif
schang86c22c42013-03-13 18:41:24 -0700683 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700684#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700685 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700686#else
687 NULL,
688#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530689#ifdef FEATURE_WLAN_TDLS
690 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
691#else
692 NULL,
693#endif
Leo Chang9056f462013-08-01 19:21:11 -0700694#ifdef FEATURE_WLAN_LPHB
695 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
696#else
697 NULL,
698#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530699
700#ifdef FEATURE_WLAN_BATCH_SCAN
701 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
702#else
703 NULL,
704#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800705 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530706
c_hpothu92367912014-05-01 15:18:17 +0530707 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800708
c_hpothu92367912014-05-01 15:18:17 +0530709 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
710
711 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800712
Sunil Duttbd736ed2014-05-26 21:19:41 +0530713
714#ifdef WLAN_FEATURE_LINK_LAYER_STATS
715 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
716 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
717 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
718#else
719 NULL,
720 NULL,
721 NULL,
722#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530723#ifdef WLAN_FEATURE_EXTSCAN
724 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
725 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
726 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
727 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
728 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
730 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
731 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
732#else
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740 NULL,
741#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530742 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530743
744 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530745
746 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530747 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530748 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530749
Srinivas Dasari32a79262015-02-19 13:04:49 +0530750 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
751
Katya Nigamf0511f62015-05-05 16:40:57 +0530752 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
753 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530754 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700755 /*---------------------------------------------------------------------
756 Indications
757 ---------------------------------------------------------------------*/
758 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
759 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
760 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
761 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
762 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
763 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
764
765 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
766
767 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
768
Jeff Johnson295189b2012-06-20 16:38:30 -0700769 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700770
771#ifdef FEATURE_WLAN_SCAN_PNO
772 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
773#else
774 NULL,
775#endif // FEATURE_WLAN_SCAN_PNO
776
777#ifdef WLAN_WAKEUP_EVENTS
778 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
779#else // WLAN_WAKEUP_EVENTS
780 NULL,
781#endif // WLAN_WAKEUP_EVENTS
782
783 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800784
Viral Modid86bde22012-12-10 13:09:21 -0800785 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530786#ifdef FEATURE_WLAN_TDLS
787 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
788#else
789 NULL,
790#endif
Leo Chang9056f462013-08-01 19:21:11 -0700791
792#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700793 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700794#else
795 NULL,
796#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700797
798 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700799
800 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530801
802#ifdef FEATURE_WLAN_BATCH_SCAN
803 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
804#else
805 NULL,
806#endif
807
Leo Chang0b0e45a2013-12-15 15:18:55 -0800808#ifdef FEATURE_WLAN_CH_AVOID
809 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
810#else
811 NULL,
812#endif /* FEATURE_WLAN_CH_AVOID */
813
Sunil Duttbd736ed2014-05-26 21:19:41 +0530814 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
815#ifdef WLAN_FEATURE_LINK_LAYER_STATS
816 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
817#else
818 NULL,
819#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530820#ifdef WLAN_FEATURE_EXTSCAN
821 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
822 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
823 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
824 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
825 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
826#else
827 NULL,
828 NULL,
829 NULL,
830 NULL,
831 NULL,
832#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530833#ifdef FEATURE_WLAN_TDLS
834 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
835#else
836 NULL,
837#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530838 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530839 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700840};
841
842
Jeff Johnsone7245742012-09-05 17:12:55 -0700843/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 WLAN DAL Global Control Block
845 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700846WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700847static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
848
Jeff Johnsone7245742012-09-05 17:12:55 -0700849const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700850
851/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700852WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700853void* WDI_GET_PAL_CTX( void )
854{
Jeff Johnsone7245742012-09-05 17:12:55 -0700855 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700856}/*WDI_GET_PAL_CTX*/
857
Jeff Johnsone7245742012-09-05 17:12:55 -0700858/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700859 Helper inline converters
860 ============================================================================*/
861/*Convert WDI driver type into HAL driver type*/
862WPT_STATIC WPT_INLINE WDI_Status
863WDI_HAL_2_WDI_STATUS
864(
865 eHalStatus halStatus
866);
867
868/*Convert WDI request type into HAL request type*/
869WPT_STATIC WPT_INLINE tHalHostMsgType
870WDI_2_HAL_REQ_TYPE
871(
872 WDI_RequestEnumType wdiReqType
873);
874
875/*Convert WDI response type into HAL response type*/
876WPT_STATIC WPT_INLINE WDI_ResponseEnumType
877HAL_2_WDI_RSP_TYPE
878(
879 tHalHostMsgType halMsg
880);
881
882/*Convert WDI driver type into HAL driver type*/
883WPT_STATIC WPT_INLINE tDriverType
884WDI_2_HAL_DRV_TYPE
885(
886 WDI_DriverType wdiDriverType
887);
888
889/*Convert WDI stop reason into HAL stop reason*/
890WPT_STATIC WPT_INLINE tHalStopType
891WDI_2_HAL_STOP_REASON
892(
893 WDI_StopType wdiStopType
894);
895
896/*Convert WDI scan mode type into HAL scan mode type*/
897WPT_STATIC WPT_INLINE eHalSysMode
898WDI_2_HAL_SCAN_MODE
899(
900 WDI_ScanMode wdiScanMode
901);
902
903/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700904WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700905WDI_2_HAL_SEC_CH_OFFSET
906(
907 WDI_HTSecondaryChannelOffset wdiSecChOffset
908);
909
910/*Convert WDI BSS type into HAL BSS type*/
911WPT_STATIC WPT_INLINE tSirBssType
912WDI_2_HAL_BSS_TYPE
913(
914 WDI_BssType wdiBSSType
915);
916
917/*Convert WDI NW type into HAL NW type*/
918WPT_STATIC WPT_INLINE tSirNwType
919WDI_2_HAL_NW_TYPE
920(
921 WDI_NwType wdiNWType
922);
923
924/*Convert WDI chanel bonding type into HAL cb type*/
925WPT_STATIC WPT_INLINE ePhyChanBondState
926WDI_2_HAL_CB_STATE
927(
928 WDI_PhyChanBondState wdiCbState
929);
930
931/*Convert WDI chanel bonding type into HAL cb type*/
932WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
933WDI_2_HAL_HT_OPER_MODE
934(
935 WDI_HTOperatingMode wdiHTOperMode
936);
937
938/*Convert WDI mimo PS type into HAL mimo PS type*/
939WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
940WDI_2_HAL_MIMO_PS
941(
942 WDI_HTMIMOPowerSaveState wdiHTOperMode
943);
944
945/*Convert WDI ENC type into HAL ENC type*/
946WPT_STATIC WPT_INLINE tAniEdType
947WDI_2_HAL_ENC_TYPE
948(
949 WDI_EncryptType wdiEncType
950);
951
952/*Convert WDI WEP type into HAL WEP type*/
953WPT_STATIC WPT_INLINE tAniWepType
954WDI_2_HAL_WEP_TYPE
955(
956 WDI_WepType wdiWEPType
957);
958
959/*Convert WDI Link State into HAL Link State*/
960WPT_STATIC WPT_INLINE tSirLinkState
961WDI_2_HAL_LINK_STATE
962(
963 WDI_LinkStateType wdiLinkState
964);
965
Jeff Johnsone7245742012-09-05 17:12:55 -0700966/*Translate a STA Context from WDI into HAL*/
967WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700968void
969WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700970(
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 tConfigStaParams* phalConfigSta,
972 WDI_ConfigStaReqInfoType* pwdiConfigSta
973);
Jeff Johnsone7245742012-09-05 17:12:55 -0700974
975/*Translate a Rate set info from WDI into HAL*/
976WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700977WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700978(
Jeff Johnson295189b2012-06-20 16:38:30 -0700979 tSirMacRateSet* pHalRateSet,
980 WDI_RateSet* pwdiRateSet
981);
982
983/*Translate an EDCA Parameter Record from WDI into HAL*/
984WPT_STATIC WPT_INLINE void
985WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700986(
Jeff Johnson295189b2012-06-20 16:38:30 -0700987 tSirMacEdcaParamRecord* phalEdcaParam,
988 WDI_EdcaParamRecord* pWDIEdcaParam
989);
990
991/*Copy a management frame header from WDI fmt into HAL fmt*/
992WPT_STATIC WPT_INLINE void
993WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
994(
995 tSirMacMgmtHdr* pmacMgmtHdr,
996 WDI_MacMgmtHdr* pwdiMacMgmtHdr
997);
998
999/*Copy config bss parameters from WDI fmt into HAL fmt*/
1000WPT_STATIC WPT_INLINE void
1001WDI_CopyWDIConfigBSSToHALConfigBSS
1002(
1003 tConfigBssParams* phalConfigBSS,
1004 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1005);
1006
Jeff Johnsone7245742012-09-05 17:12:55 -07001007/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001008 pointed to by user data */
1009WPT_STATIC WPT_INLINE void
1010WDI_ExtractRequestCBFromEvent
1011(
1012 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001013 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 void** ppUserData
1015);
1016
1017wpt_uint8
1018WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001019(
Jeff Johnson295189b2012-06-20 16:38:30 -07001020 WDI_ControlBlockType* pWDICtx,
1021 WDI_BSSSessionType** ppSession
1022);
1023
1024void
1025WDI_AddBcastSTAtoSTATable
1026(
1027 WDI_ControlBlockType* pWDICtx,
1028 WDI_AddStaParams * staParams,
1029 wpt_uint16 usBcastStaIdx
1030);
1031
1032WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001033(
Jeff Johnson295189b2012-06-20 16:38:30 -07001034 WDI_ControlBlockType* pWDICtx,
1035 WDI_EventInfoType* pEventData
1036);
1037
1038void
1039WDI_SetPowerStateCb
1040(
1041 wpt_status status,
1042 unsigned int dxePhyAddr,
1043 void *pContext
1044);
1045
Jeff Johnson295189b2012-06-20 16:38:30 -07001046/**
1047 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001048
1049 @param wdiReqMsgId: WDI Message request Id
1050
1051 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 @return Result of the function call
1053*/
1054static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1055{
1056 switch (wdiReqMsgId)
1057 {
1058 CASE_RETURN_STRING( WDI_START_REQ );
1059 CASE_RETURN_STRING( WDI_STOP_REQ );
1060 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1061 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1062 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1064 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1065 CASE_RETURN_STRING( WDI_JOIN_REQ );
1066 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1067 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1068 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1069 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1070 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1071 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1073 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1074 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1075 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1076 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1077 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1078 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1079 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001080 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001081 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1082 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1083 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1084 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1085 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1086 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1087 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1088 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1089 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1090 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1091 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1092 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001093 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301095#ifdef FEATURE_WLAN_TDLS
1096 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301097 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301098#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001099 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1100 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1101 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1103 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1104 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1105 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1106 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1107 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1109 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1110 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1111 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1112 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1114 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1115 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1116 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1117 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1118 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1119 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1120 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1121 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1122 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1123 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001124 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001125 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1126 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1127 #ifdef FEATURE_WLAN_SCAN_PNO
1128 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1129 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1130 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1131 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001132#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001133 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001134#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001135 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1136 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1137 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1138 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1139 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1140 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1141 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1142 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1143 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301144 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001145 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001146 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001147#ifdef WLAN_FEATURE_11W
1148 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1149#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301150#ifdef FEATURE_WLAN_BATCH_SCAN
1151 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1152 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1153 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1154#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301155 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1156 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001157 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301158#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1159 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1160 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1161 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1162#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301163#ifdef WLAN_FEATURE_EXTSCAN
1164 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1165 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1170 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1171 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1172#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301173 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301174 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301175 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301176 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301177 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301178 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301179 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301180 CASE_RETURN_STRING( WDI_MON_START_REQ );
1181 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301182 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 default:
1184 return "Unknown WDI MessageId";
1185 }
1186}
1187
1188
1189
1190/**
1191 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001192
1193 @param wdiRespMsgId: WDI Message response Id
1194
1195 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 @return Result of the function call
1197*/
1198static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1199{
1200 switch (wdiRespMsgId)
1201 {
1202 CASE_RETURN_STRING( WDI_START_RESP );
1203 CASE_RETURN_STRING( WDI_STOP_RESP );
1204 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1205 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1206 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1207 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1208 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1209 CASE_RETURN_STRING( WDI_JOIN_RESP );
1210 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1211 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1212 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1213 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1214 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1216 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1217 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1219 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1220 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1221 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1222 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1223 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1224 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1225 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1226 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1227 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1228 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1229 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1230 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1231 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1232 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1233 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1234 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1235 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1236 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301237#ifdef FEATURE_WLAN_TDLS
1238 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301239 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301240 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1241#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1243 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1244 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1245 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1246 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1247 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1248 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1249 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1250 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1251 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1252 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1253 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1254 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1255 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1256 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1257 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1258 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1259 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1260 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1261 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1262 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1263 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1264 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1265 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1266 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001267 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1269 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1270 #ifdef FEATURE_WLAN_SCAN_PNO
1271 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1272 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1273 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1274 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001275#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001276 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001277#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001278 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1279 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1280 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1281 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1282 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1283 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1284 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1285 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001286 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301287#ifdef FEATURE_WLAN_BATCH_SCAN
1288 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1289#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001290 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301291 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301292 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301293#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1294 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1295 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1296 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1297#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301298#ifdef WLAN_FEATURE_EXTSCAN
1299 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1300 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1304 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1305 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1306 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1307 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1309 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1310 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1311 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1312
1313#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301314 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301315 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301316 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301317 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301318 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001319 default:
1320 return "Unknown WDI MessageId";
1321 }
1322}
1323
1324/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301325 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1326 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301327 @param capabilityBitmap - Base address of a 4 element Bitmap array
1328 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301329 @see
1330 @returns None
1331 */
1332void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1333{
Abhishek Singh08b60122014-02-04 18:05:23 +05301334 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301335 char *pTempCapStr = NULL;
1336 char *pCapStr = NULL;
1337 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1338 if (NULL == pTempCapStr)
1339 {
1340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1341 "Memory allocation failed for CapStr");
1342 return;
1343 }
1344
1345 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301346 for (j = 0; j < 4; j++) {
1347 for (i = 0; i < 32; i++) {
1348 if ((*(capabilityBitmap + j) & (1 << i))) {
1349 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301350 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1351 pCapStr += strlen("MCC");
1352 break;
1353 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1354 pCapStr += strlen("P2P");
1355 break;
1356 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1357 pCapStr += strlen("DOT11AC");
1358 break;
1359 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1360 pCapStr += strlen("SLM_SESSIONIZATION");
1361 break;
1362 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1363 pCapStr += strlen("DOT11AC_OPMODE");
1364 break;
1365 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1366 pCapStr += strlen("SAP32STA");
1367 break;
1368 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1369 pCapStr += strlen("TDLS");
1370 break;
1371 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1372 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1373 break;
1374 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1375 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1376 break;
1377 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1378 pCapStr += strlen("BEACON_OFFLOAD");
1379 break;
1380 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1381 pCapStr += strlen("SCAN_OFFLOAD");
1382 break;
1383 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1384 pCapStr += strlen("ROAM_OFFLOAD");
1385 break;
1386 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1387 pCapStr += strlen("BCN_MISS_OFFLOAD");
1388 break;
1389 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1390 pCapStr += strlen("STA_POWERSAVE");
1391 break;
1392 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1393 pCapStr += strlen("AP_UAPSD");
1394 break;
1395 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1396 pCapStr += strlen("AP_DFS");
1397 break;
1398 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1399 pCapStr += strlen("BLOCKACK");
1400 break;
1401 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1402 pCapStr += strlen("PHY_ERR");
1403 break;
1404 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1405 pCapStr += strlen("BCN_FILTER");
1406 break;
1407 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1408 pCapStr += strlen("RTT");
1409 break;
1410 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1411 pCapStr += strlen("RATECTRL");
1412 break;
1413 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1414 pCapStr += strlen("WOW");
1415 break;
1416 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1417 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1418 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301419 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1420 pCapStr += strlen("FW_IN_TX_PATH");
1421 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301422 case HT40_OBSS_SCAN:
1423 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1424 "%s", "HT40_OBSS_SCAN");
1425 pCapStr += strlen("HT40_OBSS_SCAN");
1426 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301427 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1428 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1429 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1430 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1431 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301432 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1433 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1434 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301435 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1436 pCapStr += strlen("CH_SWITCH_V1");
1437 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301438#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1439 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1440 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1441 break;
1442#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301443#ifdef WLAN_FEATURE_EXTSCAN
1444 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1445 pCapStr += strlen("EXTENDED_SCAN");
1446 break;
1447#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301448 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1449 pCapStr += strlen("MU_MIMO");
1450 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301451
Mihir Shetec34258c2014-07-30 17:50:27 +05301452 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1453 pCapStr += strlen("DYNAMIC_WMM_PS");
1454 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301455 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1456 pCapStr += strlen("FW_STATS");
1457 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301458 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1459 pCapStr += strlen("MAC_SPOOFED_SCAN");
1460 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301461 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1462 pCapStr += strlen("WPS_PRBRSP_TMPL");
1463 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301464 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1465 pCapStr += strlen("BCN_IE_FLT_DELTA");
1466 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301467 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1468 pCapStr += strlen("MGMT_FRAME_LOGGING");
1469 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301470 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1471 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1472 break;
1473
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301474 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1475 pCapStr += strlen("DISA");
1476 break;
1477
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301478 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1479 pCapStr += strlen("TDLS_OFF_CHANNEL");
1480 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301481 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1482 pCapStr += strlen("LOGGING_ENHANCEMENT");
1483 break;
1484
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301485
Abhishek Singh08b60122014-02-04 18:05:23 +05301486 }
1487 *pCapStr++ = ',';
1488 *pCapStr++ = ' ';
1489 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301490 }
1491 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301492 pCapStr -= 2;
1493 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301495 if (pTempCapStr)
1496 {
1497 vos_mem_free(pTempCapStr);
1498 pTempCapStr = NULL;
1499 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301500}
1501
1502/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001504
1505 @param halStatusId: HAL status Id
1506
1507 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001508 @return Result of the function call
1509*/
1510static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1511{
1512 switch (halStatusId)
1513 {
1514 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1515 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1516 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1517 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1518 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1519 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1520 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1521 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1522 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1523 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1524 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1525 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1526 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1527 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1528 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1529 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1530 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1531 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1532 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1533 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1534 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1535 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1536 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1537 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1538 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1539 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1540 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1541 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1542 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1543 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1544 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1545 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1546 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1547 default:
1548 return "Unknown HAL status";
1549 }
1550}
1551
Jeff Johnsone7245742012-09-05 17:12:55 -07001552/*========================================================================
1553
Jeff Johnson295189b2012-06-20 16:38:30 -07001554 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001555
Jeff Johnson295189b2012-06-20 16:38:30 -07001556==========================================================================*/
1557
1558/**
1559 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001560
Jeff Johnson295189b2012-06-20 16:38:30 -07001561 DAL will allocate all the resources it needs. It will open PAL, it will also
1562 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 DXE/SMD or any other drivers that they need.
1564
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301565 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 ppWDIGlobalCtx: output pointer of Global Context
1567 pWdiDevCapability: output pointer of device capability
1568
1569 @return Result of the function call
1570*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001572WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001573(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301574 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 void** ppWDIGlobalCtx,
1576 WDI_DeviceCapabilityType* pWdiDevCapability,
1577 unsigned int driverType
1578)
1579{
1580 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001581 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001583 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1585
1586 /*---------------------------------------------------------------------
1587 Sanity check
1588 ---------------------------------------------------------------------*/
1589 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1590 {
1591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1592 "Invalid input parameters in WDI_Init");
1593
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 }
1596
1597 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001598 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 ---------------------------------------------------------------------*/
1600 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1601 {
1602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1603 "WDI module already initialized - return");
1604
Jeff Johnsone7245742012-09-05 17:12:55 -07001605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 }
1607
1608 /*Module is now initialized - this flag is to ensure the fact that multiple
1609 init will not happen on WDI
1610 !! - potential race does exist because read and set are not atomic,
1611 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001612 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001613
1614 /*Setup the control block */
1615 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301616 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001617
1618 /*Setup the STA Table*/
1619 wdiStatus = WDI_STATableInit(&gWDICb);
1620 if ( WDI_STATUS_SUCCESS != wdiStatus )
1621 {
1622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1623 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001624 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 goto fail_STATableInit;
1626 }
1627
1628 /*------------------------------------------------------------------------
1629 Open the PAL
1630 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301631 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1633 {
1634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1635 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001636 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001637 goto fail_wpalOpen;
1638 }
1639
1640 /*Initialize main synchro mutex - it will be used to ensure integrity of
1641 the main WDI Control Block*/
1642 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1643 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1644 {
1645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1646 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001647 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001648 goto fail_mutex;
1649 }
1650
1651 /*Initialize the response timer - it will be used to time all messages
1652 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001653 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1654 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 &gWDICb);
1656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1659 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001660 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 goto fail_timer;
1662 }
1663
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001664 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1665 WDI_SsrTimerCB,
1666 &gWDICb);
1667 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1668 {
1669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1670 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001671 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001672 goto fail_timer2;
1673 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001674 /* Initialize the WDI Pending Request Queue*/
1675 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1676 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1677 {
1678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1679 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 goto fail_pend_queue;
1682 }
1683
1684 /*Init WDI Pending Assoc Id Queue */
1685 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1686 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1687 {
1688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1689 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001690 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 goto fail_assoc_queue;
1692 }
1693
1694 /*Initialize the BSS sessions pending Queue */
1695 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1696 {
1697 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1698 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1699 {
1700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1701 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 goto fail_bss_queue;
1704 }
1705 }
1706
1707 /*Indicate the control block is sufficiently initialized for callbacks*/
1708 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1709
1710 /*------------------------------------------------------------------------
1711 Initialize the Data Path Utility Module
1712 ------------------------------------------------------------------------*/
1713 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1714 if ( WDI_STATUS_SUCCESS != wdiStatus )
1715 {
1716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1717 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001718 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 goto fail_dp_util_init;
1720 }
1721
1722 /* Init Set power state event */
1723 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001724 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 {
1726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1727 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001728 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 goto fail_power_event;
1730 }
1731
1732 /* Init WCTS action event */
1733 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 {
1736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1737 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001738 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 goto fail_wcts_event;
1740 }
1741
1742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 ------------------------------------------------------------------------*/
1745 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1746 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001747 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 wctsCBs.wctsRxMsgCBData = &gWDICb;
1749
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 WDI_CT_CHANNEL_SIZE,
1753 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001754
1755 if ( NULL == gWDICb.wctsHandle )
1756 {
1757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001758 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 goto fail_wcts_open;
1760 }
1761
1762 gWDICb.driverMode = (tDriverType)driverType;
1763 /* FTM mode not need to open Transport Driver */
1764 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001765 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 /*------------------------------------------------------------------------
1767 Open the Data Transport
1768 ------------------------------------------------------------------------*/
1769 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001772 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 goto fail_wdts_open;
1774 }
1775 }
1776
1777 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001778 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301779 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001780 /*Send the context as a ptr to the global WDI Control Block*/
1781 *ppWDIGlobalCtx = &gWDICb;
1782
1783 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1786 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1787 return WDI_STATUS_SUCCESS;
1788
1789 /* ERROR handlers
1790 Undo everything that completed successfully */
1791
1792 fail_wdts_open:
1793 {
1794 wpt_status eventStatus;
1795
1796 /* Closing WCTS in this scenario is tricky since it has to close
1797 the SMD channel and then we get notified asynchronously when
1798 the channel has been closed. So we take some of the logic from
1799 the "normal" close procedure in WDI_Close()
1800 */
1801
1802 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 {
1805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001806 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 }
1808
1809 WCTS_CloseTransport(gWDICb.wctsHandle);
1810
1811 /* Wait for WCTS to close the control transport. If we were able
1812 to reset the event flag, then we'll wait for the event,
1813 otherwise we'll wait for a maximum amount of time required for
1814 the channel to be closed */
1815 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001817 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 WDI_WCTS_ACTION_TIMEOUT);
1819 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1820 {
1821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001822 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 }
1824 }
1825 else
1826 {
1827 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1828 }
1829 }
1830 fail_wcts_open:
1831 wpalEventDelete(&gWDICb.wctsActionEvent);
1832 fail_wcts_event:
1833 wpalEventDelete(&gWDICb.setPowerStateEvent);
1834 fail_power_event:
1835 WDI_DP_UtilsExit(&gWDICb);
1836 fail_dp_util_init:
1837 gWDICb.magic = 0;
1838 fail_bss_queue:
1839 /* entries 0 thru i-1 were successfully initialized */
1840 while (0 < i)
1841 {
1842 i--;
1843 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1844 }
1845 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1846 fail_assoc_queue:
1847 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1848 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001849 wpalTimerDelete(&gWDICb.ssrTimer);
1850 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 wpalTimerDelete(&gWDICb.wptResponseTimer);
1852 fail_timer:
1853 wpalMutexDelete(&gWDICb.wptMutex);
1854 fail_mutex:
1855 wpalClose(gWDICb.pPALContext);
1856 fail_wpalOpen:
1857 WDI_STATableClose(&gWDICb);
1858 fail_STATableInit:
1859 gWDIInitialized = eWLAN_PAL_FALSE;
1860
1861 return WDI_STATUS_E_FAILURE;
1862
1863}/*WDI_Init*/;
1864
1865/**
1866 @brief WDI_Start will be called when the upper MAC is ready to
1867 commence operation with the WLAN Device. Upon the call
1868 of this API the WLAN DAL will pack and send a HAL Start
1869 message to the lower RIVA sub-system if the SMD channel
1870 has been fully opened and the RIVA subsystem is up.
1871
1872 If the RIVA sub-system is not yet up and running DAL
1873 will queue the request for Open and will wait for the
1874 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001876
1877 WDI_Init must have been called.
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001881
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 wdiStartRspCb: callback for passing back the response of
1883 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 callback
1887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 @see WDI_Start
1889 @return Result of the function call
1890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001892WDI_Start
1893(
1894 WDI_StartReqParamsType* pwdiStartParams,
1895 WDI_StartRspCb wdiStartRspCb,
1896 void* pUserData
1897)
1898{
1899 WDI_EventInfoType wdiEventData;
1900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1901
1902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 ------------------------------------------------------------------------*/
1905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1906 {
1907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1908 "WDI API call before module is initialized - Fail request");
1909
Jeff Johnsone7245742012-09-05 17:12:55 -07001910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 }
1912
1913 /*------------------------------------------------------------------------
1914 Fill in Event data and post to the Main FSM
1915 ------------------------------------------------------------------------*/
1916 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001917 wdiEventData.pEventData = pwdiStartParams;
1918 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1919 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 wdiEventData.pUserData = pUserData;
1921
1922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1923
1924}/*WDI_Start*/
1925
1926/**
1927 @brief WDI_Stop will be called when the upper MAC is ready to
1928 stop any operation with the WLAN Device. Upon the call
1929 of this API the WLAN DAL will pack and send a HAL Stop
1930 message to the lower RIVA sub-system if the DAL Core is
1931 in started state.
1932
1933 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001934
1935 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001936
1937 WDI_Start must have been called.
1938
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001941
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 wdiStopRspCb: callback for passing back the response of
1943 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 callback
1947
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 @see WDI_Start
1949 @return Result of the function call
1950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001952WDI_Stop
1953(
1954 WDI_StopReqParamsType* pwdiStopParams,
1955 WDI_StopRspCb wdiStopRspCb,
1956 void* pUserData
1957)
1958{
1959 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001960 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1962
1963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 ------------------------------------------------------------------------*/
1966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1967 {
1968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1969 "WDI API call before module is initialized - Fail request");
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 }
1973
Jeff Johnson43971f52012-07-17 12:26:56 -07001974 /*Access to the global state must be locked before cleaning */
1975 wpalMutexAcquire(&pWDICtx->wptMutex);
1976
1977 /*Clear all pending request*/
1978 WDI_ClearPendingRequests(pWDICtx);
1979
1980 /*We have completed cleaning unlock now*/
1981 wpalMutexRelease(&pWDICtx->wptMutex);
1982
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 /* Free the global variables */
1984 wpalMemoryFree(gpHostWlanFeatCaps);
1985 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001986 gpHostWlanFeatCaps = NULL;
1987 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001988
1989 /*------------------------------------------------------------------------
1990 Fill in Event data and post to the Main FSM
1991 ------------------------------------------------------------------------*/
1992 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 wdiEventData.pEventData = pwdiStopParams;
1994 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1995 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wdiEventData.pUserData = pUserData;
1997
1998 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1999
2000}/*WDI_Stop*/
2001
2002
2003
2004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002005 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 needs to interact with DAL. DAL will free its control
2007 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002008
2009 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002010
2011 WDI_Stop must have been called.
2012
2013 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002014
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 @see WDI_Stop
2016 @return Result of the function call
2017*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002018WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002019WDI_Close
2020(
2021 void
2022)
2023{
2024 wpt_uint8 i;
2025 WDI_EventInfoType wdiEventData;
2026 wpt_status wptStatus;
2027 wpt_status eventStatus;
2028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2029
2030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 ------------------------------------------------------------------------*/
2033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2034 {
2035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2036 "WDI API call before module is initialized - Fail request");
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 }
2040
2041 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2042 (the control transport will be closed by the FSM and we'll want
2043 to wait until that completes)*/
2044 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 {
2047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002048 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 /* fall through and try to finish closing via the FSM */
2050 }
2051
2052 /*------------------------------------------------------------------------
2053 Fill in Event data and post to the Main FSM
2054 ------------------------------------------------------------------------*/
2055 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 wdiEventData.pEventData = NULL;
2057 wdiEventData.uEventDataSize = 0;
2058 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 wdiEventData.pUserData = NULL;
2060
2061 gWDIInitialized = eWLAN_PAL_FALSE;
2062
2063 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2064
2065 /*Wait for WCTS to close the control transport
2066 (but only if we were able to reset the event flag*/
2067 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2068 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 WDI_WCTS_ACTION_TIMEOUT);
2071 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2072 {
2073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002074 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 }
2076 }
2077
2078 /* Destroy the WCTS action event */
2079 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2080 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2083 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 }
2086
2087 /* Destroy the Set Power State event */
2088 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2089 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2090 {
2091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2092 "WDI Close failed to destroy an event");
2093
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 }
2096
2097 /*------------------------------------------------------------------------
2098 Closes the Data Path Utility Module
2099 ------------------------------------------------------------------------*/
2100 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2101 {
2102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2103 "WDI Init failed to close the DP Util Module");
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 }
2107
2108 /*destroy the BSS sessions pending Queue */
2109 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2110 {
2111 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2112 }
2113
2114 /* destroy the WDI Pending Assoc Id Request Queue*/
2115 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2116
2117 /* destroy the WDI Pending Request Queue*/
2118 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002119
Jeff Johnson295189b2012-06-20 16:38:30 -07002120 /*destroy the response timer */
2121 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2122
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002123 /*destroy the SSR timer */
2124 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2125
Jeff Johnson295189b2012-06-20 16:38:30 -07002126 /*invalidate the main synchro mutex */
2127 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2128 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2129 {
2130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2131 "Failed to delete mutex %d", wptStatus);
2132 WDI_ASSERT(0);
2133 }
2134
2135 /*Clear control block. note that this will clear the "magic"
2136 which will inhibit all asynchronous callbacks*/
2137 WDI_CleanCB(&gWDICb);
2138
2139 return wptStatus;
2140
2141}/*WDI_Close*/
2142
2143/**
2144 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2145 This will do most of the WDI stop & close
2146 operations without doing any handshake with Riva
2147
2148 This will also make sure that the control transport
2149 will NOT be closed.
2150
2151 This request will not be queued.
2152
2153
2154 WDI_Start must have been called.
2155
2156 @param closeTransport: Close control channel if this is set
2157
2158 @return Result of the function call
2159*/
2160WDI_Status
2161WDI_Shutdown
2162(
2163 wpt_boolean closeTransport
2164)
2165{
2166 WDI_EventInfoType wdiEventData;
2167 wpt_status wptStatus;
2168 int i = 0;
2169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2170
2171 /*------------------------------------------------------------------------
2172 Sanity Check
2173 ------------------------------------------------------------------------*/
2174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2175 {
2176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2177 "WDI API call before module is initialized - Fail request");
2178
2179 return WDI_STATUS_E_NOT_ALLOWED;
2180 }
2181
2182 /*------------------------------------------------------------------------
2183 Fill in Event data and post to the Main FSM
2184 ------------------------------------------------------------------------*/
2185 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2186 wdiEventData.pEventData = NULL;
2187 wdiEventData.uEventDataSize = 0;
2188
2189 /* Shutdown will not be queued, if the state is busy timer will be
2190 * stopped & this message will be processed.*/
2191 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2192 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2193 {
2194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002195 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 }
2197 /* Destroy the Set Power State event */
2198 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2202 "WDI Close failed to destroy an event");
2203
2204 WDI_ASSERT(0);
2205 }
2206 /*------------------------------------------------------------------------
2207 Closes the Data Path Utility Module
2208 ------------------------------------------------------------------------*/
2209 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2210 {
2211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2212 "WDI Init failed to close the DP Util Module");
2213
2214 WDI_ASSERT(0);
2215 }
2216 if ( closeTransport )
2217 {
2218 /* Close control transport, called from module unload */
2219 WCTS_CloseTransport(gWDICb.wctsHandle);
2220 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002221 else
2222 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002223 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002224 the pending messages in the transport queue */
2225 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2226 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 /*destroy the BSS sessions pending Queue */
2228 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2229 {
2230 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2231 }
2232
2233 /* destroy the WDI Pending Assoc Id Request Queue*/
2234 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2235 /* destroy the WDI Pending Request Queue*/
2236 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2237 /*destroy the response timer */
2238 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002239 /*destroy the SSR timer */
2240 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002241
2242 /*invalidate the main synchro mutex */
2243 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2244 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2245 {
2246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002247 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 WDI_ASSERT(0);
2249 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002250 /* Free the global variables */
2251 wpalMemoryFree(gpHostWlanFeatCaps);
2252 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002253 gpHostWlanFeatCaps = NULL;
2254 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002255 /*Clear control block. note that this will clear the "magic"
2256 which will inhibit all asynchronous callbacks*/
2257 WDI_CleanCB(&gWDICb);
2258 return wptStatus;
2259
2260}/*WDI_Shutdown*/
2261
2262
Jeff Johnsone7245742012-09-05 17:12:55 -07002263/*========================================================================
2264
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002266
Jeff Johnson295189b2012-06-20 16:38:30 -07002267==========================================================================*/
2268
2269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002270 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002271 the WLAN Device to get ready for a scan procedure. Upon
2272 the call of this API the WLAN DAL will pack and send a
2273 HAL Init Scan request message to the lower RIVA
2274 sub-system if DAL is in state STARTED.
2275
2276 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002278
2279 WDI_Start must have been called.
2280
2281 @param wdiInitScanParams: the init scan parameters as specified
2282 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 wdiInitScanRspCb: callback for passing back the response
2285 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 callback
2289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 @see WDI_Start
2291 @return Result of the function call
2292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002294WDI_InitScanReq
2295(
2296 WDI_InitScanReqParamsType* pwdiInitScanParams,
2297 WDI_InitScanRspCb wdiInitScanRspCb,
2298 void* pUserData
2299)
2300{
2301 WDI_EventInfoType wdiEventData;
2302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2303
2304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 ------------------------------------------------------------------------*/
2307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2308 {
2309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2310 "WDI API call before module is initialized - Fail request");
2311
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 }
2314
2315 /*------------------------------------------------------------------------
2316 Fill in Event data and post to the Main FSM
2317 ------------------------------------------------------------------------*/
2318 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 wdiEventData.pEventData = pwdiInitScanParams;
2320 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2321 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 wdiEventData.pUserData = pUserData;
2323
2324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2325
2326}/*WDI_InitScanReq*/
2327
2328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 wishes to change the Scan channel on the WLAN Device.
2331 Upon the call of this API the WLAN DAL will pack and
2332 send a HAL Start Scan request message to the lower RIVA
2333 sub-system if DAL is in state STARTED.
2334
2335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002337
2338 WDI_InitScanReq must have been called.
2339
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 wdiStartScanRspCb: callback for passing back the
2344 response of the start scan operation received from the
2345 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 callback
2349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 @see WDI_InitScanReq
2351 @return Result of the function call
2352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002354WDI_StartScanReq
2355(
2356 WDI_StartScanReqParamsType* pwdiStartScanParams,
2357 WDI_StartScanRspCb wdiStartScanRspCb,
2358 void* pUserData
2359)
2360{
2361 WDI_EventInfoType wdiEventData;
2362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2363
2364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 ------------------------------------------------------------------------*/
2367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2368 {
2369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2370 "WDI API call before module is initialized - Fail request");
2371
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 }
2374
2375 /*------------------------------------------------------------------------
2376 Fill in Event data and post to the Main FSM
2377 ------------------------------------------------------------------------*/
2378 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 wdiEventData.pEventData = pwdiStartScanParams;
2380 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2381 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 wdiEventData.pUserData = pUserData;
2383
2384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2385
2386}/*WDI_StartScanReq*/
2387
2388
2389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 wants to end scanning for a particular channel that it
2392 had set before by calling Scan Start on the WLAN Device.
2393 Upon the call of this API the WLAN DAL will pack and
2394 send a HAL End Scan request message to the lower RIVA
2395 sub-system if DAL is in state STARTED.
2396
2397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002399
2400 WDI_StartScanReq must have been called.
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEndScanRspCb: callback for passing back the response
2406 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 callback
2410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 @see WDI_StartScanReq
2412 @return Result of the function call
2413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002415WDI_EndScanReq
2416(
2417 WDI_EndScanReqParamsType* pwdiEndScanParams,
2418 WDI_EndScanRspCb wdiEndScanRspCb,
2419 void* pUserData
2420)
2421{
2422 WDI_EventInfoType wdiEventData;
2423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2424
2425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 ------------------------------------------------------------------------*/
2428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2429 {
2430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2431 "WDI API call before module is initialized - Fail request");
2432
Jeff Johnsone7245742012-09-05 17:12:55 -07002433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 }
2435
2436 /*------------------------------------------------------------------------
2437 Fill in Event data and post to the Main FSM
2438 ------------------------------------------------------------------------*/
2439 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002440 wdiEventData.pEventData = pwdiEndScanParams;
2441 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2442 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 wdiEventData.pUserData = pUserData;
2444
2445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2446
2447}/*WDI_EndScanReq*/
2448
2449
2450/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 completed the scan process on the WLAN Device. Upon the
2453 call of this API the WLAN DAL will pack and send a HAL
2454 Finish Scan Request request message to the lower RIVA
2455 sub-system if DAL is in state STARTED.
2456
2457 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002459
2460 WDI_InitScanReq must have been called.
2461
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002463 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 wdiFinishScanRspCb: callback for passing back the
2466 response of the finish scan operation received from the
2467 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002468
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 callback
2471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 @see WDI_InitScanReq
2473 @return Result of the function call
2474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002476WDI_FinishScanReq
2477(
2478 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2479 WDI_FinishScanRspCb wdiFinishScanRspCb,
2480 void* pUserData
2481)
2482{
2483 WDI_EventInfoType wdiEventData;
2484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2485
2486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002488 ------------------------------------------------------------------------*/
2489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2490 {
2491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2492 "WDI API call before module is initialized - Fail request");
2493
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002495 }
2496
2497 /*------------------------------------------------------------------------
2498 Fill in Event data and post to the Main FSM
2499 ------------------------------------------------------------------------*/
2500 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002501 wdiEventData.pEventData = pwdiFinishScanParams;
2502 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2503 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 wdiEventData.pUserData = pUserData;
2505
2506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2507
2508}/*WDI_FinishScanReq*/
2509
Jeff Johnsone7245742012-09-05 17:12:55 -07002510/*========================================================================
2511
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002513
Jeff Johnson295189b2012-06-20 16:38:30 -07002514==========================================================================*/
2515
2516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 to start an association procedure to a BSS. Upon the
2519 call of this API the WLAN DAL will pack and send a HAL
2520 Join request message to the lower RIVA sub-system if
2521 DAL is in state STARTED.
2522
2523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002525
2526 WDI_Start must have been called.
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiJoinRspCb: callback for passing back the response of
2532 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 callback
2536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 @see WDI_Start
2538 @return Result of the function call
2539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002541WDI_JoinReq
2542(
2543 WDI_JoinReqParamsType* pwdiJoinParams,
2544 WDI_JoinRspCb wdiJoinRspCb,
2545 void* pUserData
2546)
2547{
2548 WDI_EventInfoType wdiEventData;
2549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2550
2551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 ------------------------------------------------------------------------*/
2554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2555 {
2556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2557 "WDI API call before module is initialized - Fail request");
2558
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 }
2561
2562 /*------------------------------------------------------------------------
2563 Fill in Event data and post to the Main FSM
2564 ------------------------------------------------------------------------*/
2565 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 wdiEventData.pEventData = pwdiJoinParams;
2567 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2568 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002569 wdiEventData.pUserData = pUserData;
2570
2571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2572
2573}/*WDI_JoinReq*/
2574
2575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 wishes to configure the newly acquired or in process of
2578 being acquired BSS to the HW . Upon the call of this API
2579 the WLAN DAL will pack and send a HAL Config BSS request
2580 message to the lower RIVA sub-system if DAL is in state
2581 STARTED.
2582
2583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002585
2586 WDI_JoinReq must have been called.
2587
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiConfigBSSRspCb: callback for passing back the
2592 response of the config BSS operation received from the
2593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002594
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 callback
2597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 @see WDI_JoinReq
2599 @return Result of the function call
2600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002602WDI_ConfigBSSReq
2603(
2604 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2605 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2606 void* pUserData
2607)
2608{
2609 WDI_EventInfoType wdiEventData;
2610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2611
2612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 ------------------------------------------------------------------------*/
2615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2616 {
2617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2618 "WDI API call before module is initialized - Fail request");
2619
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 }
2622
2623 /*------------------------------------------------------------------------
2624 Fill in Event data and post to the Main FSM
2625 ------------------------------------------------------------------------*/
2626 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 wdiEventData.pEventData = pwdiConfigBSSParams;
2628 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2629 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 wdiEventData.pUserData = pUserData;
2631
2632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2633
2634}/*WDI_ConfigBSSReq*/
2635
2636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002638 disassociating from the BSS and wishes to notify HW.
2639 Upon the call of this API the WLAN DAL will pack and
2640 send a HAL Del BSS request message to the lower RIVA
2641 sub-system if DAL is in state STARTED.
2642
2643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002645
2646 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2647
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiDelBSSRspCb: callback for passing back the response
2652 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 callback
2656
2657 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 @return Result of the function call
2659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002661WDI_DelBSSReq
2662(
2663 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2664 WDI_DelBSSRspCb wdiDelBSSRspCb,
2665 void* pUserData
2666)
2667{
2668 WDI_EventInfoType wdiEventData;
2669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2670
2671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 ------------------------------------------------------------------------*/
2674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2677 "WDI API call before module is initialized - Fail request");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*------------------------------------------------------------------------
2683 Fill in Event data and post to the Main FSM
2684 ------------------------------------------------------------------------*/
2685 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 wdiEventData.pEventData = pwdiDelBSSParams;
2687 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2688 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wdiEventData.pUserData = pUserData;
2690
2691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2692
2693}/*WDI_DelBSSReq*/
2694
2695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 associated to a BSS and wishes to configure HW for
2698 associated state. Upon the call of this API the WLAN DAL
2699 will pack and send a HAL Post Assoc request message to
2700 the lower RIVA sub-system if DAL is in state STARTED.
2701
2702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002704
2705 WDI_JoinReq must have been called.
2706
2707 @param wdiPostAssocReqParams: the assoc parameters as specified
2708 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 wdiPostAssocRspCb: callback for passing back the
2711 response of the post assoc operation received from the
2712 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002713
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 callback
2716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 @see WDI_JoinReq
2718 @return Result of the function call
2719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002721WDI_PostAssocReq
2722(
2723 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2724 WDI_PostAssocRspCb wdiPostAssocRspCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 wdiEventData.pEventData = pwdiPostAssocReqParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2748 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752
2753}/*WDI_PostAssocReq*/
2754
2755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 association with another STA has ended and the station
2758 must be deleted from HW. Upon the call of this API the
2759 WLAN DAL will pack and send a HAL Del STA request
2760 message to the lower RIVA sub-system if DAL is in state
2761 STARTED.
2762
2763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002765
2766 WDI_PostAssocReq must have been called.
2767
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002770
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 wdiDelSTARspCb: callback for passing back the response
2772 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 callback
2776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 @see WDI_PostAssocReq
2778 @return Result of the function call
2779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002781WDI_DelSTAReq
2782(
2783 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2784 WDI_DelSTARspCb wdiDelSTARspCb,
2785 void* pUserData
2786)
2787{
2788 WDI_EventInfoType wdiEventData;
2789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2790
2791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 ------------------------------------------------------------------------*/
2794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2795 {
2796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2797 "WDI API call before module is initialized - Fail request");
2798
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 }
2801
2802 /*------------------------------------------------------------------------
2803 Fill in Event data and post to the Main FSM
2804 ------------------------------------------------------------------------*/
2805 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 wdiEventData.pEventData = pwdiDelSTAParams;
2807 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2808 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 wdiEventData.pUserData = pUserData;
2810
2811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2812
2813}/*WDI_DelSTAReq*/
2814
Jeff Johnsone7245742012-09-05 17:12:55 -07002815/*========================================================================
2816
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002818
Jeff Johnson295189b2012-06-20 16:38:30 -07002819==========================================================================*/
2820
2821/**
2822 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2823 install a BSS encryption key on the HW. Upon the call of this
2824 API the WLAN DAL will pack and send a Set BSS Key request
2825 message to the lower RIVA sub-system if DAL is in state
2826 STARTED.
2827
2828 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002830
2831 WDI_PostAssocReq must have been called.
2832
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 wdiSetBSSKeyRspCb: callback for passing back the
2837 response of the set BSS Key operation received from the
2838 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002839
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 callback
2842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 @see WDI_PostAssocReq
2844 @return Result of the function call
2845*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002846WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002847WDI_SetBSSKeyReq
2848(
2849 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2850 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2851 void* pUserData
2852)
2853{
2854 WDI_EventInfoType wdiEventData;
2855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2856
2857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 ------------------------------------------------------------------------*/
2860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2861 {
2862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2863 "WDI API call before module is initialized - Fail request");
2864
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002866 }
2867
2868 /*------------------------------------------------------------------------
2869 Fill in Event data and post to the Main FSM
2870 ------------------------------------------------------------------------*/
2871 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002872 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2873 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2874 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 wdiEventData.pUserData = pUserData;
2876
2877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2878
2879}/*WDI_SetBSSKeyReq*/
2880
2881/**
2882 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2883 uninstall a BSS key from HW. Upon the call of this API the
2884 WLAN DAL will pack and send a HAL Remove BSS Key request
2885 message to the lower RIVA sub-system if DAL is in state
2886 STARTED.
2887
2888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002890
2891 WDI_SetBSSKeyReq must have been called.
2892
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 wdiRemoveBSSKeyRspCb: callback for passing back the
2897 response of the remove BSS key operation received from
2898 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 callback
2902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 @see WDI_SetBSSKeyReq
2904 @return Result of the function call
2905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002907WDI_RemoveBSSKeyReq
2908(
2909 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2910 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2911 void* pUserData
2912)
2913{
2914 WDI_EventInfoType wdiEventData;
2915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2916
2917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 ------------------------------------------------------------------------*/
2920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2921 {
2922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2923 "WDI API call before module is initialized - Fail request");
2924
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 }
2927
2928 /*------------------------------------------------------------------------
2929 Fill in Event data and post to the Main FSM
2930 ------------------------------------------------------------------------*/
2931 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002932 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2933 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2934 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 wdiEventData.pUserData = pUserData;
2936
2937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2938
2939}/*WDI_RemoveBSSKeyReq*/
2940
2941
2942/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002943 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002944 ready to install a STA(ast) encryption key in HW. Upon
2945 the call of this API the WLAN DAL will pack and send a
2946 HAL Set STA Key request message to the lower RIVA
2947 sub-system if DAL is in state STARTED.
2948
2949 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002951
2952 WDI_PostAssocReq must have been called.
2953
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 wdiSetSTAKeyRspCb: callback for passing back the
2958 response of the set STA key operation received from the
2959 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 callback
2963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 @see WDI_PostAssocReq
2965 @return Result of the function call
2966*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002968WDI_SetSTAKeyReq
2969(
2970 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2971 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2972 void* pUserData
2973)
2974{
2975 WDI_EventInfoType wdiEventData;
2976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2977
2978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 ------------------------------------------------------------------------*/
2981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2982 {
2983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2984 "WDI API call before module is initialized - Fail request");
2985
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 }
2988
2989 /*------------------------------------------------------------------------
2990 Fill in Event data and post to the Main FSM
2991 ------------------------------------------------------------------------*/
2992 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2994 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2995 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 wdiEventData.pUserData = pUserData;
2997
2998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2999
3000}/*WDI_SetSTAKeyReq*/
3001
3002
3003/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003004 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003005 wants to uninstall a previously set STA key in HW. Upon
3006 the call of this API the WLAN DAL will pack and send a
3007 HAL Remove STA Key request message to the lower RIVA
3008 sub-system if DAL is in state STARTED.
3009
3010 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003012
3013 WDI_SetSTAKeyReq must have been called.
3014
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 wdiRemoveSTAKeyRspCb: callback for passing back the
3019 response of the remove STA key operation received from
3020 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 callback
3024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 @see WDI_SetSTAKeyReq
3026 @return Result of the function call
3027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003029WDI_RemoveSTAKeyReq
3030(
3031 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3032 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3033 void* pUserData
3034)
3035{
3036 WDI_EventInfoType wdiEventData;
3037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3038
3039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 ------------------------------------------------------------------------*/
3042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3043 {
3044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3045 "WDI API call before module is initialized - Fail request");
3046
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 }
3049
3050 /*------------------------------------------------------------------------
3051 Fill in Event data and post to the Main FSM
3052 ------------------------------------------------------------------------*/
3053 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3055 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3056 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiEventData.pUserData = pUserData;
3058
3059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3060
3061}/*WDI_RemoveSTAKeyReq*/
3062
3063
3064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 wants to install a STA Bcast encryption key on the HW.
3067 Upon the call of this API the WLAN DAL will pack and
3068 send a HAL Start request message to the lower RIVA
3069 sub-system if DAL is in state STARTED.
3070
3071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003073
3074 WDI_PostAssocReq must have been called.
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiSetSTABcastKeyRspCb: callback for passing back the
3080 response of the set BSS Key operation received from the
3081 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003084 callback
3085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 @see WDI_PostAssocReq
3087 @return Result of the function call
3088*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003090WDI_SetSTABcastKeyReq
3091(
3092 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3093 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3094 void* pUserData
3095)
3096
3097{
3098 WDI_EventInfoType wdiEventData;
3099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3100
3101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 ------------------------------------------------------------------------*/
3104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3105 {
3106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3107 "WDI API call before module is initialized - Fail request");
3108
Jeff Johnsone7245742012-09-05 17:12:55 -07003109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 }
3111
3112 /*------------------------------------------------------------------------
3113 Fill in Event data and post to the Main FSM
3114 ------------------------------------------------------------------------*/
3115 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3117 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3118 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003119 wdiEventData.pUserData = pUserData;
3120
3121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3122
3123}/*WDI_SetSTABcastKeyReq*/
3124
3125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003126 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 MAC wants to uninstall a STA Bcast key from HW. Upon the
3128 call of this API the WLAN DAL will pack and send a HAL
3129 Remove STA Bcast Key request message to the lower RIVA
3130 sub-system if DAL is in state STARTED.
3131
3132 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003134
3135 WDI_SetSTABcastKeyReq must have been called.
3136
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 parameters as specified by the Device
3139 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3142 response of the remove STA Bcast key operation received
3143 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003144
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 callback
3147
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 @see WDI_SetSTABcastKeyReq
3149 @return Result of the function call
3150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003152WDI_RemoveSTABcastKeyReq
3153(
3154 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3155 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3156 void* pUserData
3157)
3158{
3159 WDI_EventInfoType wdiEventData;
3160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3161
3162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 ------------------------------------------------------------------------*/
3165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3166 {
3167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3168 "WDI API call before module is initialized - Fail request");
3169
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 }
3172
3173 /*------------------------------------------------------------------------
3174 Fill in Event data and post to the Main FSM
3175 ------------------------------------------------------------------------*/
3176 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3178 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3179 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 wdiEventData.pUserData = pUserData;
3181
3182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3183
3184}/*WDI_RemoveSTABcastKeyReq*/
3185
3186/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003188 MAC wants to set Max Tx Power to HW. Upon the
3189 call of this API the WLAN DAL will pack and send a HAL
3190 Remove STA Bcast Key request message to the lower RIVA
3191 sub-system if DAL is in state STARTED.
3192
3193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003195
3196 WDI_SetSTABcastKeyReq must have been called.
3197
Jeff Johnsone7245742012-09-05 17:12:55 -07003198 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003199 parameters as specified by the Device
3200 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3203 response of the remove STA Bcast key operation received
3204 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003205
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 callback
3208
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 @see WDI_SetMaxTxPowerReq
3210 @return Result of the function call
3211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003213WDI_SetMaxTxPowerReq
3214(
3215 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3216 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3217 void* pUserData
3218)
3219{
3220 WDI_EventInfoType wdiEventData;
3221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3222
3223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 ------------------------------------------------------------------------*/
3226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3227 {
3228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3229 "WDI API call before module is initialized - Fail request");
3230
Jeff Johnsone7245742012-09-05 17:12:55 -07003231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 }
3233
3234 /*------------------------------------------------------------------------
3235 Fill in Event data and post to the Main FSM
3236 ------------------------------------------------------------------------*/
3237 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3239 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3240 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 wdiEventData.pUserData = pUserData;
3242
3243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3244}
3245
schang86c22c42013-03-13 18:41:24 -07003246/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003247 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3248 MAC wants to set Max Tx Power to HW for specific band.
3249
3250 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3251
3252 wdiReqStatusCb: callback for passing back the
3253 response msg from the device
3254
3255 pUserData: user data will be passed back with the
3256 callback
3257
3258 @see WDI_SetMaxTxPowerPerBandReq
3259 @return Result of the function call
3260*/
3261WDI_Status
3262WDI_SetMaxTxPowerPerBandReq
3263(
3264 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3265 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3266 void* pUserData
3267)
3268{
3269 WDI_EventInfoType wdiEventData;
3270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3271
3272 /*------------------------------------------------------------------------
3273 Sanity Check
3274 ------------------------------------------------------------------------*/
3275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3276 {
3277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3278 "WDI API call before module is initialized - Fail request");
3279
3280 return WDI_STATUS_E_NOT_ALLOWED;
3281 }
3282
3283 /*------------------------------------------------------------------------
3284 Fill in Event data and post to the Main FSM
3285 ------------------------------------------------------------------------*/
3286 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3287 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3288 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3289 wdiEventData.pCBfnc = wdiReqStatusCb;
3290 wdiEventData.pUserData = pUserData;
3291
3292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3293}
3294
3295/**
schang86c22c42013-03-13 18:41:24 -07003296 @brief WDI_SetTxPowerReq will be called when the upper
3297 MAC wants to set Tx Power to HW.
3298 In state BUSY this request will be queued. Request won't
3299 be allowed in any other state.
3300
3301
3302 @param pwdiSetTxPowerParams: set TS Power parameters
3303 BSSID and target TX Power with dbm included
3304
3305 wdiReqStatusCb: callback for passing back the response
3306
3307 pUserData: user data will be passed back with the
3308 callback
3309
3310 @return Result of the function call
3311*/
3312WDI_Status
3313WDI_SetTxPowerReq
3314(
3315 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3316 WDA_SetTxPowerRspCb wdiReqStatusCb,
3317 void* pUserData
3318)
3319{
3320 WDI_EventInfoType wdiEventData;
3321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3322
3323 /*------------------------------------------------------------------------
3324 Sanity Check
3325 ------------------------------------------------------------------------*/
3326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3327 {
3328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3329 "WDI API call before module is initialized - Fail request");
3330
3331 return WDI_STATUS_E_NOT_ALLOWED;
3332 }
3333
3334 /*------------------------------------------------------------------------
3335 Fill in Event data and post to the Main FSM
3336 ------------------------------------------------------------------------*/
3337 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3338 wdiEventData.pEventData = pwdiSetTxPowerParams;
3339 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3340 wdiEventData.pCBfnc = wdiReqStatusCb;
3341 wdiEventData.pUserData = pUserData;
3342
3343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3344}
3345
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003346#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003347WDI_Status
3348WDI_TSMStatsReq
3349(
3350 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3351 WDI_TsmRspCb wdiReqStatusCb,
3352 void* pUserData
3353)
3354{
3355 WDI_EventInfoType wdiEventData;
3356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 /*------------------------------------------------------------------------
3358 Sanity Check
3359 ------------------------------------------------------------------------*/
3360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3361 {
3362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3363 "WDI API call before module is initialized - Fail request");
3364
3365 return WDI_STATUS_E_NOT_ALLOWED;
3366 }
3367
3368 /*------------------------------------------------------------------------
3369 Fill in Event data and post to the Main FSM
3370 ------------------------------------------------------------------------*/
3371 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3372 wdiEventData.pEventData = pwdiTsmReqParams;
3373 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3374 wdiEventData.pCBfnc = wdiReqStatusCb;
3375 wdiEventData.pUserData = pUserData;
3376
3377 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3378
3379}
3380#endif
3381
3382/*========================================================================
3383
3384 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003385
Jeff Johnson295189b2012-06-20 16:38:30 -07003386==========================================================================*/
3387
3388/**
3389 @brief WDI_AddTSReq will be called when the upper MAC to inform
3390 the device of a successful add TSpec negotiation. HW
3391 needs to receive the TSpec Info from the UMAC in order
3392 to configure properly the QoS data traffic. Upon the
3393 call of this API the WLAN DAL will pack and send a HAL
3394 Add TS request message to the lower RIVA sub-system if
3395 DAL is in state STARTED.
3396
3397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003399
3400 WDI_PostAssocReq must have been called.
3401
3402 @param wdiAddTsReqParams: the add TS parameters as specified by
3403 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 wdiAddTsRspCb: callback for passing back the response of
3406 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 callback
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 @see WDI_PostAssocReq
3412 @return Result of the function call
3413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003415WDI_AddTSReq
3416(
3417 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3418 WDI_AddTsRspCb wdiAddTsRspCb,
3419 void* pUserData
3420)
3421{
3422 WDI_EventInfoType wdiEventData;
3423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3424
3425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 ------------------------------------------------------------------------*/
3428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3429 {
3430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3431 "WDI API call before module is initialized - Fail request");
3432
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 }
3435
3436 /*------------------------------------------------------------------------
3437 Fill in Event data and post to the Main FSM
3438 ------------------------------------------------------------------------*/
3439 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 wdiEventData.pEventData = pwdiAddTsReqParams;
3441 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3442 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 wdiEventData.pUserData = pUserData;
3444
3445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3446
3447}/*WDI_AddTSReq*/
3448
3449
3450
3451/**
3452 @brief WDI_DelTSReq will be called when the upper MAC has ended
3453 admission on a specific AC. This is to inform HW that
3454 QoS traffic parameters must be rest. Upon the call of
3455 this API the WLAN DAL will pack and send a HAL Del TS
3456 request message to the lower RIVA sub-system if DAL is
3457 in state STARTED.
3458
3459 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003461
3462 WDI_AddTSReq must have been called.
3463
3464 @param wdiDelTsReqParams: the del TS parameters as specified by
3465 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003466
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 wdiDelTsRspCb: callback for passing back the response of
3468 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 callback
3472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 @see WDI_AddTSReq
3474 @return Result of the function call
3475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003477WDI_DelTSReq
3478(
3479 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3480 WDI_DelTsRspCb wdiDelTsRspCb,
3481 void* pUserData
3482)
3483{
3484 WDI_EventInfoType wdiEventData;
3485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3486
3487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 ------------------------------------------------------------------------*/
3490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3491 {
3492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3493 "WDI API call before module is initialized - Fail request");
3494
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 }
3497
3498 /*------------------------------------------------------------------------
3499 Fill in Event data and post to the Main FSM
3500 ------------------------------------------------------------------------*/
3501 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 wdiEventData.pEventData = pwdiDelTsReqParams;
3503 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3504 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003505 wdiEventData.pUserData = pUserData;
3506
3507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3508
3509}/*WDI_DelTSReq*/
3510
3511
3512
3513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 wishes to update the EDCA parameters used by HW for QoS
3516 data traffic. Upon the call of this API the WLAN DAL
3517 will pack and send a HAL Update EDCA Params request
3518 message to the lower RIVA sub-system if DAL is in state
3519 STARTED.
3520
3521 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003523
3524 WDI_PostAssocReq must have been called.
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003528
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 wdiUpdateEDCAParamsRspCb: callback for passing back the
3530 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 callback
3534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 @see WDI_PostAssocReq
3536 @return Result of the function call
3537*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003539WDI_UpdateEDCAParams
3540(
3541 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3542 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3543 void* pUserData
3544)
3545{
3546 WDI_EventInfoType wdiEventData;
3547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3548
3549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 ------------------------------------------------------------------------*/
3552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3553 {
3554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3555 "WDI API call before module is initialized - Fail request");
3556
Jeff Johnsone7245742012-09-05 17:12:55 -07003557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 }
3559
3560 /*------------------------------------------------------------------------
3561 Fill in Event data and post to the Main FSM
3562 ------------------------------------------------------------------------*/
3563 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003564 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3565 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3566 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 wdiEventData.pUserData = pUserData;
3568
3569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3570
3571}/*WDI_UpdateEDCAParams*/
3572
3573
3574/**
3575 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3576 successfully a BA session and needs to notify the HW for
3577 the appropriate settings to take place. Upon the call of
3578 this API the WLAN DAL will pack and send a HAL Add BA
3579 request message to the lower RIVA sub-system if DAL is
3580 in state STARTED.
3581
3582 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003584
3585 WDI_PostAssocReq must have been called.
3586
3587 @param wdiAddBAReqParams: the add BA parameters as specified by
3588 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003589
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 wdiAddBARspCb: callback for passing back the response of
3591 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 callback
3595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 @see WDI_PostAssocReq
3597 @return Result of the function call
3598*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003599WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003600WDI_AddBASessionReq
3601(
3602 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3603 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3604 void* pUserData
3605)
3606{
3607 WDI_EventInfoType wdiEventData;
3608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3609
3610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 ------------------------------------------------------------------------*/
3613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3614 {
3615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3616 "WDI API call before module is initialized - Fail request");
3617
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 }
3620
3621 /*------------------------------------------------------------------------
3622 Fill in Event data and post to the Main FSM
3623 ------------------------------------------------------------------------*/
3624 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003625 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3626 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3627 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 wdiEventData.pUserData = pUserData;
3629
3630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3631
3632}/*WDI_AddBASessionReq*/
3633
3634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 inform HW that it has deleted a previously created BA
3637 session. Upon the call of this API the WLAN DAL will
3638 pack and send a HAL Del BA request message to the lower
3639 RIVA sub-system if DAL is in state STARTED.
3640
3641 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003642 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003643
3644 WDI_AddBAReq must have been called.
3645
3646 @param wdiDelBAReqParams: the del BA parameters as specified by
3647 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003648
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 wdiDelBARspCb: callback for passing back the response of
3650 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003651
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 callback
3654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 @see WDI_AddBAReq
3656 @return Result of the function call
3657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003659WDI_DelBAReq
3660(
3661 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3662 WDI_DelBARspCb wdiDelBARspCb,
3663 void* pUserData
3664)
3665{
3666 WDI_EventInfoType wdiEventData;
3667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3668
3669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 ------------------------------------------------------------------------*/
3672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3673 {
3674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3675 "WDI API call before module is initialized - Fail request");
3676
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 }
3679
3680 /*------------------------------------------------------------------------
3681 Fill in Event data and post to the Main FSM
3682 ------------------------------------------------------------------------*/
3683 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 wdiEventData.pEventData = pwdiDelBAReqParams;
3685 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3686 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 wdiEventData.pUserData = pUserData;
3688
3689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3690
3691}/*WDI_DelBAReq*/
3692
Jeff Johnsone7245742012-09-05 17:12:55 -07003693/*========================================================================
3694
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003696
Jeff Johnson295189b2012-06-20 16:38:30 -07003697==========================================================================*/
3698
3699/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 wants to set the power save related configurations of
3702 the WLAN Device. Upon the call of this API the WLAN DAL
3703 will pack and send a HAL Update CFG request message to
3704 the lower RIVA sub-system if DAL is in state STARTED.
3705
3706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003708
3709 WDI_Start must have been called.
3710
Jeff Johnsone7245742012-09-05 17:12:55 -07003711 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 wdiSetPwrSaveCfgCb: callback for passing back the
3715 response of the set power save cfg operation received
3716 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003717
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 callback
3720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 @return Result of the function call
3723*/
3724WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003725WDI_SetPwrSaveCfgReq
3726(
3727 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3728 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3729 void* pUserData
3730)
3731{
3732 WDI_EventInfoType wdiEventData;
3733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3734
3735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003737 ------------------------------------------------------------------------*/
3738 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3739 {
3740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3741 "WDI API call before module is initialized - Fail request");
3742
Jeff Johnsone7245742012-09-05 17:12:55 -07003743 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 }
3745
3746 /*------------------------------------------------------------------------
3747 Fill in Event data and post to the Main FSM
3748 ------------------------------------------------------------------------*/
3749 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 wdiEventData.pEventData = pwdiPowerSaveCfg;
3751 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3752 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 wdiEventData.pUserData = pUserData;
3754
3755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3756
3757}/*WDI_SetPwrSaveCfgReq*/
3758
3759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 request the device to get into IMPS power state. Upon
3762 the call of this API the WLAN DAL will send a HAL Enter
3763 IMPS request message to the lower RIVA sub-system if DAL
3764 is in state STARTED.
3765
3766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003768
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
3770 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 response of the Enter IMPS operation received from the
3772 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003775 callback
3776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 @see WDI_Start
3778 @return Result of the function call
3779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003781WDI_EnterImpsReq
3782(
Mihir Shetea4306052014-03-25 00:02:54 +05303783 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3785 void* pUserData
3786)
3787{
3788 WDI_EventInfoType wdiEventData;
3789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3790
3791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 ------------------------------------------------------------------------*/
3794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3795 {
3796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3797 "WDI API call before module is initialized - Fail request");
3798
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 }
3801
3802 /*------------------------------------------------------------------------
3803 Fill in Event data and post to the Main FSM
3804 ------------------------------------------------------------------------*/
3805 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303806 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3807 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 wdiEventData.pUserData = pUserData;
3810
3811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3812
3813}/*WDI_EnterImpsReq*/
3814
3815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 request the device to get out of IMPS power state. Upon
3818 the call of this API the WLAN DAL will send a HAL Exit
3819 IMPS request message to the lower RIVA sub-system if DAL
3820 is in state STARTED.
3821
3822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826
3827 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 callback
3832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 @see WDI_Start
3834 @return Result of the function call
3835*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003836WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003837WDI_ExitImpsReq
3838(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303839 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303862 wdiEventData.pEventData = pwdiExitImpsReqParams;
3863 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868
3869}/*WDI_ExitImpsReq*/
3870
3871/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 request the device to get into BMPS power state. Upon
3874 the call of this API the WLAN DAL will pack and send a
3875 HAL Enter BMPS request message to the lower RIVA
3876 sub-system if DAL is in state STARTED.
3877
3878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003880
3881 WDI_PostAssocReq must have been called.
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiEnterBmpsRspCb: callback for passing back the
3887 response of the Enter BMPS operation received from the
3888 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_PostAssocReq
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_EnterBmpsReq
3898(
3899 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3900 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3923 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3924 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928
3929}/*WDI_EnterBmpsReq*/
3930
3931/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 request the device to get out of BMPS power state. Upon
3934 the call of this API the WLAN DAL will pack and send a
3935 HAL Exit BMPS request message to the lower RIVA
3936 sub-system if DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiExitBmpsRspCb: callback for passing back the response
3947 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 callback
3951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 @see WDI_PostAssocReq
3953 @return Result of the function call
3954*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003955WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003956WDI_ExitBmpsReq
3957(
3958 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3959 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3960 void* pUserData
3961)
3962{
3963 WDI_EventInfoType wdiEventData;
3964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3965
3966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 ------------------------------------------------------------------------*/
3969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3970 {
3971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3972 "WDI API call before module is initialized - Fail request");
3973
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 }
3976
3977 /*------------------------------------------------------------------------
3978 Fill in Event data and post to the Main FSM
3979 ------------------------------------------------------------------------*/
3980 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3982 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3983 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 wdiEventData.pUserData = pUserData;
3985
3986 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3987
3988}/*WDI_ExitBmpsReq*/
3989
3990/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 request the device to get into UAPSD power state. Upon
3993 the call of this API the WLAN DAL will pack and send a
3994 HAL Enter UAPSD request message to the lower RIVA
3995 sub-system if DAL is in state STARTED.
3996
3997 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003999
4000 WDI_PostAssocReq must have been called.
4001 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004002
4003 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 wdiEnterUapsdRspCb: callback for passing back the
4007 response of the Enter UAPSD operation received from the
4008 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 callback
4012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4014 @return Result of the function call
4015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004017WDI_EnterUapsdReq
4018(
4019 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4020 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4021 void* pUserData
4022)
4023{
4024 WDI_EventInfoType wdiEventData;
4025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4026
4027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 ------------------------------------------------------------------------*/
4030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4031 {
4032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4033 "WDI API call before module is initialized - Fail request");
4034
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 }
4037
4038 /*------------------------------------------------------------------------
4039 Fill in Event data and post to the Main FSM
4040 ------------------------------------------------------------------------*/
4041 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4043 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4044 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wdiEventData.pUserData = pUserData;
4046
4047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4048
4049}/*WDI_EnterUapsdReq*/
4050
4051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 request the device to get out of UAPSD power state. Upon
4054 the call of this API the WLAN DAL will send a HAL Exit
4055 UAPSD request message to the lower RIVA sub-system if
4056 DAL is in state STARTED.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
4061 WDI_PostAssocReq must have been called.
4062
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 response of the Exit UAPSD operation received from the
4065 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004066
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 callback
4069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 @see WDI_PostAssocReq
4071 @return Result of the function call
4072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004074WDI_ExitUapsdReq
4075(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004076 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4078 void* pUserData
4079)
4080{
4081 WDI_EventInfoType wdiEventData;
4082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4083
4084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 ------------------------------------------------------------------------*/
4087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4088 {
4089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4090 "WDI API call before module is initialized - Fail request");
4091
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 }
4094
4095 /*------------------------------------------------------------------------
4096 Fill in Event data and post to the Main FSM
4097 ------------------------------------------------------------------------*/
4098 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004099 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4100 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wdiEventData.pUserData = pUserData;
4103
4104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4105
4106}/*WDI_ExitUapsdReq*/
4107
4108/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 MAC wants to set the UAPSD related configurations
4111 of an associated STA (while acting as an AP) to the WLAN
4112 Device. Upon the call of this API the WLAN DAL will pack
4113 and send a HAL Update UAPSD params request message to
4114 the lower RIVA sub-system if DAL is in state STARTED.
4115
4116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004118
4119 WDI_ConfigBSSReq must have been called.
4120
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 wdiUpdateUapsdParamsCb: callback for passing back the
4125 response of the update UAPSD params operation received
4126 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 callback
4130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 @see WDI_ConfigBSSReq
4132 @return Result of the function call
4133*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004134WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004135WDI_UpdateUapsdParamsReq
4136(
4137 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4138 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4139 void* pUserData
4140)
4141{
4142 WDI_EventInfoType wdiEventData;
4143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4144
4145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 ------------------------------------------------------------------------*/
4148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4149 {
4150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4151 "WDI API call before module is initialized - Fail request");
4152
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 }
4155
4156 /*------------------------------------------------------------------------
4157 Fill in Event data and post to the Main FSM
4158 ------------------------------------------------------------------------*/
4159 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004161 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 wdiEventData.pUserData = pUserData;
4164
4165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4166
4167}/*WDI_UpdateUapsdParamsReq*/
4168
4169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 MAC wants to set the UAPSD related configurations before
4172 requesting for enter UAPSD power state to the WLAN
4173 Device. Upon the call of this API the WLAN DAL will pack
4174 and send a HAL Set UAPSD params request message to
4175 the lower RIVA sub-system if DAL is in state STARTED.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
4180 WDI_PostAssocReq must have been called.
4181
4182 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4183 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiSetUapsdAcParamsCb: callback for passing back the
4186 response of the set UAPSD params operation received from
4187 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 callback
4191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 @see WDI_PostAssocReq
4193 @return Result of the function call
4194*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004196WDI_SetUapsdAcParamsReq
4197(
4198 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4199 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4200 void* pUserData
4201)
4202{
4203 WDI_EventInfoType wdiEventData;
4204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4205
4206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 ------------------------------------------------------------------------*/
4209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4210 {
4211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4212 "WDI API call before module is initialized - Fail request");
4213
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 }
4216
4217 /*------------------------------------------------------------------------
4218 Fill in Event data and post to the Main FSM
4219 ------------------------------------------------------------------------*/
4220 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 wdiEventData.pEventData = pwdiUapsdInfo;
4222 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4223 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wdiEventData.pUserData = pUserData;
4225
4226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4227
4228}/*WDI_SetUapsdAcParamsReq*/
4229
4230/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304231 @brief WDI_FWLoggingDXEdoneInd
4232
4233 FW Logging DXE done Indication from the upper layer will be sent
4234 down to HAL
4235
4236 @param WDI_FWLoggingDXEdoneIndInfoType
4237
4238 @see
4239
4240 @return Status of the request
4241*/
4242WDI_Status
4243WDI_FWLoggingDXEdoneInd
4244(
4245 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4246)
4247{
4248
4249 WDI_EventInfoType wdiEventData;
4250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4251
4252 /*------------------------------------------------------------------------
4253 Sanity Check
4254 ------------------------------------------------------------------------*/
4255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4256 {
4257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4258 "WDI API call before module is initialized - Fail request");
4259
4260 return WDI_STATUS_E_NOT_ALLOWED;
4261 }
4262
4263 /*------------------------------------------------------------------------
4264 Fill in Event data and post to the Main FSM
4265 ------------------------------------------------------------------------*/
4266 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4267 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4268 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4269 wdiEventData.pCBfnc = NULL;
4270 wdiEventData.pUserData = NULL;
4271
4272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4273
4274}/*WDI_FWLoggingDXEdoneInd*/
4275
4276/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304277 @brief WDI_GetFrameLogReq will be called when the upper
4278 MAC wants to initialize frame logging. Upon the call of
4279 this API the WLAN DAL will pack and send a HAL
4280 Frame logging init request message to
4281 the lower RIVA sub-system.
4282
4283 In state BUSY this request will be queued. Request won't
4284 be allowed in any other state.
4285
4286
4287 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4288 as specified by the Device Interface
4289
4290 wdiGetFrameLogRspCb: callback for passing back the
4291 response of the frame logging init operation received
4292 from the device
4293
4294 pUserData: user data will be passed back with the
4295 callback
4296
4297 @return Result of the function call
4298*/
4299WDI_Status
4300WDI_GetFrameLogReq
4301(
4302 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4303 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4304 void* pUserData
4305)
4306{
4307 WDI_EventInfoType wdiEventData;
4308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4309
4310 /*------------------------------------------------------------------------
4311 Sanity Check
4312 ------------------------------------------------------------------------*/
4313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4314 {
4315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4316 "WDI API call before module is initialized - Fail request");
4317
4318 return WDI_STATUS_E_NOT_ALLOWED;
4319 }
4320
4321 /*------------------------------------------------------------------------
4322 Fill in Event data and post to the Main FSM
4323 ------------------------------------------------------------------------*/
4324 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4325 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4326 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4327 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4328 wdiEventData.pUserData = pUserData;
4329
4330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4331}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304332
4333
4334/**
4335 @brief WDI_FatalEventLogsReq will be called when the upper
4336 MAC wants to send the flush command. Upon the call of
4337 this API the WLAN DAL will pack and send a HAL
4338 Fatal Event Req message to the lower RIVA sub-system.
4339
4340 In state BUSY this request will be queued. Request won't
4341 be allowed in any other state.
4342
4343
4344 @param pwdiFlushLogsReqInfo: the Flush Logs params
4345 as specified by the Device Interface
4346
4347 wdiFlushLogsRspCb: callback for passing back the
4348 response of the Flush Logs operation received
4349 from the device
4350
4351 pUserData: user data will be passed back with the
4352 callback
4353
4354 @return Result of the function call
4355*/
4356
4357WDI_Status
4358WDI_FatalEventLogsReq
4359(
4360 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4361 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4362 void* pUserData
4363)
4364{
4365 WDI_EventInfoType wdiEventData;
4366
4367 /*------------------------------------------------------------------------
4368 Sanity Check
4369 ------------------------------------------------------------------------*/
4370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4371 {
4372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4373 "WDI API call before module is initialized - Fail request");
4374
4375 return WDI_STATUS_E_NOT_ALLOWED;
4376 }
4377
4378 /*------------------------------------------------------------------------
4379 Fill in Event data and post to the Main FSM
4380 ------------------------------------------------------------------------*/
4381 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4382 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4383 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4384 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4385 wdiEventData.pUserData = pUserData;
4386
4387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4388
4389}
4390
4391
Siddharth Bhal64246172015-02-27 01:04:37 +05304392/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304393 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304394 MAC wants to initialize frame logging. Upon the call of
4395 this API the WLAN DAL will pack and send a HAL
4396 Frame logging init request message to
4397 the lower RIVA sub-system.
4398
4399 In state BUSY this request will be queued. Request won't
4400 be allowed in any other state.
4401
4402
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304403 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304404 as specified by the Device Interface
4405
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304406 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304407 response of the frame logging init operation received
4408 from the device
4409
4410 pUserData: user data will be passed back with the
4411 callback
4412
4413 @return Result of the function call
4414*/
4415WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304416WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304417(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304418 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4419 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304420 void* pUserData
4421)
4422{
4423 WDI_EventInfoType wdiEventData;
4424
4425 /*------------------------------------------------------------------------
4426 Sanity Check
4427 ------------------------------------------------------------------------*/
4428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4429 {
4430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4431 "WDI API call before module is initialized - Fail request");
4432
4433 return WDI_STATUS_E_NOT_ALLOWED;
4434 }
4435
4436 /*------------------------------------------------------------------------
4437 Fill in Event data and post to the Main FSM
4438 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304439 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4440 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4441 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4442 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304443 wdiEventData.pUserData = pUserData;
4444
4445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4446}
4447
4448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 MAC wants to set/reset the RXP filters for received pkts
4451 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4452 and send a HAL configure RXP filter request message to
4453 the lower RIVA sub-system.
4454
4455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004457
Jeff Johnsone7245742012-09-05 17:12:55 -07004458
4459 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 filter as specified by the Device
4461 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004462
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 wdiConfigureRxpFilterCb: callback for passing back the
4464 response of the configure RXP filter operation received
4465 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004466
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 callback
4469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 @return Result of the function call
4471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004473WDI_ConfigureRxpFilterReq
4474(
4475 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4476 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4477 void* pUserData
4478)
4479{
4480 WDI_EventInfoType wdiEventData;
4481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4482
4483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004485 ------------------------------------------------------------------------*/
4486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4487 {
4488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4489 "WDI API call before module is initialized - Fail request");
4490
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 }
4493
4494 /*------------------------------------------------------------------------
4495 Fill in Event data and post to the Main FSM
4496 ------------------------------------------------------------------------*/
4497 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4499 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4500 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 wdiEventData.pUserData = pUserData;
4502
4503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4504}/*WDI_ConfigureRxpFilterReq*/
4505
4506/**
4507 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4508 wants to set the beacon filters while in power save.
4509 Upon the call of this API the WLAN DAL will pack and
4510 send a Beacon filter request message to the
4511 lower RIVA sub-system.
4512
4513 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004514 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516
4517 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004518 filter as specified by the Device
4519 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004520
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 wdiBeaconFilterCb: callback for passing back the
4522 response of the set beacon filter operation received
4523 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004524
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 callback
4527
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 @return Result of the function call
4529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004531WDI_SetBeaconFilterReq
4532(
4533 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4534 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4535 void* pUserData
4536)
4537{
4538 WDI_EventInfoType wdiEventData;
4539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4540
4541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 ------------------------------------------------------------------------*/
4544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4545 {
4546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4547 "WDI API call before module is initialized - Fail request");
4548
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 }
4551
4552 /*------------------------------------------------------------------------
4553 Fill in Event data and post to the Main FSM
4554 ------------------------------------------------------------------------*/
4555 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004557 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 wdiEventData.pUserData = pUserData;
4560
4561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4562}/*WDI_SetBeaconFilterReq*/
4563
4564/**
4565 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4566 wants to remove the beacon filter for particular IE
4567 while in power save. Upon the call of this API the WLAN
4568 DAL will pack and send a remove Beacon filter request
4569 message to the lower RIVA sub-system.
4570
4571 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004573
Jeff Johnsone7245742012-09-05 17:12:55 -07004574
4575 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 filter as specified by the Device
4577 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004578
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 wdiBeaconFilterCb: callback for passing back the
4580 response of the remove beacon filter operation received
4581 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 callback
4585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 @return Result of the function call
4587*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004589WDI_RemBeaconFilterReq
4590(
4591 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4592 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4593 void* pUserData
4594)
4595{
4596 WDI_EventInfoType wdiEventData;
4597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4598
4599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004601 ------------------------------------------------------------------------*/
4602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4603 {
4604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4605 "WDI API call before module is initialized - Fail request");
4606
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 }
4609
4610 /*------------------------------------------------------------------------
4611 Fill in Event data and post to the Main FSM
4612 ------------------------------------------------------------------------*/
4613 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004614 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004615 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004616 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004617 wdiEventData.pUserData = pUserData;
4618
4619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4620}/*WDI_RemBeaconFilterReq*/
4621
4622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004623 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 MAC wants to set the RSSI thresholds related
4625 configurations while in power save. Upon the call of
4626 this API the WLAN DAL will pack and send a HAL Set RSSI
4627 thresholds request message to the lower RIVA
4628 sub-system if DAL is in state STARTED.
4629
4630 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004631 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004632
4633 WDI_PostAssocReq must have been called.
4634
4635 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4636 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004637
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wdiSetUapsdAcParamsCb: callback for passing back the
4639 response of the set UAPSD params operation received from
4640 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004641
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004643 callback
4644
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 @see WDI_PostAssocReq
4646 @return Result of the function call
4647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004649WDI_SetRSSIThresholdsReq
4650(
4651 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4652 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4653 void* pUserData
4654)
4655{
4656 WDI_EventInfoType wdiEventData;
4657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4658
4659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 ------------------------------------------------------------------------*/
4662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4663 {
4664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4665 "WDI API call before module 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_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004675 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiEventData.pUserData = pUserData;
4678
4679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4680}/* WDI_SetRSSIThresholdsReq*/
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 wants to set the filter to minimize unnecessary host
4685 wakeup due to broadcast traffic while in power save.
4686 Upon the call of this API the WLAN DAL will pack and
4687 send a HAL host offload 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 pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 wdiHostOffloadCb: callback for passing back the response
4699 of the host offload operation received from the
4700 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_HostOffloadReq
4710(
4711 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4712 WDI_HostOffloadCb wdiHostOffloadCb,
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_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004734 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004735 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004736 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 wdiEventData.pUserData = pUserData;
4738
4739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4740}/*WDI_HostOffloadReq*/
4741
4742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004743 @brief WDI_KeepAliveReq will be called when the upper MAC
4744 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 and minimize unnecessary host wakeups due to while in power save.
4746 Upon the call of this API the WLAN DAL will pack and
4747 send a HAL Keep Alive request message to the
4748 lower RIVA sub-system if DAL is in state STARTED.
4749
4750 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004751 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004752
4753 WDI_PostAssocReq must have been called.
4754
Jeff Johnsone7245742012-09-05 17:12:55 -07004755 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004757
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 wdiKeepAliveCb: callback for passing back the response
4759 of the Keep Alive operation received from the
4760 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 callback
4764
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 @see WDI_PostAssocReq
4766 @return Result of the function call
4767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004769WDI_KeepAliveReq
4770(
4771 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4772 WDI_KeepAliveCb wdiKeepAliveCb,
4773 void* pUserData
4774)
4775{
4776 WDI_EventInfoType wdiEventData;
4777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4778
4779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 ------------------------------------------------------------------------*/
4782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4783 {
4784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4785 "WDI_KeepAliveReq: WDI API call before module "
4786 "is initialized - Fail request");
4787
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 }
4790
4791 /*------------------------------------------------------------------------
4792 Fill in Event data and post to the Main FSM
4793 ------------------------------------------------------------------------*/
4794 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 wdiEventData.pEventData = pwdiKeepAliveParams;
4796 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4797 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 wdiEventData.pUserData = pUserData;
4799
4800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4801}/*WDI_KeepAliveReq*/
4802
4803/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004804 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004805 wants to set the Wowl Bcast ptrn to minimize unnecessary
4806 host wakeup due to broadcast traffic while in power
4807 save. Upon the call of this API the WLAN DAL will pack
4808 and send a HAL Wowl Bcast ptrn request message to the
4809 lower RIVA sub-system if DAL is in state STARTED.
4810
4811 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004813
4814 WDI_PostAssocReq must have been called.
4815
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004818
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 wdiWowlAddBcPtrnCb: callback for passing back the
4820 response of the add Wowl bcast ptrn operation received
4821 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 callback
4825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 @see WDI_PostAssocReq
4827 @return Result of the function call
4828*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004829WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004830WDI_WowlAddBcPtrnReq
4831(
4832 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4833 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4834 void* pUserData
4835)
4836{
4837 WDI_EventInfoType wdiEventData;
4838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4839
4840 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 ------------------------------------------------------------------------*/
4843 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4844 {
4845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4846 "WDI API call before module is initialized - Fail request");
4847
Jeff Johnsone7245742012-09-05 17:12:55 -07004848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 }
4850
4851 /*------------------------------------------------------------------------
4852 Fill in Event data and post to the Main FSM
4853 ------------------------------------------------------------------------*/
4854 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004856 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 wdiEventData.pUserData = pUserData;
4859
4860 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4861}/*WDI_WowlAddBcPtrnReq*/
4862
4863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 wants to clear the Wowl Bcast ptrn. Upon the call of
4866 this API the WLAN DAL will pack and send a HAL delete
4867 Wowl Bcast ptrn request message to the lower RIVA
4868 sub-system if DAL is in state STARTED.
4869
4870 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004872
4873 WDI_WowlAddBcPtrnReq must have been called.
4874
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004877
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiWowlDelBcPtrnCb: callback for passing back the
4879 response of the del Wowl bcast ptrn operation received
4880 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004881
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 callback
4884
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 @see WDI_WowlAddBcPtrnReq
4886 @return Result of the function call
4887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004889WDI_WowlDelBcPtrnReq
4890(
4891 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4892 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4893 void* pUserData
4894)
4895{
4896 WDI_EventInfoType wdiEventData;
4897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4898
4899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 ------------------------------------------------------------------------*/
4902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4903 {
4904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4905 "WDI API call before module is initialized - Fail request");
4906
Jeff Johnsone7245742012-09-05 17:12:55 -07004907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 }
4909
4910 /*------------------------------------------------------------------------
4911 Fill in Event data and post to the Main FSM
4912 ------------------------------------------------------------------------*/
4913 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004915 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004916 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004917 wdiEventData.pUserData = pUserData;
4918
4919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4920}/*WDI_WowlDelBcPtrnReq*/
4921
4922/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 wants to enter the Wowl state to minimize unnecessary
4925 host wakeup while in power save. Upon the call of this
4926 API the WLAN DAL will pack and send a HAL Wowl enter
4927 request message to the lower RIVA sub-system if DAL is
4928 in state STARTED.
4929
4930 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004931 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004932
4933 WDI_PostAssocReq must have been called.
4934
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004937
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 wdiWowlEnterReqCb: callback for passing back the
4939 response of the enter Wowl operation received from the
4940 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004941
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004943 callback
4944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 @see WDI_PostAssocReq
4946 @return Result of the function call
4947*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004948WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004949WDI_WowlEnterReq
4950(
4951 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4952 WDI_WowlEnterReqCb wdiWowlEnterCb,
4953 void* pUserData
4954)
4955{
4956 WDI_EventInfoType wdiEventData;
4957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4958
4959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 ------------------------------------------------------------------------*/
4962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4963 {
4964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4965 "WDI API call before module is initialized - Fail request");
4966
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 }
4969
4970 /*------------------------------------------------------------------------
4971 Fill in Event data and post to the Main FSM
4972 ------------------------------------------------------------------------*/
4973 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004974 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004975 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004977 wdiEventData.pUserData = pUserData;
4978
4979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4980}/*WDI_WowlEnterReq*/
4981
4982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 wants to exit the Wowl state. Upon the call of this API
4985 the WLAN DAL will pack and send a HAL Wowl exit request
4986 message to the lower RIVA sub-system if DAL is in state
4987 STARTED.
4988
4989 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004991
4992 WDI_WowlEnterReq must have been called.
4993
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004996
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 wdiWowlExitReqCb: callback for passing back the response
4998 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005001 callback
5002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 @see WDI_WowlEnterReq
5004 @return Result of the function call
5005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005007WDI_WowlExitReq
5008(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005009 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 WDI_WowlExitReqCb wdiWowlExitCb,
5011 void* pUserData
5012)
5013{
5014 WDI_EventInfoType wdiEventData;
5015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5016
5017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 ------------------------------------------------------------------------*/
5020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5021 {
5022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5023 "WDI API call before module is initialized - Fail request");
5024
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 }
5027
5028 /*------------------------------------------------------------------------
5029 Fill in Event data and post to the Main FSM
5030 ------------------------------------------------------------------------*/
5031 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005032 wdiEventData.pEventData = pwdiWowlExitParams;
5033 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005034 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 wdiEventData.pUserData = pUserData;
5036
5037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5038}/*WDI_WowlExitReq*/
5039
5040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005041 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 the upper MAC wants to dynamically adjusts the listen
5043 interval based on the WLAN/MSM activity. Upon the call
5044 of this API the WLAN DAL will pack and send a HAL
5045 configure Apps Cpu Wakeup State request message to the
5046 lower RIVA sub-system.
5047
5048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005050
Jeff Johnsone7245742012-09-05 17:12:55 -07005051
5052 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 Apps Cpu Wakeup State as specified by the
5054 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005055
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5057 back the response of the configure Apps Cpu Wakeup State
5058 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005059
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 callback
5062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 @return Result of the function call
5064*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005066WDI_ConfigureAppsCpuWakeupStateReq
5067(
5068 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5069 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5070 void* pUserData
5071)
5072{
5073 WDI_EventInfoType wdiEventData;
5074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5075
5076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 ------------------------------------------------------------------------*/
5079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5080 {
5081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5082 "WDI API call before module is initialized - Fail request");
5083
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 }
5086
5087 /*------------------------------------------------------------------------
5088 Fill in Event data and post to the Main FSM
5089 ------------------------------------------------------------------------*/
5090 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5092 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5093 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 wdiEventData.pUserData = pUserData;
5095
5096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5097}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5098/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005100 to to perform a flush operation on a given AC. Upon the
5101 call of this API the WLAN DAL will pack and send a HAL
5102 Flush AC request message to the lower RIVA sub-system if
5103 DAL is in state STARTED.
5104
5105 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005107
5108 WDI_AddBAReq must have been called.
5109
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005111 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005112
Jeff Johnson295189b2012-06-20 16:38:30 -07005113 wdiFlushAcRspCb: callback for passing back the response
5114 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005115
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 callback
5118
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 @see WDI_AddBAReq
5120 @return Result of the function call
5121*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005122WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005123WDI_FlushAcReq
5124(
5125 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5126 WDI_FlushAcRspCb wdiFlushAcRspCb,
5127 void* pUserData
5128)
5129{
5130 WDI_EventInfoType wdiEventData;
5131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5132
5133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 ------------------------------------------------------------------------*/
5136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5137 {
5138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5139 "WDI API call before module is initialized - Fail request");
5140
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 }
5143
5144 /*------------------------------------------------------------------------
5145 Fill in Event data and post to the Main FSM
5146 ------------------------------------------------------------------------*/
5147 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 wdiEventData.pEventData = pwdiFlushAcReqParams;
5149 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5150 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wdiEventData.pUserData = pUserData;
5152
5153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5154
5155}/*WDI_FlushAcReq*/
5156
5157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 wants to notify the lower mac on a BT AMP event. This is
5160 to inform BTC-SLM that some BT AMP event occurred. Upon
5161 the call of this API the WLAN DAL will pack and send a
5162 HAL BT AMP event request message to the lower RIVA
5163 sub-system if DAL is in state STARTED.
5164
5165 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005166 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005167
Jeff Johnsone7245742012-09-05 17:12:55 -07005168
5169 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiBtAmpEventRspCb: callback for passing back the
5173 response of the BT AMP event operation received from the
5174 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005175
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 callback
5178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 @return Result of the function call
5180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005182WDI_BtAmpEventReq
5183(
5184 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5185 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5186 void* pUserData
5187)
5188{
5189 WDI_EventInfoType wdiEventData;
5190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5191
5192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 ------------------------------------------------------------------------*/
5195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5196 {
5197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5198 "WDI API call before module is initialized - Fail request");
5199
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 }
5202
5203 /*------------------------------------------------------------------------
5204 Fill in Event data and post to the Main FSM
5205 ------------------------------------------------------------------------*/
5206 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5208 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5209 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005210 wdiEventData.pUserData = pUserData;
5211
5212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5213
5214}/*WDI_BtAmpEventReq*/
5215
Jeff Johnsone7245742012-09-05 17:12:55 -07005216#ifdef FEATURE_OEM_DATA_SUPPORT
5217/**
5218 @brief WDI_Start Oem Data Req will be called when the upper MAC
5219 wants to notify the lower mac on a oem data Req event.Upon
5220 the call of this API the WLAN DAL will pack and send a
5221 HAL OEM Data Req event request message to the lower RIVA
5222 sub-system if DAL is in state STARTED.
5223
5224 In state BUSY this request will be queued. Request won't
5225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005226
5227
Jeff Johnsone7245742012-09-05 17:12:55 -07005228
5229 @param pwdiOemDataReqParams: the Oem Data Req as
5230 specified by the Device Interface
5231
5232 wdiStartOemDataRspCb: callback for passing back the
5233 response of the Oem Data Req received from the
5234 device
5235
5236 pUserData: user data will be passed back with the
5237 callback
5238
5239 @return Result of the function call
5240*/
5241WDI_Status
5242WDI_StartOemDataReq
5243(
5244 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5245 WDI_oemDataRspCb wdiOemDataRspCb,
5246 void* pUserData
5247)
5248{
5249 WDI_EventInfoType wdiEventData;
5250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5251
5252 /*------------------------------------------------------------------------
5253 Sanity Check
5254 ------------------------------------------------------------------------*/
5255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5256 {
5257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5258 "WDI API call before module is initialized - Fail request");
5259
5260 return WDI_STATUS_E_NOT_ALLOWED;
5261 }
5262
5263 /*------------------------------------------------------------------------
5264 Fill in Event data and post to the Main FSM
5265 ------------------------------------------------------------------------*/
5266 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5267 wdiEventData.pEventData = pwdiOemDataReqParams;
5268 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5269 wdiEventData.pCBfnc = wdiOemDataRspCb;
5270 wdiEventData.pUserData = pUserData;
5271
5272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5273
5274
5275}
5276
5277#endif
5278
5279
5280/*========================================================================
5281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284==========================================================================*/
5285/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005286 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 the WLAN HW to change the current channel of operation.
5288 Upon the call of this API the WLAN DAL will pack and
5289 send a HAL Start request message to the lower RIVA
5290 sub-system if DAL is in state STARTED.
5291
5292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005294
5295 WDI_Start must have been called.
5296
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005299
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiSwitchChRspCb: callback for passing back the response
5301 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005302
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 callback
5305
Jeff Johnson295189b2012-06-20 16:38:30 -07005306 @see WDI_Start
5307 @return Result of the function call
5308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005310WDI_SwitchChReq
5311(
5312 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5313 WDI_SwitchChRspCb wdiSwitchChRspCb,
5314 void* pUserData
5315)
5316{
5317 WDI_EventInfoType wdiEventData;
5318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5319
5320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 ------------------------------------------------------------------------*/
5323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5324 {
5325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5326 "WDI API call before module is initialized - Fail request");
5327
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 }
5330
5331 /*------------------------------------------------------------------------
5332 Fill in Event data and post to the Main FSM
5333 ------------------------------------------------------------------------*/
5334 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 wdiEventData.pEventData = pwdiSwitchChReqParams;
5336 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5337 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiEventData.pUserData = pUserData;
5339
5340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5341
5342}/*WDI_SwitchChReq*/
5343
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005344/**
5345 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5346 the WLAN HW to change the current channel of operation.
5347 Upon the call of this API the WLAN DAL will pack and
5348 send a HAL Start request message to the lower RIVA
5349 sub-system if DAL is in state STARTED.
5350 This request message also includes source of channel switch,
5351 like CSA,
5352
5353 In state BUSY this request will be queued. Request won't
5354 be allowed in any other state.
5355
5356 WDI_Start must have been called.
5357
5358 @param wdiSwitchChReqParams: the switch ch parameters as
5359 specified by the Device Interface
5360
5361 wdiSwitchChRspCb: callback for passing back the response
5362 of the switch ch operation received from the device
5363
5364 pUserData: user data will be passed back with the
5365 callback
5366
5367 @see WDI_Start
5368 @return Result of the function call
5369*/
5370WDI_Status
5371WDI_SwitchChReq_V1
5372(
5373 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5374 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5375 void* pUserData
5376)
5377{
5378 WDI_EventInfoType wdiEventData;
5379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5381 "WDI API call WDI_SwitchChReq_V1");
5382 /*------------------------------------------------------------------------
5383 Sanity Check
5384 ------------------------------------------------------------------------*/
5385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5386 {
5387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5388 "WDI API call before module is initialized - Fail request");
5389
5390 return WDI_STATUS_E_NOT_ALLOWED;
5391 }
5392
5393 /*------------------------------------------------------------------------
5394 Fill in Event data and post to the Main FSM
5395 ------------------------------------------------------------------------*/
5396 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5397 wdiEventData.pEventData = pwdiSwitchChReqParams;
5398 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5399 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5400 wdiEventData.pUserData = pUserData;
5401
5402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5403
5404}/*WDI_SwitchChReq_V1*/
5405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406
5407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005408 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005409 wishes to add or update a STA in HW. Upon the call of
5410 this API the WLAN DAL will pack and send a HAL Start
5411 message request message to the lower RIVA sub-system if
5412 DAL is in state STARTED.
5413
5414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005416
5417 WDI_Start must have been called.
5418
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005421
Jeff Johnson295189b2012-06-20 16:38:30 -07005422 wdiConfigSTARspCb: callback for passing back the
5423 response of the config STA operation received from the
5424 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005425
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 callback
5428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 @see WDI_Start
5430 @return Result of the function call
5431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005433WDI_ConfigSTAReq
5434(
5435 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5436 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5437 void* pUserData
5438)
5439{
5440 WDI_EventInfoType wdiEventData;
5441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5442
5443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 ------------------------------------------------------------------------*/
5446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5447 {
5448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5449 "WDI API call before module is initialized - Fail request");
5450
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 }
5453
5454 /*------------------------------------------------------------------------
5455 Fill in Event data and post to the Main FSM
5456 ------------------------------------------------------------------------*/
5457 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005458 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5459 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5460 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 wdiEventData.pUserData = pUserData;
5462
5463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5464
5465}/*WDI_ConfigSTAReq*/
5466
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005467 /**
5468 @brief WDI_UpdateChannelReq will be called when the upper MAC
5469 wants to update the channel list on change in country code.
5470
5471 In state BUSY this request will be queued. Request won't
5472 be allowed in any other state.
5473
5474 WDI_UpdateChannelReq must have been called.
5475
5476 @param wdiUpdateChannelReqParams: the updated channel parameters
5477 as specified by the Device Interface
5478
5479 wdiUpdateChannelRspCb: callback for passing back the
5480 response of the update channel operation received from
5481 the device
5482
5483 pUserData: user data will be passed back with the
5484 callback
5485
5486 @return Result of the function call
5487*/
5488WDI_Status
5489WDI_UpdateChannelReq
5490(
5491 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5492 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5493 void* pUserData
5494)
5495{
5496 WDI_EventInfoType wdiEventData = {{0}};
5497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5498
5499 /*------------------------------------------------------------------------
5500 Sanity Check
5501 ------------------------------------------------------------------------*/
5502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5503 {
5504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5505 "WDI API call before module is initialized - Fail request");
5506
5507 return WDI_STATUS_E_NOT_ALLOWED;
5508 }
5509
5510 /*------------------------------------------------------------------------
5511 Fill in Event data and post to the Main FSM
5512 ------------------------------------------------------------------------*/
5513 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5514 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5515 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5516 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5517 wdiEventData.pUserData = pUserData;
5518
5519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5520
5521}/*WDI_UpdateChannelReq*/
5522
Jeff Johnson295189b2012-06-20 16:38:30 -07005523/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 wants to change the state of an ongoing link. Upon the
5526 call of this API the WLAN DAL will pack and send a HAL
5527 Start message request message to the lower RIVA
5528 sub-system if DAL is in state STARTED.
5529
5530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005532
5533 WDI_JoinStartReq must have been called.
5534
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 wdiSetLinkStateRspCb: callback for passing back the
5539 response of the set link state operation received from
5540 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005541
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 callback
5544
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 @see WDI_JoinStartReq
5546 @return Result of the function call
5547*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005549WDI_SetLinkStateReq
5550(
5551 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5552 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5553 void* pUserData
5554)
5555{
5556 WDI_EventInfoType wdiEventData;
5557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5558
5559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005561 ------------------------------------------------------------------------*/
5562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5563 {
5564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5565 "WDI API call before module is initialized - Fail request");
5566
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 }
5569
5570 /*------------------------------------------------------------------------
5571 Fill in Event data and post to the Main FSM
5572 ------------------------------------------------------------------------*/
5573 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005574 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5575 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5576 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 wdiEventData.pUserData = pUserData;
5578
5579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5580
5581}/*WDI_SetLinkStateReq*/
5582
5583
5584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 to get statistics (MIB counters) from the device. Upon
5587 the call of this API the WLAN DAL will pack and send a
5588 HAL Start request message to the lower RIVA sub-system
5589 if DAL is in state STARTED.
5590
5591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005593
5594 WDI_Start must have been called.
5595
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005598
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 wdiGetStatsRspCb: callback for passing back the response
5600 of the get stats operation received from the 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_GetStatsReq
5610(
5611 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5612 WDI_GetStatsRspCb wdiGetStatsRspCb,
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_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005634 wdiEventData.pEventData = pwdiGetStatsReqParams;
5635 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5636 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 wdiEventData.pUserData = pUserData;
5638
5639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5640
5641}/*WDI_GetStatsReq*/
5642
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005643#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005644/**
5645 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5646 to get roam rssi from the device. Upon
5647 the call of this API the WLAN DAL will pack and send a
5648 HAL Start request message to the lower RIVA sub-system
5649 if DAL is in state STARTED.
5650
5651 In state BUSY this request will be queued. Request won't
5652 be allowed in any other state.
5653
5654 WDI_Start must have been called.
5655
5656 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5657 specified by the Device Interface
5658
5659 wdiGetRoamRssiRspCb: callback for passing back the response
5660 of the get stats operation received from the device
5661
5662 pUserData: user data will be passed back with the
5663 callback
5664
5665 @see WDI_Start
5666 @return Result of the function call
5667*/
5668WDI_Status
5669WDI_GetRoamRssiReq
5670(
5671 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5672 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5673 void* pUserData
5674)
5675{
5676 WDI_EventInfoType wdiEventData;
5677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5678
5679 /*------------------------------------------------------------------------
5680 Sanity Check
5681 ------------------------------------------------------------------------*/
5682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5683 {
5684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5685 "WDI API call before module is initialized - Fail request");
5686
5687 return WDI_STATUS_E_NOT_ALLOWED;
5688 }
5689 /*------------------------------------------------------------------------
5690 Fill in Event data and post to the Main FSM
5691 ------------------------------------------------------------------------*/
5692 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5693 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5694 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5695 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5696 wdiEventData.pUserData = pUserData;
5697
5698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5699
5700}/*WDI_GetRoamRssiReq*/
5701#endif
5702
Jeff Johnson295189b2012-06-20 16:38:30 -07005703
5704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 it wishes to change the configuration of the WLAN
5707 Device. Upon the call of this API the WLAN DAL will pack
5708 and send a HAL Update CFG request message to the lower
5709 RIVA sub-system if DAL is in state STARTED.
5710
5711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005713
5714 WDI_Start must have been called.
5715
Jeff Johnsone7245742012-09-05 17:12:55 -07005716 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005718
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 wdiUpdateCfgsRspCb: callback for passing back the
5720 response of the update cfg operation received from the
5721 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005722
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 callback
5725
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 @see WDI_Start
5727 @return Result of the function call
5728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005730WDI_UpdateCfgReq
5731(
5732 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5733 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5734 void* pUserData
5735)
5736{
5737 WDI_EventInfoType wdiEventData;
5738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5739
5740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 ------------------------------------------------------------------------*/
5743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5744 {
5745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5746 "WDI API call before module is initialized - Fail request");
5747
Jeff Johnsone7245742012-09-05 17:12:55 -07005748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 }
5750
5751 /*------------------------------------------------------------------------
5752 Fill in Event data and post to the Main FSM
5753 ------------------------------------------------------------------------*/
5754 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5756 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5757 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 wdiEventData.pUserData = pUserData;
5759
5760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5761
5762}/*WDI_UpdateCfgReq*/
5763
5764
5765
5766/**
5767 @brief WDI_AddBAReq will be called when the upper MAC has setup
5768 successfully a BA session and needs to notify the HW for
5769 the appropriate settings to take place. Upon the call of
5770 this API the WLAN DAL will pack and send a HAL Add BA
5771 request message to the lower RIVA sub-system if DAL is
5772 in state STARTED.
5773
5774 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005776
5777 WDI_PostAssocReq must have been called.
5778
5779 @param wdiAddBAReqParams: the add BA parameters as specified by
5780 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 wdiAddBARspCb: callback for passing back the response of
5783 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 callback
5787
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 @see WDI_PostAssocReq
5789 @return Result of the function call
5790*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005792WDI_AddBAReq
5793(
5794 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5795 WDI_AddBARspCb wdiAddBARspCb,
5796 void* pUserData
5797)
5798{
5799 WDI_EventInfoType wdiEventData;
5800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5801
5802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 ------------------------------------------------------------------------*/
5805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5806 {
5807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5808 "WDI API call before module is initialized - Fail request");
5809
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 }
5812
5813 /*------------------------------------------------------------------------
5814 Fill in Event data and post to the Main FSM
5815 ------------------------------------------------------------------------*/
5816 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 wdiEventData.pEventData = pwdiAddBAReqParams;
5818 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5819 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiEventData.pUserData = pUserData;
5821
5822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5823
5824}/*WDI_AddBAReq*/
5825
5826
5827/**
5828 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5829 successfully a BA session and needs to notify the HW for
5830 the appropriate settings to take place. Upon the call of
5831 this API the WLAN DAL will pack and send a HAL Add BA
5832 request message to the lower RIVA sub-system if DAL is
5833 in state STARTED.
5834
5835 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005836 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005837
5838 WDI_PostAssocReq must have been called.
5839
5840 @param wdiAddBAReqParams: the add BA parameters as specified by
5841 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005842
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 wdiAddBARspCb: callback for passing back the response of
5844 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005845
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 callback
5848
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 @see WDI_PostAssocReq
5850 @return Result of the function call
5851*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005852WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005853WDI_TriggerBAReq
5854(
5855 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5856 WDI_TriggerBARspCb wdiTriggerBARspCb,
5857 void* pUserData
5858)
5859{
5860 WDI_EventInfoType wdiEventData;
5861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5862
5863 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 ------------------------------------------------------------------------*/
5866 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5867 {
5868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5869 "WDI API call before module is initialized - Fail request");
5870
Jeff Johnsone7245742012-09-05 17:12:55 -07005871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 }
5873
5874 /*------------------------------------------------------------------------
5875 Fill in Event data and post to the Main FSM
5876 ------------------------------------------------------------------------*/
5877 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5879 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5880 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiEventData.pUserData = pUserData;
5882
5883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5884
5885}/*WDI_AddBAReq*/
5886
5887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005889 wishes to update any of the Beacon parameters used by HW.
5890 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5891 message to the lower RIVA sub-system if DAL is in state
5892 STARTED.
5893
5894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005896
5897 WDI_PostAssocReq must have been called.
5898
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005901
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wdiUpdateBeaconParamsRspCb: callback for passing back the
5903 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 callback
5907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 @see WDI_PostAssocReq
5909 @return Result of the function call
5910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005912WDI_UpdateBeaconParamsReq
5913(
5914 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5915 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5916 void* pUserData
5917)
5918{
5919 WDI_EventInfoType wdiEventData;
5920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5921
5922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 ------------------------------------------------------------------------*/
5925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5926 {
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5928 "WDI API call before module is initialized - Fail request");
5929
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005931 }
5932
5933 /*------------------------------------------------------------------------
5934 Fill in Event data and post to the Main FSM
5935 ------------------------------------------------------------------------*/
5936 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005937 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5938 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5939 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 wdiEventData.pUserData = pUserData;
5941
5942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5943
5944}/*WDI_UpdateBeaconParamsReq*/
5945
5946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005948 wishes to update the Beacon template used by HW.
5949 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5950 message to the lower RIVA sub-system if DAL is in state
5951 STARTED.
5952
5953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005955
5956 WDI_PostAssocReq must have been called.
5957
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005960
Jeff Johnson295189b2012-06-20 16:38:30 -07005961 wdiSendBeaconParamsRspCb: callback for passing back the
5962 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005965 callback
5966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 @see WDI_PostAssocReq
5968 @return Result of the function call
5969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005971WDI_SendBeaconParamsReq
5972(
5973 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5974 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5975 void* pUserData
5976)
5977{
5978 WDI_EventInfoType wdiEventData;
5979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5980
5981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 ------------------------------------------------------------------------*/
5984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5985 {
5986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5987 "WDI API call before module is initialized - Fail request");
5988
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 }
5991
5992 /*------------------------------------------------------------------------
5993 Fill in Event data and post to the Main FSM
5994 ------------------------------------------------------------------------*/
5995 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005996 wdiEventData.pEventData = pwdiSendBeaconParams;
5997 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5998 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 wdiEventData.pUserData = pUserData;
6000
6001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6002
6003}/*WDI_SendBeaconParamsReq*/
6004
6005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006006 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 upper MAC wants to update the probe response template to
6008 be transmitted as Soft AP
6009 Upon the call of this API the WLAN DAL will
6010 pack and send the probe rsp template message to the
6011 lower RIVA sub-system if DAL is in state STARTED.
6012
6013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006015
6016
Jeff Johnsone7245742012-09-05 17:12:55 -07006017 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006018 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006019
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 wdiSendBeaconParamsRspCb: callback for passing back the
6021 response of the Send Beacon Params operation received
6022 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006023
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 callback
6026
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 @see WDI_AddBAReq
6028 @return Result of the function call
6029*/
6030
Jeff Johnsone7245742012-09-05 17:12:55 -07006031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006032WDI_UpdateProbeRspTemplateReq
6033(
6034 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6035 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6036 void* pUserData
6037)
6038{
6039 WDI_EventInfoType wdiEventData;
6040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6041
6042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006044 ------------------------------------------------------------------------*/
6045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6046 {
6047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6048 "WDI API call before module is initialized - Fail request");
6049
Jeff Johnsone7245742012-09-05 17:12:55 -07006050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006051 }
6052
6053 /*------------------------------------------------------------------------
6054 Fill in Event data and post to the Main FSM
6055 ------------------------------------------------------------------------*/
6056 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006057 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6058 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6059 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006060 wdiEventData.pUserData = pUserData;
6061
6062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6063
6064}/*WDI_UpdateProbeRspTemplateReq*/
6065
6066/**
6067 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6068 to the NV memory.
6069
6070
6071 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6072 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 wdiNvDownloadRspCb: callback for passing back the response of
6075 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006078 callback
6079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 @see WDI_PostAssocReq
6081 @return Result of the function call
6082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006084WDI_NvDownloadReq
6085(
6086 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6087 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6088 void* pUserData
6089)
6090{
6091 WDI_EventInfoType wdiEventData;
6092
6093 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 ------------------------------------------------------------------------*/
6096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6097 {
6098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6099 "WDI API call before module is initialized - Fail request");
6100
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 }
6103
6104 /*------------------------------------------------------------------------
6105 Fill in Event data and post to the Main FSM
6106 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6108 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6109 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6110 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 wdiEventData.pUserData = pUserData;
6112
6113 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6114
6115}/*WDI_NVDownloadReq*/
6116
Jeff Johnson295189b2012-06-20 16:38:30 -07006117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 upper MAC wants to send Notice of Absence
6120 Upon the call of this API the WLAN DAL will
6121 pack and send the probe rsp template message to the
6122 lower RIVA sub-system if DAL is in state STARTED.
6123
6124 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006125 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006126
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 wdiSendBeaconParamsRspCb: callback for passing back the
6132 response of the Send Beacon Params operation received
6133 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006136 callback
6137
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 @see WDI_AddBAReq
6139 @return Result of the function call
6140*/
6141WDI_Status
6142WDI_SetP2PGONOAReq
6143(
6144 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6145 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6146 void* pUserData
6147)
6148{
6149 WDI_EventInfoType wdiEventData;
6150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6151
6152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 ------------------------------------------------------------------------*/
6155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6156 {
6157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6158 "WDI API call before module is initialized - Fail request");
6159
Jeff Johnsone7245742012-09-05 17:12:55 -07006160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006161 }
6162
6163 /*------------------------------------------------------------------------
6164 Fill in Event data and post to the Main FSM
6165 ------------------------------------------------------------------------*/
6166 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006167 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6168 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6169 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 wdiEventData.pUserData = pUserData;
6171
6172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6173
6174}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006175
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306176#ifdef FEATURE_WLAN_TDLS
6177/**
6178 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6179 upper MAC wants to send TDLS Link Establish Request Parameters
6180 Upon the call of this API the WLAN DAL will
6181 pack and send the TDLS Link Establish Request message to the
6182 lower RIVA sub-system if DAL is in state STARTED.
6183
6184 In state BUSY this request will be queued. Request won't
6185 be allowed in any other state.
6186
6187
6188 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6189 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6190
6191 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6192 response of the TDLS Link Establish request received
6193 from the device
6194
6195 pUserData: user data will be passed back with the
6196 callback
6197
6198 @see
6199 @return Result of the function call
6200*/
6201WDI_Status
6202WDI_SetTDLSLinkEstablishReq
6203(
6204 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6205 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6206 void* pUserData
6207)
6208{
6209 WDI_EventInfoType wdiEventData;
6210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6211
6212 /*------------------------------------------------------------------------
6213 Sanity Check
6214 ------------------------------------------------------------------------*/
6215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6216 {
6217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6218 "WDI API call before module is initialized - Fail request");
6219
6220 return WDI_STATUS_E_NOT_ALLOWED;
6221 }
6222
6223 /*------------------------------------------------------------------------
6224 Fill in Event data and post to the Main FSM
6225 ------------------------------------------------------------------------*/
6226 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6227 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6228 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6229 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6230 wdiEventData.pUserData = pUserData;
6231
6232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6233
6234}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306235
6236//tdlsoffchan
6237/**
6238 @brief WDI_SetTDLSChanSwitchReq will be called when the
6239 upper MAC wants to send TDLS Chan Switch Request Parameters
6240 Upon the call of this API the WLAN DAL will
6241 pack and send the TDLS Link Establish Request message to the
6242 lower RIVA sub-system if DAL is in state STARTED.
6243
6244 In state BUSY this request will be queued. Request won't
6245 be allowed in any other state.
6246
6247
6248 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6249 for Link Establishment (Used for TDLS Off Channel ...)
6250
6251 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6252 response of the TDLS Chan Switch request received
6253 from the device
6254
6255 pUserData: user data will be passed back with the
6256 callback
6257
6258 @see
6259 @return Result of the function call
6260*/
6261WDI_Status
6262WDI_SetTDLSChanSwitchReq
6263(
6264 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6265 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6266 void* pUserData
6267)
6268{
6269 WDI_EventInfoType wdiEventData;
6270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6271
6272 /*------------------------------------------------------------------------
6273 Sanity Check
6274 ------------------------------------------------------------------------*/
6275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6276 {
6277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6278 "WDI API call before module is initialized - Fail request");
6279
6280 return WDI_STATUS_E_NOT_ALLOWED;
6281 }
6282
6283 /*------------------------------------------------------------------------
6284 Fill in Event data and post to the Main FSM
6285 ------------------------------------------------------------------------*/
6286 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6287 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6288 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6289 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6290 wdiEventData.pUserData = pUserData;
6291
6292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6293
6294}/*WDI_SetTDLSChanSwitchReq*/
6295
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306296#endif
6297
Jeff Johnson295189b2012-06-20 16:38:30 -07006298/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 UMAC wanted to add STA self while opening any new session
6301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006303
6304
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006307
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 callback
6310
6311 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 @return Result of the function call
6313*/
6314WDI_Status
6315WDI_AddSTASelfReq
6316(
6317 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6318 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6319 void* pUserData
6320)
6321{
6322 WDI_EventInfoType wdiEventData;
6323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6324
6325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 ------------------------------------------------------------------------*/
6328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6329 {
6330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6331 "WDI API call before module is initialized - Fail request");
6332
Jeff Johnsone7245742012-09-05 17:12:55 -07006333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006334 }
6335
6336 /*------------------------------------------------------------------------
6337 Fill in Event data and post to the Main FSM
6338 ------------------------------------------------------------------------*/
6339 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006340 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6341 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6342 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006343 wdiEventData.pUserData = pUserData;
6344
6345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6346
6347}/*WDI_AddSTASelfReq*/
6348
6349
Jeff Johnsone7245742012-09-05 17:12:55 -07006350#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006351/**
6352 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6353 the device of a successful add TSpec negotiation. HW
6354 needs to receive the TSpec Info from the UMAC in order
6355 to configure properly the QoS data traffic. Upon the
6356 call of this API the WLAN DAL will pack and send a HAL
6357 Add TS request message to the lower RIVA sub-system if
6358 DAL is in state STARTED.
6359
6360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006362
6363 WDI_PostAssocReq must have been called.
6364
6365 @param wdiAddTsReqParams: the add TS parameters as specified by
6366 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006367
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 wdiAddTsRspCb: callback for passing back the response of
6369 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006372 callback
6373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 @see WDI_PostAssocReq
6375 @return Result of the function call
6376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006378WDI_AggrAddTSReq
6379(
6380 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6381 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6382 void* pUserData
6383)
6384{
6385 WDI_EventInfoType wdiEventData;
6386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6387
6388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ------------------------------------------------------------------------*/
6391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6394 "WDI API call before module is initialized - Fail request");
6395
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 }
6398
6399 /*------------------------------------------------------------------------
6400 Fill in Event data and post to the Main FSM
6401 ------------------------------------------------------------------------*/
6402 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6404 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6405 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 wdiEventData.pUserData = pUserData;
6407
6408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6409
6410}/*WDI_AggrAddTSReq*/
6411
6412#endif /* WLAN_FEATURE_VOWIFI_11R */
6413
Jeff Johnson295189b2012-06-20 16:38:30 -07006414/**
6415 @brief WDI_FTMCommandReq
6416 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006417
6418 @param ftmCommandReq: FTM Command Body
6419 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006421
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 @see
6423 @return Result of the function call
6424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006426WDI_FTMCommandReq
6427(
6428 WDI_FTMCommandReqType *ftmCommandReq,
6429 WDI_FTMCommandRspCb ftmCommandRspCb,
6430 void *pUserData
6431)
6432{
6433 WDI_EventInfoType wdiEventData;
6434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6435
6436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 ------------------------------------------------------------------------*/
6439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6440 {
6441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6442 "WDI API call before module is initialized - Fail request");
6443
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006445 }
6446
6447 /*------------------------------------------------------------------------
6448 Fill in Event data and post to the Main FSM
6449 ------------------------------------------------------------------------*/
6450 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6451 wdiEventData.pEventData = (void *)ftmCommandReq;
6452 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6453 wdiEventData.pCBfnc = ftmCommandRspCb;
6454 wdiEventData.pUserData = pUserData;
6455
6456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6457}
Jeff Johnson295189b2012-06-20 16:38:30 -07006458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006460
6461 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
6464
6465 @param pwdiResumeReqParams: as specified by
6466 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006467
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 wdiResumeReqRspCb: callback for passing back the response of
6469 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006470
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006472 callback
6473
6474 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 @return Result of the function call
6476*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006477WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006478WDI_HostResumeReq
6479(
6480 WDI_ResumeParamsType* pwdiResumeReqParams,
6481 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6482 void* pUserData
6483)
6484{
6485 WDI_EventInfoType wdiEventData;
6486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6487
6488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 ------------------------------------------------------------------------*/
6491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6492 {
6493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6494 "WDI API call before module is initialized - Fail request");
6495
Jeff Johnsone7245742012-09-05 17:12:55 -07006496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 }
6498
6499 /*------------------------------------------------------------------------
6500 Fill in Event data and post to the Main FSM
6501 ------------------------------------------------------------------------*/
6502 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 wdiEventData.pEventData = pwdiResumeReqParams;
6504 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6505 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 wdiEventData.pUserData = pUserData;
6507
6508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6509
6510}/*WDI_HostResumeReq*/
6511
6512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006513 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006514
6515 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006517
6518
6519 @param pwdiDelStaSelfReqParams: as specified by
6520 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 wdiDelStaSelfRspCb: callback for passing back the response of
6523 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006524
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 callback
6527
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 @see WDI_PostAssocReq
6529 @return Result of the function call
6530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006532WDI_DelSTASelfReq
6533(
6534 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6535 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6536 void* pUserData
6537)
6538{
6539 WDI_EventInfoType wdiEventData;
6540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6541
6542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 ------------------------------------------------------------------------*/
6545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6546 {
6547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6548 "WDI API call before module is initialized - Fail request");
6549
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 }
6552
6553 /*------------------------------------------------------------------------
6554 Fill in Event data and post to the Main FSM
6555 ------------------------------------------------------------------------*/
6556 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6558 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6559 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 wdiEventData.pUserData = pUserData;
6561
6562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6563
6564}/*WDI_AggrAddTSReq*/
6565
6566/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006567 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6568 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 Upon the call of this API the WLAN DAL will pack
6570 and send a HAL Set Tx Per Tracking request message to the
6571 lower RIVA sub-system if DAL is in state STARTED.
6572
6573 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006575
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006577 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006578
Jeff Johnson295189b2012-06-20 16:38:30 -07006579 pwdiSetTxPerTrackingRspCb: callback for passing back the
6580 response of the set Tx PER Tracking configurations operation received
6581 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006582
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 callback
6585
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 @return Result of the function call
6587*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006589WDI_SetTxPerTrackingReq
6590(
6591 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6592 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6593 void* pUserData
6594)
6595{
6596 WDI_EventInfoType wdiEventData;
6597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6598
6599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 ------------------------------------------------------------------------*/
6602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6603 {
6604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6605 "WDI API call before module is initialized - Fail request");
6606
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 }
6609
6610 /*------------------------------------------------------------------------
6611 Fill in Event data and post to the Main FSM
6612 ------------------------------------------------------------------------*/
6613 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006614 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 wdiEventData.pUserData = pUserData;
6618
6619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6620
6621}/*WDI_SetTxPerTrackingReq*/
6622
6623/**
6624 @brief WDI_SetTmLevelReq
6625 If HW Thermal condition changed, driver should react based on new
6626 HW thermal condition.
6627
6628 @param pwdiSetTmLevelReq: New thermal condition information
6629
6630 pwdiSetTmLevelRspCb: callback
6631
6632 usrData: user data will be passed back with the
6633 callback
6634
6635 @return Result of the function call
6636*/
6637WDI_Status
6638WDI_SetTmLevelReq
6639(
6640 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6641 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6642 void *usrData
6643)
6644{
6645 WDI_EventInfoType wdiEventData;
6646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6647
6648 /*------------------------------------------------------------------------
6649 Sanity Check
6650 ------------------------------------------------------------------------*/
6651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6652 {
6653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6654 "WDI API call before module is initialized - Fail request");
6655
6656 return WDI_STATUS_E_NOT_ALLOWED;
6657 }
6658
6659 /*------------------------------------------------------------------------
6660 Fill in Event data and post to the Main FSM
6661 ------------------------------------------------------------------------*/
6662 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6663 wdiEventData.pEventData = pwdiSetTmLevelReq;
6664 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6665 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6666 wdiEventData.pUserData = usrData;
6667
6668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6669}
6670
6671/**
6672 @brief WDI_HostSuspendInd
6673
6674 Suspend Indication from the upper layer will be sent
6675 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006676
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006678
6679 @see
6680
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 @return Status of the request
6682*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006683WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006684WDI_HostSuspendInd
6685(
6686 WDI_SuspendParamsType* pwdiSuspendIndParams
6687)
6688{
6689
6690 WDI_EventInfoType wdiEventData;
6691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6692
6693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 ------------------------------------------------------------------------*/
6696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6697 {
6698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6699 "WDI API call before module is initialized - Fail request");
6700
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 }
6703
6704 /*------------------------------------------------------------------------
6705 Fill in Event data and post to the Main FSM
6706 ------------------------------------------------------------------------*/
6707 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006708 wdiEventData.pEventData = pwdiSuspendIndParams;
6709 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6710 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 wdiEventData.pUserData = NULL;
6712
6713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6714
6715}/*WDI_HostSuspendInd*/
6716
6717/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006718 @brief WDI_TrafficStatsInd
6719 Traffic Stats from the upper layer will be sent
6720 down to HAL
6721
6722 @param WDI_TrafficStatsIndType
6723
6724 @see
6725
6726 @return Status of the request
6727*/
6728WDI_Status
6729WDI_TrafficStatsInd
6730(
6731 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6732)
6733{
6734
6735 WDI_EventInfoType wdiEventData;
6736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6737
6738 /*------------------------------------------------------------------------
6739 Sanity Check
6740 ------------------------------------------------------------------------*/
6741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6742 {
6743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6744 "WDI API call before module is initialized - Fail request");
6745
6746 return WDI_STATUS_E_NOT_ALLOWED;
6747 }
6748
6749 /*------------------------------------------------------------------------
6750 Fill in Event data and post to the Main FSM
6751 ------------------------------------------------------------------------*/
6752 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6753 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6754 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6755 wdiEventData.pCBfnc = NULL;
6756 wdiEventData.pUserData = NULL;
6757
6758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6759
6760}/*WDI_TrafficStatsInd*/
6761
Chet Lanctot186b5732013-03-18 10:26:30 -07006762#ifdef WLAN_FEATURE_11W
6763/**
6764 @brief WDI_ExcludeUnencryptedInd
6765 Register with HAL to receive/drop unencrypted frames
6766
6767 @param WDI_ExcludeUnencryptIndType
6768
6769 @see
6770
6771 @return Status of the request
6772*/
6773WDI_Status
6774WDI_ExcludeUnencryptedInd
6775(
6776 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6777)
6778{
6779
6780 WDI_EventInfoType wdiEventData;
6781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6782
6783 /*------------------------------------------------------------------------
6784 Sanity Check
6785 ------------------------------------------------------------------------*/
6786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6787 {
6788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6789 "WDI API call before module is initialized - Fail request");
6790
6791 return WDI_STATUS_E_NOT_ALLOWED;
6792 }
6793
6794 /*------------------------------------------------------------------------
6795 Fill in Event data and post to the Main FSM
6796 ------------------------------------------------------------------------*/
6797 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6798 wdiEventData.pEventData = pWdiExcUnencParams;
6799 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6800 wdiEventData.pCBfnc = NULL;
6801 wdiEventData.pUserData = NULL;
6802
6803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6804
6805}/*WDI_TrafficStatsInd*/
6806#endif
6807
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006808/**
Yue Mab9c86f42013-08-14 15:59:08 -07006809 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6810
6811 @param addPeriodicTxPtrnParams: Add Pattern parameters
6812
6813 @see
6814
6815 @return Status of the request
6816*/
6817WDI_Status
6818WDI_AddPeriodicTxPtrnInd
6819(
6820 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6821)
6822{
6823 WDI_EventInfoType wdiEventData;
6824
6825 /*-------------------------------------------------------------------------
6826 Sanity Check
6827 ------------------------------------------------------------------------*/
6828 if (eWLAN_PAL_FALSE == gWDIInitialized)
6829 {
6830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6831 "WDI API call before module is initialized - Fail request!");
6832
6833 return WDI_STATUS_E_NOT_ALLOWED;
6834 }
6835
6836 /*-------------------------------------------------------------------------
6837 Fill in Event data and post to the Main FSM
6838 ------------------------------------------------------------------------*/
6839 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6840 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6841 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6842 wdiEventData.pCBfnc = NULL;
6843 wdiEventData.pUserData = NULL;
6844
6845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6846}
6847
6848/**
6849 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6850
6851 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6852
6853 @see
6854
6855 @return Status of the request
6856*/
6857WDI_Status
6858WDI_DelPeriodicTxPtrnInd
6859(
6860 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6861)
6862{
6863 WDI_EventInfoType wdiEventData;
6864
6865 /*-------------------------------------------------------------------------
6866 Sanity Check
6867 ------------------------------------------------------------------------*/
6868 if (eWLAN_PAL_FALSE == gWDIInitialized)
6869 {
6870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6871 "WDI API call before module is initialized - Fail request!");
6872
6873 return WDI_STATUS_E_NOT_ALLOWED;
6874 }
6875
6876 /*-------------------------------------------------------------------------
6877 Fill in Event data and post to the Main FSM
6878 ------------------------------------------------------------------------*/
6879 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6880 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6881 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6882 wdiEventData.pCBfnc = NULL;
6883 wdiEventData.pUserData = NULL;
6884
6885 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6886}
6887
6888/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006889 @brief WDI_HALDumpCmdReq
6890 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006891
6892 @param halDumpCmdReqParams: Hal Dump Command Body
6893 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 @see
6897 @return Result of the function call
6898*/
6899WDI_Status WDI_HALDumpCmdReq
6900(
6901 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6902 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6903 void *pUserData
6904)
6905{
6906 WDI_EventInfoType wdiEventData;
6907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6908
6909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 ------------------------------------------------------------------------*/
6912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6913 {
6914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6915 "WDI API call before module is initialized - Fail request");
6916
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 }
6919
6920 /*------------------------------------------------------------------------
6921 Fill in Event data and post to the Main FSM
6922 ------------------------------------------------------------------------*/
6923 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6924 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6925 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6926 wdiEventData.pCBfnc = halDumpCmdRspCb;
6927 wdiEventData.pUserData = pUserData;
6928
6929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6930}
6931
Jeff Johnsone7245742012-09-05 17:12:55 -07006932/*============================================================================
6933
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006935
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 ============================================================================*/
6937
6938/**
6939 @brief Main FSM Start function for all states except BUSY
6940
Jeff Johnsone7245742012-09-05 17:12:55 -07006941
6942 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 wdiEV: event posted to the main DAL FSM
6944 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 structure
6946
Jeff Johnson295189b2012-06-20 16:38:30 -07006947 @see
6948 @return Result of the function call
6949*/
6950WDI_Status
6951WDI_PostMainEvent
6952(
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 WDI_ControlBlockType* pWDICtx,
6954 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006956)
6957{
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 WDI_Status wdiStatus;
6959 WDI_MainFuncType pfnWDIMainEvHdlr;
6960 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306961 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6963
6964 /*-------------------------------------------------------------------------
6965 Sanity check
6966 -------------------------------------------------------------------------*/
6967 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6968 ( wdiEV >= WDI_MAX_EVENT ))
6969 {
6970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6971 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6972 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 }
6975
6976 /*Access to the global state must be locked */
6977 wpalMutexAcquire(&pWDICtx->wptMutex);
6978
6979 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006981
6982 wdiOldState = pWDICtx->uGlobalState;
6983
6984 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6986 response comes from CCPU for the request sent by host:
6987 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 -07006988 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 -07006989 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 CCPU:
6991 don't change the state */
6992 if ( WDI_RESPONSE_EVENT != wdiEV)
6993 {
6994 /*Transition to BUSY State - the request is now being processed by the FSM,
6995 if the request fails we shall transition back to the old state, if not
6996 the request will manage its own state transition*/
6997 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6998 }
6999 /* If the state function associated with the EV is NULL it means that this
7000 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 {
7003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 }
7008 else
7009 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307010 if (!(failCnt & 0xF))
7011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007012 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307014 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 }
7017
7018 /* If a request handles itself well it will end up in a success or in a
7019 pending
7020 Success - means that the request was processed and the proper state
7021 transition already occurred or will occur when the resp is received
7022 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007023
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 Pending - means the request could not be processed at this moment in time
7025 because the FSM was already busy so no state transition or dequeueing
7026 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007027
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 Success for synchronous case means that the transition may occur and
7029 processing of pending requests may continue - so it should go through
7030 and restores the state and continue processing queued requests*/
7031 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7032 ( WDI_STATUS_PENDING != wdiStatus ))
7033 {
7034 if ( WDI_RESPONSE_EVENT != wdiEV)
7035 {
7036 /*The request has failed or could not be processed - transition back to
7037 the old state - check to see if anything was queued and try to execute
7038 The dequeue logic should post a message to a thread and return - no
7039 actual processing can occur */
7040 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7041 }
7042 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007043
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 }
7045
7046 /* we have completed processing the event */
7047 wpalMutexRelease(&pWDICtx->wptMutex);
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051}/*WDI_PostMainEvent*/
7052
7053
7054/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007056--------------------------------------------------------------------------*/
7057/**
7058 @brief Main FSM Start function for all states except BUSY
7059
Jeff Johnsone7245742012-09-05 17:12:55 -07007060
7061 @param pWDICtx: pointer to the WLAN DAL context
7062 pEventData: pointer to the event information structure
7063
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 @see
7065 @return Result of the function call
7066*/
7067WDI_Status
7068WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007069(
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 WDI_ControlBlockType* pWDICtx,
7071 WDI_EventInfoType* pEventData
7072)
7073{
7074
7075 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 ----------------------------------------------------------------------*/
7078 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7079 {
7080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007081 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 pWDICtx, pEventData);
7083 return WDI_STATUS_E_FAILURE;
7084 }
7085
7086 wpalMutexAcquire(&pWDICtx->wptMutex);
7087
7088 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 ----------------------------------------------------------------------*/
7091 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7092 {
7093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7094 "Control Transport not yet Open - queueing the request");
7095
7096 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007098
7099 wpalMutexRelease(&pWDICtx->wptMutex);
7100 return WDI_STATUS_PENDING;
7101 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007102
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 wpalMutexRelease(&pWDICtx->wptMutex);
7104
7105 /*Return Success*/
7106 return WDI_ProcessRequest( pWDICtx, pEventData );
7107
7108}/*WDI_MainStart*/
7109
7110/**
7111 @brief Main FSM Response function for state INIT
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_MainRspInit
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 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007131
7132 /*Return Success*/
7133 return WDI_STATUS_E_NOT_ALLOWED;
7134}/* WDI_MainRspInit */
7135
7136/**
7137 @brief Main FSM Close function for all states except BUSY
7138
Jeff Johnsone7245742012-09-05 17:12:55 -07007139
7140 @param pWDICtx: pointer to the WLAN DAL context
7141 pEventData: pointer to the event information structure
7142
Jeff Johnson295189b2012-06-20 16:38:30 -07007143 @see
7144 @return Result of the function call
7145*/
7146WDI_Status
7147WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007148(
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 WDI_ControlBlockType* pWDICtx,
7150 WDI_EventInfoType* pEventData
7151)
7152{
7153
7154 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 ----------------------------------------------------------------------*/
7157 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7158 {
7159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007160 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 pWDICtx, pEventData);
7162 return WDI_STATUS_E_FAILURE;
7163 }
7164
7165 /*Return Success*/
7166 return WDI_ProcessRequest( pWDICtx, pEventData );
7167
7168}/*WDI_MainClose*/
7169/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007171--------------------------------------------------------------------------*/
7172/**
7173 @brief Main FSM Start function for state STARTED
7174
Jeff Johnsone7245742012-09-05 17:12:55 -07007175
7176 @param pWDICtx: pointer to the WLAN DAL context
7177 pEventData: pointer to the event information structure
7178
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 @see
7180 @return Result of the function call
7181*/
7182WDI_Status
7183WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007184(
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 WDI_ControlBlockType* pWDICtx,
7186 WDI_EventInfoType* pEventData
7187)
7188{
7189 WDI_StartRspCb wdiStartRspCb = NULL;
7190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7191
7192 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 ----------------------------------------------------------------------*/
7195 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7196 {
7197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007198 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 pWDICtx, pEventData);
7200 return WDI_STATUS_E_FAILURE;
7201 }
7202
7203 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 ----------------------------------------------------------------------*/
7206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007208
7209 wpalMutexAcquire(&pWDICtx->wptMutex);
7210
7211 /*Transition back to started because the post function transitioned us to
7212 busy*/
7213 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7214
7215 /*Check to see if any request is pending*/
7216 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007217
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpalMutexRelease(&pWDICtx->wptMutex);
7219
7220 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007221 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307224 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007225
7226 /*Return Success*/
7227 return WDI_STATUS_SUCCESS;
7228
7229}/*WDI_MainStartStarted*/
7230
7231/**
7232 @brief Main FSM Stop function for state STARTED
7233
Jeff Johnsone7245742012-09-05 17:12:55 -07007234
7235 @param pWDICtx: pointer to the WLAN DAL context
7236 pEventData: pointer to the event information structure
7237
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 @see
7239 @return Result of the function call
7240*/
7241WDI_Status
7242WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007243(
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 WDI_ControlBlockType* pWDICtx,
7245 WDI_EventInfoType* pEventData
7246)
7247{
7248 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 ----------------------------------------------------------------------*/
7251 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7252 {
7253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007254 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 pWDICtx, pEventData);
7256 return WDI_STATUS_E_FAILURE;
7257 }
7258
7259 /*State at this point is BUSY - because we enter this state before posting
7260 an event to the FSM in order to prevent potential race conditions*/
7261
7262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7263 "Processing stop request in FSM");
7264
7265 /*Return Success*/
7266 return WDI_ProcessRequest( pWDICtx, pEventData );
7267
7268}/*WDI_MainStopStarted*/
7269/**
7270 @brief Main FSM Request function for state started
7271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272
7273 @param pWDICtx: pointer to the WLAN DAL context
7274 pEventData: pointer to the event information structure
7275
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 @see
7277 @return Result of the function call
7278*/
7279WDI_Status
7280WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007281(
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 WDI_ControlBlockType* pWDICtx,
7283 WDI_EventInfoType* pEventData
7284)
7285{
7286
7287 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 ----------------------------------------------------------------------*/
7290 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7291 {
7292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007293 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 pWDICtx, pEventData);
7295 return WDI_STATUS_E_FAILURE;
7296 }
7297
7298 /*State at this point is BUSY - because we enter this state before posting
7299 an event to the FSM in order to prevent potential race conditions*/
7300
7301 /*Return Success*/
7302 return WDI_ProcessRequest( pWDICtx, pEventData );
7303
7304}/*WDI_MainReqStarted*/
7305
7306/**
7307 @brief Main FSM Response function for all states except INIT
7308
Jeff Johnsone7245742012-09-05 17:12:55 -07007309
7310 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007312
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 @see
7314 @return Result of the function call
7315*/
7316WDI_Status
7317WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007318(
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 WDI_ControlBlockType* pWDICtx,
7320 WDI_EventInfoType* pEventData
7321)
7322{
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 wpt_boolean expectedResponse;
7325
7326 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 ----------------------------------------------------------------------*/
7329 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7330 {
7331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007332 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 pWDICtx, pEventData);
7334 return WDI_STATUS_E_FAILURE;
7335 }
7336
7337 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7338 {
7339 /* we received an expected response */
7340 expectedResponse = eWLAN_PAL_TRUE;
7341
7342 /*We expect that we will transition to started after this processing*/
7343 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7344
7345 /* we are no longer expecting a response */
7346 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7347 }
7348 else
7349 {
7350 /* we received an indication or unexpected response */
7351 expectedResponse = eWLAN_PAL_FALSE;
7352 /* for indications no need to update state from what it is right
7353 now, unless it explicitly does it in the indication handler (say
7354 for device failure ind) */
7355 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7356 }
7357
7358 /*Process the response and indication */
7359 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7360
7361 /*Lock the CB as we are about to do a state transition*/
7362 wpalMutexAcquire(&pWDICtx->wptMutex);
7363
7364 /*Transition to the expected state after the response processing
7365 - this should always be started state with the following exceptions:
7366 1. processing of a failed start response
7367 2. device failure detected while processing response
7368 3. stop response received*/
7369 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007370
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 /*Dequeue request that may have been queued while we were waiting for the
7372 response */
7373 if ( expectedResponse )
7374 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 }
7377
7378 wpalMutexRelease(&pWDICtx->wptMutex);
7379
7380 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007382
7383}/*WDI_MainRsp*/
7384
7385/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007387--------------------------------------------------------------------------*/
7388/**
7389 @brief Main FSM Stop function for state STOPPED
7390
Jeff Johnsone7245742012-09-05 17:12:55 -07007391
7392 @param pWDICtx: pointer to the WLAN DAL context
7393 pEventData: pointer to the event information structure
7394
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 @see
7396 @return Result of the function call
7397*/
7398WDI_Status
7399WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007400(
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_ControlBlockType* pWDICtx,
7402 WDI_EventInfoType* pEventData
7403)
7404{
7405 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 ----------------------------------------------------------------------*/
7408 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7409 {
7410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007411 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pWDICtx, pEventData);
7413 return WDI_STATUS_E_FAILURE;
7414 }
7415
7416 /*We should normally not get a STOP request if we are already stopped
7417 since we should normally be stopped by the UMAC. However in some
7418 error situations we put ourselves in the stopped state without the
7419 UMAC knowing, so when we get a STOP request in this state we still
7420 process it since we need to clean up the underlying state */
7421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7422 "Processing stop request while stopped in FSM");
7423
7424 /*Return Success*/
7425 return WDI_ProcessRequest( pWDICtx, pEventData );
7426
7427}/*WDI_MainStopStopped*/
7428
7429/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007431--------------------------------------------------------------------------*/
7432/**
7433 @brief Main FSM Start function for state BUSY
7434
Jeff Johnsone7245742012-09-05 17:12:55 -07007435
7436 @param pWDICtx: pointer to the WLAN DAL context
7437 pEventData: pointer to the event information structure
7438
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 @see
7440 @return Result of the function call
7441*/
7442WDI_Status
7443WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007444(
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 WDI_ControlBlockType* pWDICtx,
7446 WDI_EventInfoType* pEventData
7447)
7448{
7449 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 ----------------------------------------------------------------------*/
7452 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7453 {
7454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007455 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007456 pWDICtx, pEventData);
7457 return WDI_STATUS_E_FAILURE;
7458 }
7459
7460 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 ----------------------------------------------------------------------*/
7463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7464 "WDI Busy state - queue start request");
7465
7466 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007468
7469 /*Return Success*/
7470 return WDI_STATUS_PENDING;
7471}/*WDI_MainStartBusy*/
7472
7473/**
7474 @brief Main FSM Stop function for state BUSY
7475
Jeff Johnsone7245742012-09-05 17:12:55 -07007476
7477 @param pWDICtx: pointer to the WLAN DAL context
7478 pEventData: pointer to the event information structure
7479
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 @see
7481 @return Result of the function call
7482*/
7483WDI_Status
7484WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007485(
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 WDI_ControlBlockType* pWDICtx,
7487 WDI_EventInfoType* pEventData
7488)
7489{
7490 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 ----------------------------------------------------------------------*/
7493 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7494 {
7495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007496 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 pWDICtx, pEventData);
7498 return WDI_STATUS_E_FAILURE;
7499 }
7500
7501 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 ----------------------------------------------------------------------*/
7504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7505 "WDI Busy state - queue stop request");
7506
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510}/*WDI_MainStopBusy*/
7511
7512/**
7513 @brief Main FSM Request function for state BUSY
7514
Jeff Johnsone7245742012-09-05 17:12:55 -07007515
7516 @param pWDICtx: pointer to the WLAN DAL context
7517 pEventData: pointer to the event information structure
7518
Jeff Johnson295189b2012-06-20 16:38:30 -07007519 @see
7520 @return Result of the function call
7521*/
7522WDI_Status
7523WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007524(
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 WDI_ControlBlockType* pWDICtx,
7526 WDI_EventInfoType* pEventData
7527)
7528{
7529 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 ----------------------------------------------------------------------*/
7532 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7533 {
7534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007535 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 pWDICtx, pEventData);
7537 return WDI_STATUS_E_FAILURE;
7538 }
7539
7540 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 ----------------------------------------------------------------------*/
7543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7544 "WDI Busy state - queue request %d because waiting for response %d",
7545 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7546
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007549
Jeff Johnson295189b2012-06-20 16:38:30 -07007550}/*WDI_MainReqBusy*/
7551/**
7552 @brief Main FSM Close function for state BUSY
7553
Jeff Johnsone7245742012-09-05 17:12:55 -07007554
7555 @param pWDICtx: pointer to the WLAN DAL context
7556 pEventData: pointer to the event information structure
7557
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 @see
7559 @return Result of the function call
7560*/
7561WDI_Status
7562WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007563(
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 WDI_ControlBlockType* pWDICtx,
7565 WDI_EventInfoType* pEventData
7566)
7567{
7568 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 ----------------------------------------------------------------------*/
7571 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7572 {
7573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007574 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 pWDICtx, pEventData);
7576 return WDI_STATUS_E_FAILURE;
7577 }
7578
7579 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 ----------------------------------------------------------------------*/
7582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7583 "WDI Busy state - queue close request");
7584
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007587
Jeff Johnson295189b2012-06-20 16:38:30 -07007588}/*WDI_MainCloseBusy*/
7589
7590/**
7591 @brief Main FSM Shutdown function for INIT & STARTED states
7592
7593
7594 @param pWDICtx: pointer to the WLAN DAL context
7595 pEventData: pointer to the event information structure
7596
7597 @see
7598 @return Result of the function call
7599*/
7600WDI_Status
7601WDI_MainShutdown
7602(
7603 WDI_ControlBlockType* pWDICtx,
7604 WDI_EventInfoType* pEventData
7605)
7606{
7607 /*--------------------------------------------------------------------
7608 Sanity Check
7609 ----------------------------------------------------------------------*/
7610 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7611 {
7612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007613 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 pWDICtx, pEventData);
7615 return WDI_STATUS_E_FAILURE;
7616 }
7617
7618 /*State at this point is BUSY - because we enter this state before posting
7619 an event to the FSM in order to prevent potential race conditions*/
7620
7621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7622 "Processing shutdown request in FSM");
7623
7624 /*Return Success*/
7625 return WDI_ProcessRequest( pWDICtx, pEventData );
7626
7627}/*WDI_MainShutdown*/
7628
7629/**
7630 @brief Main FSM Shutdown function for BUSY state
7631
7632
7633 @param pWDICtx: pointer to the WLAN DAL context
7634 pEventData: pointer to the event information structure
7635
7636 @see
7637 @return Result of the function call
7638*/
7639WDI_Status
7640WDI_MainShutdownBusy
7641(
7642 WDI_ControlBlockType* pWDICtx,
7643 WDI_EventInfoType* pEventData
7644)
7645{
7646 /*--------------------------------------------------------------------
7647 Sanity Check
7648 ----------------------------------------------------------------------*/
7649 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7650 {
7651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007652 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 pWDICtx, pEventData);
7654 return WDI_STATUS_E_FAILURE;
7655 }
7656
7657 /* If you are waiting for a HAL response at this stage, you are not
7658 * going to get it. Riva is already shutdown/crashed.
7659 */
7660 wpalTimerStop(&gWDICb.wptResponseTimer);
7661
7662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7663 "Processing shutdown request in FSM: Busy state ");
7664
7665 return WDI_ProcessRequest( pWDICtx, pEventData );
7666
7667}/*WDI_MainShutdownBusy*/
7668
7669
Jeff Johnsone7245742012-09-05 17:12:55 -07007670/*=======================================================================
7671
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007673
Jeff Johnson295189b2012-06-20 16:38:30 -07007674*=======================================================================*/
7675
7676/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007678========================================================================*/
7679/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007682
7683 @param pWDICtx: pointer to the WLAN DAL context
7684 pEventData: pointer to the event information structure
7685
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 @see
7687 @return Result of the function call
7688*/
7689WDI_Status
7690WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007691(
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 WDI_ControlBlockType* pWDICtx,
7693 WDI_EventInfoType* pEventData
7694)
7695{
7696 WDI_StartReqParamsType* pwdiStartParams = NULL;
7697 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wpt_uint16 usDataOffset = 0;
7700 wpt_uint16 usSendSize = 0;
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 tHalMacStartReqMsg halStartReq;
7703 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7705
7706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 -------------------------------------------------------------------------*/
7709 if (( NULL == pEventData ) ||
7710 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7711 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7712 {
7713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 }
7718
7719 /*-----------------------------------------------------------------------
7720 Get message buffer
7721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 pwdiStartParams->usConfigBufferLen;
7724
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 usLen,
7727 &pSendBuffer, &usDataOffset, &usSendSize))||
7728 ( usSendSize < (usDataOffset + usLen )))
7729 {
7730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007731 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 pEventData, pwdiStartParams, wdiStartRspCb);
7733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 }
7736
7737 /*-----------------------------------------------------------------------
7738 Fill in the message
7739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 halStartReq.startReqParams.driverType =
7741 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halStartReq.startReqParams.uConfigBufferLen =
7744 pwdiStartParams->usConfigBufferLen;
7745 wpalMemoryCopy( pSendBuffer+usDataOffset,
7746 &halStartReq.startReqParams,
7747 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 usDataOffset += sizeof(halStartReq.startReqParams);
7750 wpalMemoryCopy( pSendBuffer+usDataOffset,
7751 pwdiStartParams->pConfigBuffer,
7752 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753
7754 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757 /*Save Low Level Ind CB and associated user data - it will be used further
7758 on when an indication is coming from the lower MAC*/
7759 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007761
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7768
Jeff Johnsone7245742012-09-05 17:12:55 -07007769
Jeff Johnson295189b2012-06-20 16:38:30 -07007770}/*WDI_ProcessStartReq*/
7771
7772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007775
7776 @param pWDICtx: pointer to the WLAN DAL context
7777 pEventData: pointer to the event information structure
7778
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 @see
7780 @return Result of the function call
7781*/
7782WDI_Status
7783WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007784(
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 WDI_ControlBlockType* pWDICtx,
7786 WDI_EventInfoType* pEventData
7787)
7788{
7789 WDI_StopReqParamsType* pwdiStopParams = NULL;
7790 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 wpt_uint16 usDataOffset = 0;
7793 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007794 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7797
7798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 -------------------------------------------------------------------------*/
7801 if (( NULL == pEventData ) ||
7802 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7803 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7804 {
7805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007808 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 }
7810
7811 /*-----------------------------------------------------------------------
7812 Get message buffer
7813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 sizeof(halStopReq.stopReqParams),
7816 &pSendBuffer, &usDataOffset, &usSendSize))||
7817 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7818 {
7819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007820 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 pEventData, pwdiStopParams, wdiStopRspCb);
7822 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007823 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 }
7825
7826 /*-----------------------------------------------------------------------
7827 Fill in the message
7828 -----------------------------------------------------------------------*/
7829 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7830 pwdiStopParams->wdiStopReason);
7831
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 wpalMemoryCopy( pSendBuffer+usDataOffset,
7833 &halStopReq.stopReqParams,
7834 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007835
7836 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
7839 /*! TO DO: stop the data services */
7840 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7841 {
7842 /*Stop the STA Table !UT- check this logic again
7843 It is safer to do it here than on the response - because a stop is imminent*/
7844 WDI_STATableStop(pWDICtx);
7845
7846 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007847 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7848 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 {
7850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7851 "WDI Init failed to reset power state event");
7852
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007854 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 }
7856 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007857 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7858 if( eWLAN_PAL_STATUS_SUCCESS != status )
7859 {
7860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007861 "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 -08007862 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007863 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007864 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007868 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7869 WDI_SET_POWER_STATE_TIMEOUT);
7870 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 {
7872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7873 "WDI Init failed to wait on an event");
7874
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007876 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 }
7878 }
7879
7880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7885
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007886fail:
7887 // Release the message buffer so we don't leak
7888 wpalMemoryFree(pSendBuffer);
7889
7890failRequest:
7891 //WDA should have failure check to avoid the memory leak
7892 return WDI_STATUS_E_FAILURE;
7893
Jeff Johnson295189b2012-06-20 16:38:30 -07007894}/*WDI_ProcessStopReq*/
7895
7896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007899
7900 @param pWDICtx: pointer to the WLAN DAL context
7901 pEventData: pointer to the event information structure
7902
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 @see
7904 @return Result of the function call
7905*/
7906WDI_Status
7907WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007908(
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 WDI_ControlBlockType* pWDICtx,
7910 WDI_EventInfoType* pEventData
7911)
7912{
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7915
7916 /*Lock control block for cleanup*/
7917 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007918
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 /*Clear all pending request*/
7920 WDI_ClearPendingRequests(pWDICtx);
7921
7922 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007924
7925 /* Close Data transport*/
7926 /* FTM mode does not open Data Path */
7927 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7928 {
7929 WDTS_Close(pWDICtx);
7930 }
7931
7932 /*Close the STA Table !UT- check this logic again*/
7933 WDI_STATableClose(pWDICtx);
7934
7935 /*close the PAL */
7936 wptStatus = wpalClose(pWDICtx->pPALContext);
7937 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7938 {
7939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7940 "Failed to wpal Close %d", wptStatus);
7941 WDI_ASSERT(0);
7942 }
7943
7944 /*Transition back to init state*/
7945 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7946
7947 wpalMutexRelease(&pWDICtx->wptMutex);
7948
7949 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007951
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007953}/*WDI_ProcessCloseReq*/
7954
7955
7956/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007958===========================================================================*/
7959
7960/**
7961 @brief Process Init Scan Request function (called when Main FSM
7962 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007963
7964 @param pWDICtx: pointer to the WLAN DAL context
7965 pEventData: pointer to the event information structure
7966
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 @see
7968 @return Result of the function call
7969*/
7970WDI_Status
7971WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007972(
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WDI_ControlBlockType* pWDICtx,
7974 WDI_EventInfoType* pEventData
7975)
7976{
7977 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7978 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 wpt_uint16 usDataOffset = 0;
7981 wpt_uint16 usSendSize = 0;
7982 wpt_uint8 i = 0;
7983
7984 tHalInitScanReqMsg halInitScanReqMsg;
7985
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 * It shold be removed once host and riva changes are in sync*/
7988 tHalInitScanConReqMsg halInitScanConReqMsg;
7989
7990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7991
7992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 -------------------------------------------------------------------------*/
7995 if (( NULL == pEventData ) ||
7996 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7997 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7998 {
7999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 }
8004
8005#if 0
8006 wpalMutexAcquire(&pWDICtx->wptMutex);
8007 /*-----------------------------------------------------------------------
8008 Check to see if SCAN is already in progress - if so reject the req
8009 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 -----------------------------------------------------------------------*/
8012 if ( pWDICtx->bScanInProgress )
8013 {
8014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8015 "Scan is already in progress - subsequent scan is not allowed"
8016 " until the first scan completes");
8017
8018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 }
8021
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8023 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024
8025 wpalMutexRelease(&pWDICtx->wptMutex);
8026#endif
Viral Modid86bde22012-12-10 13:09:21 -08008027 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 * It shold be removed once host and riva changes are in sync*/
8031 /*-----------------------------------------------------------------------
8032 Get message buffer
8033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 sizeof(halInitScanConReqMsg.initScanParams),
8036 &pSendBuffer, &usDataOffset, &usSendSize))||
8037 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8038 {
8039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008040 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 }
8045
8046
8047 /*-----------------------------------------------------------------------
8048 Fill in the message
8049 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8052
8053 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8054 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8055
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8062
8063 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8064 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8065
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8067 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008068
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8071
8072 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8073 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8076 }
8077
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 wpalMemoryCopy( pSendBuffer+usDataOffset,
8079 &halInitScanConReqMsg.initScanParams,
8080 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 }
8082 else
8083 {
8084 /*-----------------------------------------------------------------------
8085 Get message buffer
8086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 sizeof(halInitScanReqMsg.initScanParams),
8089 &pSendBuffer, &usDataOffset, &usSendSize))||
8090 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8091 {
8092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008093 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 }
8098
8099
8100 /*-----------------------------------------------------------------------
8101 Fill in the message
8102 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8105
8106 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8107 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8108
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8115
8116 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8117 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8118
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8121
8122 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8123 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8126 }
8127
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 wpalMemoryCopy( pSendBuffer+usDataOffset,
8129 &halInitScanReqMsg.initScanParams,
8130 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 }
8132
8133 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
8136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8141
8142}/*WDI_ProcessInitScanReq*/
8143
8144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008147
8148 @param pWDICtx: pointer to the WLAN DAL context
8149 pEventData: pointer to the event information structure
8150
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 @see
8152 @return Result of the function call
8153*/
8154WDI_Status
8155WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008156(
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_ControlBlockType* pWDICtx,
8158 WDI_EventInfoType* pEventData
8159)
8160{
8161 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8162 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 wpt_uint16 usDataOffset = 0;
8165 wpt_uint16 usSendSize = 0;
8166
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8169
8170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 -------------------------------------------------------------------------*/
8173 if (( NULL == pEventData ) ||
8174 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8175 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8176 {
8177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 }
8182
8183#if 0
8184 wpalMutexAcquire(&pWDICtx->wptMutex);
8185 /*-----------------------------------------------------------------------
8186 Check to see if SCAN is already in progress - start scan is only
8187 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8192 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8193 {
8194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8195 "Scan start not allowed in this state %d %d",
8196 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008197
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 }
8201
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
8204 wpalMutexRelease(&pWDICtx->wptMutex);
8205#endif
8206
8207 /*-----------------------------------------------------------------------
8208 Get message buffer
8209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 sizeof(halStartScanReqMsg.startScanParams),
8212 &pSendBuffer, &usDataOffset, &usSendSize))||
8213 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8214 {
8215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008216 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 }
8221
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpalMemoryCopy( pSendBuffer+usDataOffset,
8225 &halStartScanReqMsg.startScanParams,
8226 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008227
8228 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8236}/*WDI_ProcessStartScanReq*/
8237
8238
8239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008242
8243 @param pWDICtx: pointer to the WLAN DAL context
8244 pEventData: pointer to the event information structure
8245
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 @see
8247 @return Result of the function call
8248*/
8249WDI_Status
8250WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008251(
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 WDI_ControlBlockType* pWDICtx,
8253 WDI_EventInfoType* pEventData
8254)
8255{
8256 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8257 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 wpt_uint16 usDataOffset = 0;
8260 wpt_uint16 usSendSize = 0;
8261
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8264
8265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 -------------------------------------------------------------------------*/
8268 if (( NULL == pEventData ) ||
8269 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8270 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8271 {
8272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
8277
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8279 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 * forwarded to HAL and result in hang*/
8281#if 0
8282 wpalMutexAcquire(&pWDICtx->wptMutex);
8283 /*-----------------------------------------------------------------------
8284 Check to see if SCAN is already in progress - end scan is only
8285 allowed when a scan is ongoing and the state of the scan procedure
8286 is started
8287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8290 {
8291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8292 "End start not allowed in this state %d %d",
8293 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008294
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 }
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008300
8301 wpalMutexRelease(&pWDICtx->wptMutex);
8302#endif
8303
8304 /*-----------------------------------------------------------------------
8305 Get message buffer
8306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 sizeof(halEndScanReqMsg.endScanParams),
8309 &pSendBuffer, &usDataOffset, &usSendSize))||
8310 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8311 {
8312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008313 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318
8319 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8320
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 wpalMemoryCopy( pSendBuffer+usDataOffset,
8322 &halEndScanReqMsg.endScanParams,
8323 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
8325 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8333}/*WDI_ProcessEndScanReq*/
8334
8335
8336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
8340 @param pWDICtx: pointer to the WLAN DAL context
8341 pEventData: pointer to the event information structure
8342
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 @see
8344 @return Result of the function call
8345*/
8346WDI_Status
8347WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008348(
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 WDI_ControlBlockType* pWDICtx,
8350 WDI_EventInfoType* pEventData
8351)
8352{
8353 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8354 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 wpt_uint16 usDataOffset = 0;
8357 wpt_uint16 usSendSize = 0;
8358 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008359 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8362
8363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 -------------------------------------------------------------------------*/
8366 if (( NULL == pEventData ) ||
8367 ( NULL == pEventData->pEventData) ||
8368 ( NULL == pEventData->pCBfnc))
8369 {
8370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 }
8375
8376 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8377 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8379 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 * forwarded to HAL and result in hang*/
8381#if 0
8382 wpalMutexAcquire(&pWDICtx->wptMutex);
8383 /*-----------------------------------------------------------------------
8384 Check to see if SCAN is already in progress
8385 Finish scan gets invoked any scan states. ie. abort scan
8386 It should be allowed in any states.
8387 -----------------------------------------------------------------------*/
8388 if ( !pWDICtx->bScanInProgress )
8389 {
8390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8391 "Finish start not allowed in this state %d",
8392 pWDICtx->bScanInProgress );
8393
8394 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 }
8397
8398 /*-----------------------------------------------------------------------
8399 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8403 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 wpalMutexRelease(&pWDICtx->wptMutex);
8405#endif
8406
8407 if ( pWDICtx->bInBmps )
8408 {
8409 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008410 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8411 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8412 {
8413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008414 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008415 WDI_ASSERT(0);
8416 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419 /*-----------------------------------------------------------------------
8420 Get message buffer
8421 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 sizeof(halFinishScanReqMsg.finishScanParams),
8424 &pSendBuffer, &usDataOffset, &usSendSize))||
8425 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8426 {
8427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008428 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 }
8433
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8442
8443 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8444 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8445
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8455
8456 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8457 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8460 }
8461
8462 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8463 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8464
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 wpalMemoryCopy( pSendBuffer+usDataOffset,
8466 &halFinishScanReqMsg.finishScanParams,
8467 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008468
8469 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471
8472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8477}/*WDI_ProcessFinishScanReq*/
8478
8479
8480/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008482==========================================================================*/
8483/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 @brief Process BSS Join for a given Session
8485
8486 @param pWDICtx: pointer to the WLAN DAL context
8487 pEventData: pointer to the event information structure
8488
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 @see
8490 @return Result of the function call
8491*/
8492WDI_Status
8493WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008494(
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 WDI_ControlBlockType* pWDICtx,
8496 WDI_JoinReqParamsType* pwdiJoinParams,
8497 WDI_JoinRspCb wdiJoinRspCb,
8498 void* pUserData
8499)
8500{
8501 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 wpt_uint16 usDataOffset = 0;
8504 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008506
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8509
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008510 wpalMutexAcquire(&pWDICtx->wptMutex);
8511
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 /*------------------------------------------------------------------------
8513 Check to see if we have any session with this BSSID already stored, we
8514 should not
8515 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8517 pwdiJoinParams->wdiReqInfo.macBSSID,
8518 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008519
8520 if ( NULL != pBSSSes )
8521 {
8522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008523 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8524 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008526 /*reset the bAssociationInProgress otherwise the next
8527 *join request will be queued*/
8528 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8529 wpalMutexRelease(&pWDICtx->wptMutex);
8530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 }
8532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 if ( NULL == pBSSSes )
8538 {
8539
8540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8541 "DAL has no free sessions - cannot run another join");
8542
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008543 /*reset the bAssociationInProgress otherwise the next
8544 *join request will be queued*/
8545 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 }
8549
8550 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8552 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 WDI_MAC_ADDR_LEN);
8554
8555 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpalMutexRelease(&pWDICtx->wptMutex);
8560
8561 /*-----------------------------------------------------------------------
8562 Get message buffer
8563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 sizeof(halJoinReqMsg.joinReqParams),
8566 &pSendBuffer, &usDataOffset, &usSendSize))||
8567 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8568 {
8569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008570 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 pUserData, pwdiJoinParams, wdiJoinRspCb);
8572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008578
8579 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pwdiJoinParams->wdiReqInfo.macSTASelf,
8581 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008582
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8585
8586 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8587
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008588#ifdef WLAN_FEATURE_VOWIFI
8589 halJoinReqMsg.joinReqParams.maxTxPower =
8590 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8591#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8594#endif
8595
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8598 wdiSecondaryChannelOffset);
8599
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 wpalMemoryCopy( pSendBuffer+usDataOffset,
8601 &halJoinReqMsg.joinReqParams,
8602 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008603
8604 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
8607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8611 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613}/*WDI_ProcessBSSSessionJoinReq*/
8614
8615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008618
8619 @param pWDICtx: pointer to the WLAN DAL context
8620 pEventData: pointer to the event information structure
8621
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 @see
8623 @return Result of the function call
8624*/
8625WDI_Status
8626WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008627(
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 WDI_ControlBlockType* pWDICtx,
8629 WDI_EventInfoType* pEventData
8630)
8631{
8632 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8633 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8634 WDI_JoinRspCb wdiJoinRspCb = NULL;
8635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8636
8637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 -------------------------------------------------------------------------*/
8640 if (( NULL == pEventData ) ||
8641 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8642 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8643 {
8644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008649
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 /*-------------------------------------------------------------------------
8651 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 -------------------------------------------------------------------------*/
8654 wpalMutexAcquire(&pWDICtx->wptMutex);
8655
8656 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8657 {
8658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8659 "Association is currently in progress, queueing new join req");
8660
8661 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pwdiJoinParams->wdiReqInfo.macBSSID);
8664
8665 wpalMutexRelease(&pWDICtx->wptMutex);
8666
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 }
8669
8670 /*Starting a new association */
8671 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8672 wpalMutexRelease(&pWDICtx->wptMutex);
8673
8674 /*Process the Join Request*/
8675 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8676 wdiJoinRspCb,pEventData->pUserData);
8677
8678}/*WDI_ProcessJoinReq*/
8679
8680
8681/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008684
8685 @param pWDICtx: pointer to the WLAN DAL context
8686 pEventData: pointer to the event information structure
8687
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 @see
8689 @return Result of the function call
8690*/
8691WDI_Status
8692WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008693(
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_ControlBlockType* pWDICtx,
8695 WDI_EventInfoType* pEventData
8696)
8697{
8698 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8699 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 wpt_uint16 uMsgSize = 0;
8703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpt_uint16 usDataOffset = 0;
8705 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8710
8711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 -------------------------------------------------------------------------*/
8714 if (( NULL == pEventData ) ||
8715 ( NULL == pEventData->pEventData ) ||
8716 ( NULL == pEventData->pCBfnc ))
8717 {
8718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723
Abhishek Singh6927fa02014-06-27 17:19:55 +05308724 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8726 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8727 /*-------------------------------------------------------------------------
8728 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 -------------------------------------------------------------------------*/
8731 wpalMutexAcquire(&pWDICtx->wptMutex);
8732
8733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8737 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8738 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008739
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 {
8742#ifdef WLAN_FEATURE_VOWIFI_11R
8743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 if ( NULL == pBSSSes )
8748 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008749
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8751 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008752
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008756
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8759 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008761
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8765#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 * Request in case of IBSS*/
8768 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8769 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8770 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8771 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8772 {
8773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 if ( NULL == pBSSSes )
8778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008779
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8781 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008786
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8789 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008791
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8795 }
8796 else
8797 {
8798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8800 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8801 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8802
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 /* for IBSS testing */
8804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 }
8807#endif
8808 }
8809
8810 /*------------------------------------------------------------------------
8811 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 ------------------------------------------------------------------------*/
8814 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8815 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8817 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8818 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8819 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008820
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008822
8823 wpalMutexRelease(&pWDICtx->wptMutex);
8824
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 }
8827
8828 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8830 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 sizeof(pWDICtx->wdiCachedConfigBssReq));
8832
8833 wpalMutexRelease(&pWDICtx->wptMutex);
8834
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8836#ifdef WLAN_FEATURE_11AC
8837 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008838 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 else
8840#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008841 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008842
8843 /*-----------------------------------------------------------------------
8844 Get message buffer
8845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8848 ( usSendSize < (usDataOffset + uMsgSize )))
8849 {
8850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008851 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 }
8856
8857 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008858#ifdef WLAN_FEATURE_11AC
8859 if (WDI_getFwWlanFeatCaps(DOT11AC))
8860 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8861 &pwdiConfigBSSParams->wdiReqInfo);
8862 else
8863#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 &pwdiConfigBSSParams->wdiReqInfo);
8866
8867 /* Need to fill in the STA Index to invalid, since at this point we have not
8868 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870
8871 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8873
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008874#ifdef WLAN_FEATURE_11AC
8875 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8876 wpalMemoryCopy( pSendBuffer+usDataOffset,
8877 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8878 uMsgSize);
8879 }else
8880#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008881 {
8882 if ( uMsgSize <= sizeof(tConfigBssParams) )
8883 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008884 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008885 &halConfigBssReqMsg.uBssParams.configBssParams,
8886 uMsgSize);
8887 }
8888 else
8889 {
8890 return WDI_STATUS_E_FAILURE;
8891 }
8892 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008893
8894 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308896 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8901 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 WDI_CONFIG_BSS_RESP);
8903
8904}/*WDI_ProcessConfigBSSReq*/
8905
8906
8907/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008910
8911 @param pWDICtx: pointer to the WLAN DAL context
8912 pEventData: pointer to the event information structure
8913
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 @see
8915 @return Result of the function call
8916*/
8917WDI_Status
8918WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008919(
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 WDI_ControlBlockType* pWDICtx,
8921 WDI_EventInfoType* pEventData
8922)
8923{
8924 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8925 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 wpt_uint16 usDataOffset = 0;
8930 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8935
8936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 -------------------------------------------------------------------------*/
8939 if (( NULL == pEventData ) ||
8940 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8941 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8942 {
8943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 }
8948
8949 /*-------------------------------------------------------------------------
8950 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 -------------------------------------------------------------------------*/
8953 wpalMutexAcquire(&pWDICtx->wptMutex);
8954
8955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8959 pwdiDelBSSParams->ucBssIdx,
8960 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008961
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 {
8964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 "%s: BSS does not yet exist. ucBssIdx %d",
8966 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008967
8968 wpalMutexRelease(&pWDICtx->wptMutex);
8969
8970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008972
8973 /*------------------------------------------------------------------------
8974 Check if this BSS is being currently processed or queued,
8975 if queued - queue the new request as well
8976 ------------------------------------------------------------------------*/
8977 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8980 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8981 __func__, pwdiDelBSSParams->ucBssIdx);
8982
8983 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8984
8985 wpalMutexRelease(&pWDICtx->wptMutex);
8986
8987 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008989
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 /*-----------------------------------------------------------------------
8991 If we receive a Del BSS request for an association that is already in
8992 progress, it indicates that the assoc has failed => we no longer have
8993 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 -----------------------------------------------------------------------*/
8996 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8997 {
8998 /*We can switch to false here because even if a subsequent Join comes in
8999 it will only be processed when DAL transitions out of BUSY state which
9000 happens when the Del BSS request comes */
9001 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9002
9003 /*Former association is complete - prepare next pending assoc for
9004 processing */
9005 WDI_DequeueAssocRequest(pWDICtx);
9006 }
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halBssReqMsg.deleteBssParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009018 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 /*Fill in the message request structure*/
9025
9026 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009027 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 wpalMemoryCopy( pSendBuffer+usDataOffset,
9030 &halBssReqMsg.deleteBssParams,
9031 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009032
9033 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
Jeff Johnsone7245742012-09-05 17:12:55 -07009036
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9042
Jeff Johnsone7245742012-09-05 17:12:55 -07009043
Jeff Johnson295189b2012-06-20 16:38:30 -07009044}/*WDI_ProcessDelBSSReq*/
9045
9046/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009049
9050 @param pWDICtx: pointer to the WLAN DAL context
9051 pEventData: pointer to the event information structure
9052
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 @see
9054 @return Result of the function call
9055*/
9056WDI_Status
9057WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009058(
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 WDI_ControlBlockType* pWDICtx,
9060 WDI_EventInfoType* pEventData
9061)
9062{
9063 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9064 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 wpt_uint16 usDataOffset = 0;
9069 wpt_uint16 usSendSize = 0;
9070 wpt_uint16 uMsgSize = 0;
9071 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009073
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9076
9077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 -------------------------------------------------------------------------*/
9080 if (( NULL == pEventData ) ||
9081 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9082 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9083 {
9084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 }
9089
9090 /*-------------------------------------------------------------------------
9091 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 -------------------------------------------------------------------------*/
9094 wpalMutexAcquire(&pWDICtx->wptMutex);
9095
9096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9100 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9101 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102
9103 if ( NULL == pBSSSes )
9104 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9106 "%s: Association sequence for this BSS does not yet exist - "
9107 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9108 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009109
9110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 }
9113
9114 /*------------------------------------------------------------------------
9115 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 ------------------------------------------------------------------------*/
9118 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9119 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9121 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9122 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009123
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009125
9126 wpalMutexRelease(&pWDICtx->wptMutex);
9127
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /*-----------------------------------------------------------------------
9132 If Post Assoc was not yet received - the current association must
9133 be in progress
9134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9137 {
9138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9139 "Association sequence for this BSS association no longer in "
9140 "progress - not allowed");
9141
9142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 -----------------------------------------------------------------------*/
9149 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9150 {
9151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9152 "Post Assoc not allowed before JOIN - failing request");
9153
9154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 }
9157
9158 wpalMutexRelease(&pWDICtx->wptMutex);
9159
9160 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9161 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9162 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9167 ( usSendSize < (usDataOffset + uMsgSize )))
9168 {
9169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009170 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
9176 /*Copy the STA parameters */
9177 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9178 &pwdiPostAssocParams->wdiSTAParams );
9179
9180 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 WDI_STATableFindStaidByAddr(pWDICtx,
9183 pwdiPostAssocParams->wdiSTAParams.macSTA,
9184 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9185 {
9186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009187 MAC_ADDRESS_STR
9188 ": This station does not exist in the WDI Station Table",
9189 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009191 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 }
9194
9195 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 pBSSSes->ucBSSIdx;
9198
9199 /*Copy the BSS parameters */
9200 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9201 &pwdiPostAssocParams->wdiBSSParams);
9202
9203 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 WDI_STATableFindStaidByAddr(pWDICtx,
9206 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 {
9209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009210 MAC_ADDRESS_STR
9211 ": This station does not exist in the WDI Station Table",
9212 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009214 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 }
9217
9218 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 pBSSSes->ucBSSIdx;
9221
Jeff Johnsone7245742012-09-05 17:12:55 -07009222
9223 wpalMemoryCopy( pSendBuffer+usDataOffset,
9224 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9225 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009226
9227 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9228
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9230 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9231 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009232
Jeff Johnsone7245742012-09-05 17:12:55 -07009233
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237
9238 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009241
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309242 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9248
Jeff Johnsone7245742012-09-05 17:12:55 -07009249
Jeff Johnson295189b2012-06-20 16:38:30 -07009250}/*WDI_ProcessPostAssocReq*/
9251
9252/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009255
9256 @param pWDICtx: pointer to the WLAN DAL context
9257 pEventData: pointer to the event information structure
9258
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 @see
9260 @return Result of the function call
9261*/
9262WDI_Status
9263WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009264(
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 WDI_ControlBlockType* pWDICtx,
9266 WDI_EventInfoType* pEventData
9267)
9268{
9269 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9270 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpt_uint16 usDataOffset = 0;
9275 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9278
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9281
9282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 -------------------------------------------------------------------------*/
9285 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9286 ( NULL == pEventData->pCBfnc ))
9287 {
9288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
9294 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9295 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9296 /*-------------------------------------------------------------------------
9297 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 -------------------------------------------------------------------------*/
9300 wpalMutexAcquire(&pWDICtx->wptMutex);
9301
9302 /*------------------------------------------------------------------------
9303 Find the BSS for which the request is made and identify WDI session
9304 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9306 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 &macBSSID))
9308 {
9309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009310 "This station does not exist in the WDI Station Table %d",
9311 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 }
9315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9317 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9320 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9321 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009322
9323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 }
9326
9327 /*------------------------------------------------------------------------
9328 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 ------------------------------------------------------------------------*/
9331 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9332 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9334 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9335 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 }
9341
9342 wpalMutexRelease(&pWDICtx->wptMutex);
9343 /*-----------------------------------------------------------------------
9344 Get message buffer
9345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 sizeof(halDelStaReqMsg.delStaParams),
9348 &pSendBuffer, &usDataOffset, &usSendSize))||
9349 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9350 {
9351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009352 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 }
9357
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9359 wpalMemoryCopy( pSendBuffer+usDataOffset,
9360 &halDelStaReqMsg.delStaParams,
9361 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009362
9363 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365
9366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9371
9372}/*WDI_ProcessDelSTAReq*/
9373
9374
9375/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009377==========================================================================*/
9378/**
9379 @brief Process Set BSS Key Request function (called when Main FSM
9380 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009381
9382 @param pWDICtx: pointer to the WLAN DAL context
9383 pEventData: pointer to the event information structure
9384
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 @see
9386 @return Result of the function call
9387*/
9388WDI_Status
9389WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009390(
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 WDI_ControlBlockType* pWDICtx,
9392 WDI_EventInfoType* pEventData
9393)
9394{
9395 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9396 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 wpt_uint16 usDataOffset = 0;
9401 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9404 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309405 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406
9407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9408
9409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 -------------------------------------------------------------------------*/
9412 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9413 ( NULL == pEventData->pCBfnc ))
9414 {
9415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 }
9420
9421 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9422 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9423 /*-------------------------------------------------------------------------
9424 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 -------------------------------------------------------------------------*/
9427 wpalMutexAcquire(&pWDICtx->wptMutex);
9428
9429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9433 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9434 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009435
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9440 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009441
9442 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 }
9445
9446 /*------------------------------------------------------------------------
9447 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 ------------------------------------------------------------------------*/
9450 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9451 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9453 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9454 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 }
9460
9461
9462 wpalMutexRelease(&pWDICtx->wptMutex);
9463 /*-----------------------------------------------------------------------
9464 Get message buffer
9465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9468 &pSendBuffer, &usDataOffset, &usSendSize))||
9469 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9470 {
9471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009472 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478 /*-----------------------------------------------------------------------
9479 Copy the Key parameters into the HAL message
9480 -----------------------------------------------------------------------*/
9481
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9489
9490 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9491 keyIndex++)
9492 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9495 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9496 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9497 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9498 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309499
9500 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9501 {
9502 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9503 {
9504 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9505 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9506 }
9507
9508 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9509 {
9510 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9511 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9512 }
9513
9514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9515 "%s: Negated Keys", __func__);
9516 }
9517 else
9518 {
9519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9520 "%s: No change in Keys", __func__);
9521 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309524 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9525 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9526 WDI_MAX_KEY_LENGTH);
9527 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309532 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009533
9534 wpalMemoryCopy( pSendBuffer+usDataOffset,
9535 &halSetBssKeyReqMsg.setBssKeyParams,
9536 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009537
9538 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
9541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9545 wdiSetBSSKeyRspCb, pEventData->pUserData,
9546 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009547
9548}/*WDI_ProcessSetBssKeyReq*/
9549
9550/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009553
9554 @param pWDICtx: pointer to the WLAN DAL context
9555 pEventData: pointer to the event information structure
9556
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 @see
9558 @return Result of the function call
9559*/
9560WDI_Status
9561WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009562(
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 WDI_ControlBlockType* pWDICtx,
9564 WDI_EventInfoType* pEventData
9565)
9566{
9567 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9568 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 wpt_uint16 usDataOffset = 0;
9573 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9577
9578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 -------------------------------------------------------------------------*/
9581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9582 ( NULL == pEventData->pCBfnc ))
9583 {
9584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 }
9589
9590 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9591 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9592 /*-------------------------------------------------------------------------
9593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
9596 wpalMutexAcquire(&pWDICtx->wptMutex);
9597
9598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9602 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9603 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 {
9607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9609 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
9611 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 }
9614
9615 /*------------------------------------------------------------------------
9616 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 ------------------------------------------------------------------------*/
9619 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9620 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9622 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9623 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009624
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 }
9629
9630
9631 wpalMutexRelease(&pWDICtx->wptMutex);
9632
9633 /*-----------------------------------------------------------------------
9634 Get message buffer
9635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9638 &pSendBuffer, &usDataOffset, &usSendSize))||
9639 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9640 {
9641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009642 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 }
9647 /*-----------------------------------------------------------------------
9648 Copy the Key parameters into the HAL message
9649 -----------------------------------------------------------------------*/
9650 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9651
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9654
9655 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9656
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 wpalMemoryCopy( pSendBuffer+usDataOffset,
9661 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9662 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009663
9664 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009666
9667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673}/*WDI_ProcessRemoveBssKeyReq*/
9674
9675/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009678
9679 @param pWDICtx: pointer to the WLAN DAL context
9680 pEventData: pointer to the event information structure
9681
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 @see
9683 @return Result of the function call
9684*/
9685WDI_Status
9686WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009687(
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 WDI_ControlBlockType* pWDICtx,
9689 WDI_EventInfoType* pEventData
9690)
9691{
9692 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9693 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpt_uint16 usDataOffset = 0;
9697 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9702 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309703 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704
9705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9706
9707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 -------------------------------------------------------------------------*/
9710 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9711 ( NULL == pEventData->pCBfnc ))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 }
9718
9719 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9720 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9721 /*-------------------------------------------------------------------------
9722 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 -------------------------------------------------------------------------*/
9725 wpalMutexAcquire(&pWDICtx->wptMutex);
9726
9727 /*------------------------------------------------------------------------
9728 Find the BSS for which the request is made and identify WDI session
9729 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9731 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 &macBSSID))
9733 {
9734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009735 "This station does not exist in the WDI Station Table %d",
9736 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 }
9740
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9742 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9745 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9746 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009747
9748 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009751
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 /*------------------------------------------------------------------------
9753 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 ------------------------------------------------------------------------*/
9756 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9757 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9759 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9760 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009761
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
9767
9768 wpalMutexRelease(&pWDICtx->wptMutex);
9769 /*-----------------------------------------------------------------------
9770 Get message buffer
9771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9774 &pSendBuffer, &usDataOffset, &usSendSize))||
9775 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9776 {
9777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009778 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 }
9783 /*-----------------------------------------------------------------------
9784 Copy the STA Key parameters into the HAL message
9785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9788
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9791
9792 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9793
9794 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9795
9796 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9797
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9799 keyIndex++)
9800 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9803 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9804 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9805 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9806 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309807
9808 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9809 {
9810 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9811 {
9812 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9813 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9814 }
9815
9816 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9817 {
9818 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9819 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9820 }
9821
9822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9823 "%s: Negated Keys", __func__);
9824 }
9825 else
9826 {
9827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9828 "%s: No change in Keys", __func__);
9829 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309832 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9833 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9834 WDI_MAX_KEY_LENGTH);
9835 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309840 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 wpalMemoryCopy( pSendBuffer+usDataOffset,
9843 &halSetStaKeyReqMsg.setStaKeyParams,
9844 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009845
9846 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309848 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9853 wdiSetSTAKeyRspCb, pEventData->pUserData,
9854 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009855
9856}/*WDI_ProcessSetSTAKeyReq*/
9857
9858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009861
9862 @param pWDICtx: pointer to the WLAN DAL context
9863 pEventData: pointer to the event information structure
9864
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 @see
9866 @return Result of the function call
9867*/
9868WDI_Status
9869WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009870(
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_ControlBlockType* pWDICtx,
9872 WDI_EventInfoType* pEventData
9873)
9874{
9875 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9876 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9877 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpt_uint16 usDataOffset = 0;
9880 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 wpt_macAddr macBSSID;
9883 wpt_uint8 ucCurrentBSSSesIdx;
9884 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9886
9887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 -------------------------------------------------------------------------*/
9890 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9891 ( NULL == pEventData->pCBfnc ))
9892 {
9893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 }
9898
9899 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9900 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9901 /*-------------------------------------------------------------------------
9902 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 -------------------------------------------------------------------------*/
9905 wpalMutexAcquire(&pWDICtx->wptMutex);
9906
9907 /*------------------------------------------------------------------------
9908 Find the BSS for which the request is made and identify WDI session
9909 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9911 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 &macBSSID))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009915 "This station does not exist in the WDI Station Table %d",
9916 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 }
9920
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9922 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9925 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9926 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009927
9928 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009931
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 /*------------------------------------------------------------------------
9933 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 ------------------------------------------------------------------------*/
9936 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9937 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9939 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9940 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 }
9946
9947
9948
9949 wpalMutexRelease(&pWDICtx->wptMutex);
9950 /*-----------------------------------------------------------------------
9951 Get message buffer
9952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9955 &pSendBuffer, &usDataOffset, &usSendSize))||
9956 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9957 {
9958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009959 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 }
9964
9965 /*-----------------------------------------------------------------------
9966 Copy the Key parameters into the HAL message
9967 -----------------------------------------------------------------------*/
9968
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9971
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9977
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 wpalMemoryCopy( pSendBuffer+usDataOffset,
9982 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9983 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
9985 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
9988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009994
9995}/*WDI_ProcessRemoveSTAKeyReq*/
9996
9997/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010000
10001 @param pWDICtx: pointer to the WLAN DAL context
10002 pEventData: pointer to the event information structure
10003
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 @see
10005 @return Result of the function call
10006*/
10007WDI_Status
10008WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010009(
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 WDI_ControlBlockType* pWDICtx,
10011 WDI_EventInfoType* pEventData
10012)
10013{
10014 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10015 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10016 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 wpt_uint16 usDataOffset = 0;
10019 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10024 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010025 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026
10027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10028
10029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 -------------------------------------------------------------------------*/
10032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10033 ( NULL == pEventData->pCBfnc ))
10034 {
10035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 }
10040
10041 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10042 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10043 /*-------------------------------------------------------------------------
10044 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 -------------------------------------------------------------------------*/
10047 wpalMutexAcquire(&pWDICtx->wptMutex);
10048
10049 /*------------------------------------------------------------------------
10050 Find the BSS for which the request is made and identify WDI session
10051 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10053 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 &macBSSID))
10055 {
10056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010057 "This station does not exist in the WDI Station Table %d",
10058 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 }
10062
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10064 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 {
10066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010067 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010069
10070 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010073
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 /*------------------------------------------------------------------------
10075 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 ------------------------------------------------------------------------*/
10078 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10079 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10081 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10082 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010083
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 }
10088
10089
10090 wpalMutexRelease(&pWDICtx->wptMutex);
10091 /*-----------------------------------------------------------------------
10092 Get message buffer
10093 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10096 &pSendBuffer, &usDataOffset, &usSendSize))||
10097 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10098 {
10099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010100 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 }
10105 /*-----------------------------------------------------------------------
10106 Copy the STA Key parameters into the HAL message
10107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10110
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10113
10114 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10115
10116 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10117
10118 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10119
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10121 keyIndex++)
10122 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10125 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10126 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10127 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10128 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010129
10130 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10131 {
10132 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10133 {
10134 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10135 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10136 }
10137
10138 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10139 {
10140 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10141 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10142 }
10143
10144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10145 "%s: Negated Keys", __func__);
10146 }
10147 else
10148 {
10149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10150 "%s: No change in Keys", __func__);
10151 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010154 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10156 WDI_MAX_KEY_LENGTH);
10157 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 wpalMemoryCopy( pSendBuffer+usDataOffset,
10164 &halSetStaKeyReqMsg.setStaKeyParams,
10165 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010166
10167 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169
10170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10174 wdiSetSTAKeyRspCb, pEventData->pUserData,
10175 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176
10177}/*WDI_ProcessSetSTABcastKeyReq*/
10178
10179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010182
10183 @param pWDICtx: pointer to the WLAN DAL context
10184 pEventData: pointer to the event information structure
10185
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 @see
10187 @return Result of the function call
10188*/
10189WDI_Status
10190WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010191(
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 WDI_ControlBlockType* pWDICtx,
10193 WDI_EventInfoType* pEventData
10194)
10195{
10196 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10197 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10198 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 wpt_uint16 usDataOffset = 0;
10201 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 wpt_macAddr macBSSID;
10204 wpt_uint8 ucCurrentBSSSesIdx;
10205 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10207
10208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 -------------------------------------------------------------------------*/
10211 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10212 ( NULL == pEventData->pCBfnc ))
10213 {
10214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 }
10219
10220 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10221 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10222 /*-------------------------------------------------------------------------
10223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 -------------------------------------------------------------------------*/
10226 wpalMutexAcquire(&pWDICtx->wptMutex);
10227
10228 /*------------------------------------------------------------------------
10229 Find the BSS for which the request is made and identify WDI session
10230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10232 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 &macBSSID))
10234 {
10235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010236 "This station does not exist in the WDI Station Table %d",
10237 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 }
10241
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10243 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10246 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10247 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010248
10249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010252
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 /*------------------------------------------------------------------------
10254 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 ------------------------------------------------------------------------*/
10257 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10258 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10260 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010262
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 }
10267
10268
10269
10270 wpalMutexRelease(&pWDICtx->wptMutex);
10271 /*-----------------------------------------------------------------------
10272 Get message buffer
10273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10276 &pSendBuffer, &usDataOffset, &usSendSize))||
10277 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10278 {
10279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010280 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 }
10285
10286 /*-----------------------------------------------------------------------
10287 Copy the Key parameters into the HAL message
10288 -----------------------------------------------------------------------*/
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10292
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10295
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10298
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10301
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 wpalMemoryCopy( pSendBuffer+usDataOffset,
10303 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10304 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010305
10306 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308
10309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010315
10316}/*WDI_ProcessRemoveSTABcastKeyReq*/
10317
10318/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010320==========================================================================*/
10321/**
10322 @brief Process Add TSpec Request function (called when Main FSM
10323 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010324
10325 @param pWDICtx: pointer to the WLAN DAL context
10326 pEventData: pointer to the event information structure
10327
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 @see
10329 @return Result of the function call
10330*/
10331WDI_Status
10332WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010333(
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 WDI_ControlBlockType* pWDICtx,
10335 WDI_EventInfoType* pEventData
10336)
10337{
10338 WDI_AddTSReqParamsType* pwdiAddTSParams;
10339 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpt_uint16 usDataOffset = 0;
10344 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpt_macAddr macBSSID;
10347 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010348
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10350
10351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 -------------------------------------------------------------------------*/
10354 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10355 ( NULL == pEventData->pCBfnc ))
10356 {
10357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 }
10362
10363 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10364 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10365 /*-------------------------------------------------------------------------
10366 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 -------------------------------------------------------------------------*/
10369 wpalMutexAcquire(&pWDICtx->wptMutex);
10370
10371 /*------------------------------------------------------------------------
10372 Find the BSS for which the request is made and identify WDI session
10373 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10375 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 &macBSSID))
10377 {
10378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010379 "This station does not exist in the WDI Station Table %d",
10380 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 }
10384
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10386 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10389 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10390 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
10392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010395
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 /*------------------------------------------------------------------------
10397 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 ------------------------------------------------------------------------*/
10400 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10401 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10403 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10404 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010405
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 }
10410
10411 wpalMutexRelease(&pWDICtx->wptMutex);
10412 /*-----------------------------------------------------------------------
10413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10417 sizeof(halAddTsParams),
10418 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 &usSendSize))||
10420 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10421 {
10422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010423 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 }
10428
10429 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10430 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10431
10432 //TSPEC IE
10433 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10434 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010457 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010458 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10465
10466 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10481
10482 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10487
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 wpalMemoryCopy( pSendBuffer+usDataOffset,
10489 &halAddTsParams,
10490 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010491
10492 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
10495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010501}/*WDI_ProcessAddTSpecReq*/
10502
10503
10504/**
10505 @brief Process Del TSpec Request function (called when Main FSM
10506 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010507
10508 @param pWDICtx: pointer to the WLAN DAL context
10509 pEventData: pointer to the event information structure
10510
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 @see
10512 @return Result of the function call
10513*/
10514WDI_Status
10515WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010516(
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 WDI_ControlBlockType* pWDICtx,
10518 WDI_EventInfoType* pEventData
10519)
10520{
10521 WDI_DelTSReqParamsType* pwdiDelTSParams;
10522 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 wpt_uint16 usDataOffset = 0;
10527 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10530
10531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 -------------------------------------------------------------------------*/
10534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10535 ( NULL == pEventData->pCBfnc ))
10536 {
10537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 }
10542
10543 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10544 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10545
10546 /*-------------------------------------------------------------------------
10547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 -------------------------------------------------------------------------*/
10550 wpalMutexAcquire(&pWDICtx->wptMutex);
10551
10552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10556 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010558
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10563 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10564
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 }
10568
10569 /*------------------------------------------------------------------------
10570 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 ------------------------------------------------------------------------*/
10573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10577 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010578
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 }
10583
10584
10585 wpalMutexRelease(&pWDICtx->wptMutex);
10586 /*-----------------------------------------------------------------------
10587 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010591 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10592 &pSendBuffer, &usDataOffset, &usSendSize))||
10593 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10594 {
10595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010596 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 }
10601
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 wpalMemoryCopy( pSendBuffer+usDataOffset,
10603 &pwdiDelTSParams->wdiDelTSInfo,
10604 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010605
10606 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608
10609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10613 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010614}/*WDI_ProcessDelTSpecReq*/
10615
10616/**
10617 @brief Process Update EDCA Params Request function (called when
10618 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010619
10620 @param pWDICtx: pointer to the WLAN DAL context
10621 pEventData: pointer to the event information structure
10622
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 @see
10624 @return Result of the function call
10625*/
10626WDI_Status
10627WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010628(
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_ControlBlockType* pWDICtx,
10630 WDI_EventInfoType* pEventData
10631)
10632{
10633 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10634 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 wpt_uint16 usDataOffset = 0;
10639 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10642
10643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 -------------------------------------------------------------------------*/
10646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10647 ( NULL == pEventData->pCBfnc ))
10648 {
10649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 }
10654
10655 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10656 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10657 /*-------------------------------------------------------------------------
10658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 -------------------------------------------------------------------------*/
10661 wpalMutexAcquire(&pWDICtx->wptMutex);
10662
10663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10667 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10668 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 {
10672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10674 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010675
10676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 }
10679
10680 /*------------------------------------------------------------------------
10681 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 ------------------------------------------------------------------------*/
10684 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10685 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10687 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10688 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 }
10694
10695
10696 wpalMutexRelease(&pWDICtx->wptMutex);
10697 /*-----------------------------------------------------------------------
10698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10703 &pSendBuffer, &usDataOffset, &usSendSize))||
10704 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10705 {
10706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010707 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 }
10712
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 wpalMemoryCopy( pSendBuffer+usDataOffset,
10714 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10715 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010716
10717 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010719
10720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10724 wdiUpdateEDCARspCb, pEventData->pUserData,
10725 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010726}/*WDI_ProcessUpdateEDCAParamsReq*/
10727
10728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
10732 @param pWDICtx: pointer to the WLAN DAL context
10733 pEventData: pointer to the event information structure
10734
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 @see
10736 @return Result of the function call
10737*/
10738WDI_Status
10739WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010740(
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 WDI_ControlBlockType* pWDICtx,
10742 WDI_EventInfoType* pEventData
10743)
10744{
10745 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10746 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 wpt_uint16 usDataOffset = 0;
10751 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_macAddr macBSSID;
10754
10755 tAddBASessionReqMsg halAddBASessionReq;
10756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10757
10758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 -------------------------------------------------------------------------*/
10761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10762 ( NULL == pEventData->pCBfnc ))
10763 {
10764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10774 /*-------------------------------------------------------------------------
10775 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010776 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010777 -------------------------------------------------------------------------*/
10778 wpalMutexAcquire(&pWDICtx->wptMutex);
10779
10780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10784 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 &macBSSID))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010788 "This station does not exist in the WDI Station Table %d",
10789 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 }
10793
10794
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010796
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10800 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10801 __func__, MAC_ADDR_ARRAY(macBSSID));
10802
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 }
10806
10807 /*------------------------------------------------------------------------
10808 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 ------------------------------------------------------------------------*/
10811 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10814 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822
10823 wpalMutexRelease(&pWDICtx->wptMutex);
10824 /*-----------------------------------------------------------------------
10825 Get message buffer
10826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10828 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(halAddBASessionReq.addBASessionParams),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10833 {
10834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010835 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 }
10840
10841 halAddBASessionReq.addBASessionParams.staIdx =
10842 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10843 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10844 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10845 WDI_MAC_ADDR_LEN);
10846 halAddBASessionReq.addBASessionParams.baTID =
10847 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10848 halAddBASessionReq.addBASessionParams.baPolicy =
10849 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10850 halAddBASessionReq.addBASessionParams.baBufferSize =
10851 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10852 halAddBASessionReq.addBASessionParams.baTimeout =
10853 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10854 halAddBASessionReq.addBASessionParams.baSSN =
10855 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10856 halAddBASessionReq.addBASessionParams.baDirection =
10857 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 wpalMemoryCopy( pSendBuffer+usDataOffset,
10860 &halAddBASessionReq.addBASessionParams,
10861 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010862
10863 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10870 wdiAddBASessionRspCb, pEventData->pUserData,
10871 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872}/*WDI_ProcessAddBASessionReq*/
10873
10874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010877
10878 @param pWDICtx: pointer to the WLAN DAL context
10879 pEventData: pointer to the event information structure
10880
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 @see
10882 @return Result of the function call
10883*/
10884WDI_Status
10885WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010886(
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 WDI_ControlBlockType* pWDICtx,
10888 WDI_EventInfoType* pEventData
10889)
10890{
10891 WDI_DelBAReqParamsType* pwdiDelBAParams;
10892 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpt_uint16 usDataOffset = 0;
10897 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 wpt_macAddr macBSSID;
10900 tDelBAParams halDelBAparam;
10901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10902
10903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 -------------------------------------------------------------------------*/
10906 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10907 ( NULL == pEventData->pCBfnc ))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 }
10914
10915 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10916 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10917 /*-------------------------------------------------------------------------
10918 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 -------------------------------------------------------------------------*/
10921 wpalMutexAcquire(&pWDICtx->wptMutex);
10922
10923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10927 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 &macBSSID))
10929 {
10930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010931 "This station does not exist in the WDI Station Table %d",
10932 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 }
10936
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010944
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
10949 /*------------------------------------------------------------------------
10950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
10953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010958
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963
10964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 sizeof(halDelBAparam),
10967 &pSendBuffer, &usDataOffset, &usSendSize))||
10968 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10969 {
10970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010971 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 }
10976
10977 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10978 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10979 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10980
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 wpalMemoryCopy( pSendBuffer+usDataOffset,
10982 &halDelBAparam,
10983 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010984
10985 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010987
10988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10992 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010993}/*WDI_ProcessDelBAReq*/
10994
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010995#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010996
10997WDI_Status
10998WDI_ProcessTSMStatsReq
10999(
11000 WDI_ControlBlockType* pWDICtx,
11001 WDI_EventInfoType* pEventData
11002)
11003{
11004 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11005 WDI_TsmRspCb wdiTSMRspCb;
11006 wpt_uint8 ucCurrentBSSSesIdx = 0;
11007 WDI_BSSSessionType* pBSSSes = NULL;
11008 wpt_uint8* pSendBuffer = NULL;
11009 wpt_uint16 usDataOffset = 0;
11010 wpt_uint16 usSendSize = 0;
11011 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11012 tTsmStatsParams halTsmStatsReqParams = {0};
11013
11014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11015
11016 /*-------------------------------------------------------------------------
11017 Sanity check
11018 -------------------------------------------------------------------------*/
11019 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11020 ( NULL == pEventData->pCBfnc ))
11021 {
11022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 WDI_ASSERT(0);
11025 return WDI_STATUS_E_FAILURE;
11026 }
11027
11028 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11029 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11030 /*-------------------------------------------------------------------------
11031 Check to see if we are in the middle of an association, if so queue, if
11032 not it means it is free to process request
11033 -------------------------------------------------------------------------*/
11034 wpalMutexAcquire(&pWDICtx->wptMutex);
11035
11036 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11037 if ( NULL == pBSSSes )
11038 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11040 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11041 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011042
11043 wpalMutexRelease(&pWDICtx->wptMutex);
11044 return WDI_STATUS_E_NOT_ALLOWED;
11045 }
11046
11047 /*------------------------------------------------------------------------
11048 Check if this BSS is being currently processed or queued,
11049 if queued - queue the new request as well
11050 ------------------------------------------------------------------------*/
11051 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11052 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011054 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011056
11057 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11058 wpalMutexRelease(&pWDICtx->wptMutex);
11059 return wdiStatus;
11060 }
11061
11062 wpalMutexRelease(&pWDICtx->wptMutex);
11063 /*-----------------------------------------------------------------------
11064 Get message buffer
11065 ! TO DO : proper conversion into the HAL Message Request Format
11066 -----------------------------------------------------------------------*/
11067 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11068 sizeof(halTsmStatsReqParams),
11069 &pSendBuffer, &usDataOffset, &usSendSize))||
11070 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11071 {
11072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011073 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 pEventData, pwdiTSMParams, wdiTSMRspCb);
11075 WDI_ASSERT(0);
11076 return WDI_STATUS_E_FAILURE;
11077 }
11078
11079 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11080 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11081 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11082 WDI_MAC_ADDR_LEN);
11083 wpalMemoryCopy( pSendBuffer+usDataOffset,
11084 &halTsmStatsReqParams,
11085 sizeof(halTsmStatsReqParams));
11086
11087 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11088 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11089
11090 /*-------------------------------------------------------------------------
11091 Send TSM Stats Request to HAL
11092 -------------------------------------------------------------------------*/
11093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11094 wdiTSMRspCb, pEventData->pUserData,
11095 WDI_TSM_STATS_RESP);
11096}/*WDI_ProcessTSMStatsReq*/
11097
11098#endif
11099
11100
11101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011113(
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11119 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 wpt_uint16 usDataOffset = 0;
11122 wpt_uint16 usSendSize = 0;
11123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11124
11125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 -------------------------------------------------------------------------*/
11128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11129 ( NULL == pEventData->pCBfnc ))
11130 {
11131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 }
11136
11137 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11138 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11139 /*-----------------------------------------------------------------------
11140 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011144 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11145 &pSendBuffer, &usDataOffset, &usSendSize))||
11146 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11147 {
11148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011149 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 }
11154
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 wpalMemoryCopy( pSendBuffer+usDataOffset,
11156 &pwdiFlushAcParams->wdiFlushAcInfo,
11157 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011158
11159 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011161
11162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11166 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167}/*WDI_ProcessFlushAcReq*/
11168
11169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011172
11173 @param pWDICtx: pointer to the WLAN DAL context
11174 pEventData: pointer to the event information structure
11175
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 @see
11177 @return Result of the function call
11178*/
11179WDI_Status
11180WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011181(
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 WDI_ControlBlockType* pWDICtx,
11183 WDI_EventInfoType* pEventData
11184)
11185{
11186 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11187 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 wpt_uint16 usDataOffset = 0;
11190 wpt_uint16 usSendSize = 0;
11191
11192 tBtAmpEventMsg haltBtAmpEventMsg;
11193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11194
11195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 -------------------------------------------------------------------------*/
11198 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11199 ( NULL == pEventData->pCBfnc ))
11200 {
11201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 }
11206
11207 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11208 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11209 /*-----------------------------------------------------------------------
11210 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11215 &pSendBuffer, &usDataOffset, &usSendSize))||
11216 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11217 {
11218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011219 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 }
11224
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 wpalMemoryCopy( pSendBuffer+usDataOffset,
11228 &haltBtAmpEventMsg.btAmpEventParams,
11229 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011230
11231 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233
11234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11238 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011239}/*WDI_ProcessBtAmpEventReq*/
11240
11241/**
11242 @brief Process Add STA self Request function (called when Main FSM
11243 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011244
11245 @param pWDICtx: pointer to the WLAN DAL context
11246 pEventData: pointer to the event information structure
11247
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 @see
11249 @return Result of the function call
11250*/
11251WDI_Status
11252WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011253(
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 WDI_ControlBlockType* pWDICtx,
11255 WDI_EventInfoType* pEventData
11256)
11257{
11258 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11259 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 wpt_uint16 usDataOffset = 0;
11262 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011263 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11265
11266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 -------------------------------------------------------------------------*/
11269 if (( NULL == pEventData ) ||
11270 ( NULL == pEventData->pEventData) ||
11271 ( NULL == pEventData->pCBfnc))
11272 {
11273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 }
11278
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11283 /*-----------------------------------------------------------------------
11284 Get message buffer
11285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11287 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011288 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011290 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 {
11292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011293 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 }
11298
11299 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11302
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011304 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11305 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11306 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11307 {
11308 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11309 }
11310 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11311 VOS_P2P_CLIENT_MODE) ||
11312 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11313 VOS_P2P_DEVICE))
11314 {
11315 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11316 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011318 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011319
11320 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011322
11323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11327 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11328 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011329}/*WDI_ProcessAddSTASelfReq*/
11330
11331
11332
11333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011336
11337 @param pWDICtx: pointer to the WLAN DAL context
11338 pEventData: pointer to the event information structure
11339
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 @see
11341 @return Result of the function call
11342*/
11343WDI_Status
11344WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011345(
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 WDI_ControlBlockType* pWDICtx,
11347 WDI_EventInfoType* pEventData
11348)
11349{
11350 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11351 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 wpt_uint16 usDataOffset = 0;
11354 wpt_uint16 usSendSize = 0;
11355 tDelStaSelfParams halSetDelSelfSTAParams;
11356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11357
11358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 -------------------------------------------------------------------------*/
11361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11362 ( NULL == pEventData->pCBfnc ))
11363 {
11364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 }
11369
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11372 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11373
11374 /*-----------------------------------------------------------------------
11375 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11380 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11383 {
11384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011385 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 }
11390
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11393
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11395 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011396
11397 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011399
11400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11404 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 WDI_DEL_STA_SELF_RESP);
11406
11407}
11408
Jeff Johnsone7245742012-09-05 17:12:55 -070011409#ifdef FEATURE_OEM_DATA_SUPPORT
11410/**
11411 @brief Process Start Oem Data Request function (called when Main
11412 FSM allows it)
11413
11414 @param pWDICtx: pointer to the WLAN DAL context
11415 pEventData: pointer to the event information structure
11416
11417 @see
11418 @return Result of the function call
11419*/
11420WDI_Status
11421WDI_ProcessStartOemDataReq
11422(
11423 WDI_ControlBlockType* pWDICtx,
11424 WDI_EventInfoType* pEventData
11425)
11426{
11427 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11428 WDI_oemDataRspCb wdiOemDataRspCb;
11429 wpt_uint8* pSendBuffer = NULL;
11430 wpt_uint16 usDataOffset = 0;
11431 wpt_uint16 usSendSize = 0;
11432 wpt_uint16 reqLen;
11433 tStartOemDataReqParams* halStartOemDataReqParams;
11434
11435 /*-------------------------------------------------------------------------
11436 Sanity check
11437 -------------------------------------------------------------------------*/
11438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11439 ( NULL == pEventData->pCBfnc ))
11440 {
11441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011442 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 WDI_ASSERT(0);
11444 return WDI_STATUS_E_FAILURE;
11445 }
11446
11447 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11448 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11449
11450 /*-----------------------------------------------------------------------
11451 Get message buffer
11452 -----------------------------------------------------------------------*/
11453
11454 reqLen = sizeof(tStartOemDataReqParams);
11455
11456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11457 WDI_START_OEM_DATA_REQ, reqLen,
11458 &pSendBuffer, &usDataOffset, &usSendSize))||
11459 (usSendSize < (usDataOffset + reqLen)))
11460 {
11461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011462 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11464 WDI_ASSERT(0);
11465 return WDI_STATUS_E_FAILURE;
11466 }
11467
11468 //copying WDI OEM DATA REQ PARAMS to shared memory
11469 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11470
11471 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11472 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11473
11474 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11475 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11476
11477 /*-------------------------------------------------------------------------
11478 Send Start Request to HAL
11479 -------------------------------------------------------------------------*/
11480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11481 wdiOemDataRspCb, pEventData->pUserData,
11482 WDI_START_OEM_DATA_RESP);
11483}/*WDI_ProcessStartOemDataReq*/
11484#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011485
11486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011489
11490 @param pWDICtx: pointer to the WLAN DAL context
11491 pEventData: pointer to the event information structure
11492
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 @see
11494 @return Result of the function call
11495*/
11496WDI_Status
11497WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011498(
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 WDI_ControlBlockType* pWDICtx,
11500 WDI_EventInfoType* pEventData
11501)
11502{
11503 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11504 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 wpt_uint16 usDataOffset = 0;
11507 wpt_uint16 usSendSize = 0;
11508 tHalWlanHostResumeReqParam halResumeReqParams;
11509
11510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11511
11512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 -------------------------------------------------------------------------*/
11515 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11516 ( NULL == pEventData->pCBfnc ))
11517 {
11518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011519 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 }
11523
11524 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11525 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11526
11527 /*-----------------------------------------------------------------------
11528 Get message buffer
11529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11532 &pSendBuffer, &usDataOffset, &usSendSize))||
11533 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011536 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 }
11541
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011544
11545 wpalMemoryCopy( pSendBuffer+usDataOffset,
11546 &halResumeReqParams,
11547 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011548
11549 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551
11552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11556 wdiHostResumeRspCb, pEventData->pUserData,
11557 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011558}/*WDI_ProcessHostResumeReq*/
11559
11560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011563
11564 @param pWDICtx: pointer to the WLAN DAL context
11565 pEventData: pointer to the event information structure
11566
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 @see
11568 @return Result of the function call
11569*/
11570WDI_Status
11571WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011572(
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 WDI_ControlBlockType* pWDICtx,
11574 WDI_EventInfoType* pEventData
11575)
11576{
11577 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11578 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 wpt_uint16 usDataOffset = 0;
11581 wpt_uint16 usSendSize = 0;
11582 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11584
11585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 -------------------------------------------------------------------------*/
11588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11589 ( NULL == pEventData->pCBfnc ))
11590 {
11591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011592 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 }
11596
11597 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11598 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011599
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 /*-----------------------------------------------------------------------
11601 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 sizeof(halTxPerTrackingReqParam),
11606 &pSendBuffer, &usDataOffset, &usSendSize))||
11607 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11608 {
11609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011610 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011615
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11617 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11618 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11619 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011620
11621 wpalMemoryCopy( pSendBuffer+usDataOffset,
11622 &halTxPerTrackingReqParam,
11623 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011624
11625 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011627
11628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11632 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011633}/*WDI_ProcessSetTxPerTrackingReq*/
11634
11635/*=========================================================================
11636 Indications
11637=========================================================================*/
11638
11639/**
11640 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011641
11642 @param pWDICtx: pointer to the WLAN DAL context
11643 pEventData: pointer to the event information structure
11644
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 @see
11646 @return Result of the function call
11647*/
11648WDI_Status
11649WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011650(
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ControlBlockType* pWDICtx,
11652 WDI_EventInfoType* pEventData
11653)
11654{
11655 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 wpt_uint16 usDataOffset = 0;
11658 wpt_uint16 usSendSize = 0;
11659 WDI_Status wdiStatus;
11660 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11662
11663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 -------------------------------------------------------------------------*/
11666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11667 {
11668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011669 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 }
11673
11674 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11675
11676 /*-----------------------------------------------------------------------
11677 Get message buffer
11678 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11680 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 sizeof(halWlanSuspendIndparams),
11682 &pSendBuffer, &usDataOffset, &usSendSize))||
11683 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11684 {
11685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11686 "Unable to get send buffer in Suspend Ind ");
11687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011689 }
11690
11691 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11692 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11693
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011695 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011696
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11698 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
11700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 -------------------------------------------------------------------------*/
11703 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011705
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11708}/*WDI_ProcessHostSuspendInd*/
11709
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011710
11711
11712/**
11713 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11714
11715 @param pWDICtx: pointer to the WLAN DAL context
11716 pEventData: pointer to the event information structure
11717
11718 @see
11719 @return Result of the function call
11720*/
11721WDI_Status
11722WDI_ProcessTrafficStatsInd
11723(
11724 WDI_ControlBlockType* pWDICtx,
11725 WDI_EventInfoType* pEventData
11726)
11727{
11728 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11729 wpt_uint8* pSendBuffer = NULL;
11730 wpt_uint16 usDataOffset = 0;
11731 wpt_uint16 usSendSize = 0;
11732 WDI_Status wdiStatus;
11733 tStatsClassBIndParams* pStatsClassBIndParams;
11734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11735
11736 /*-------------------------------------------------------------------------
11737 Sanity check
11738 -------------------------------------------------------------------------*/
11739 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11740 {
11741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11742 "%s: Invalid parameters in Traffic Stats ind",__func__);
11743 WDI_ASSERT(0);
11744 return WDI_STATUS_E_FAILURE;
11745 }
11746
11747 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11748
11749 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11750 {
11751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11752 "%s: Invalid parameters in Traffic Stats ind",__func__);
11753 WDI_ASSERT(0);
11754 return WDI_STATUS_E_FAILURE;
11755 }
11756
11757 /*-----------------------------------------------------------------------
11758 Get message buffer
11759 -----------------------------------------------------------------------*/
11760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11761 WDI_TRAFFIC_STATS_IND,
11762 sizeof(tStatsClassBIndParams),
11763 &pSendBuffer, &usDataOffset, &usSendSize))||
11764 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11765 {
11766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11767 "Unable to get send buffer in Traffic Stats Ind ");
11768 WDI_ASSERT(0);
11769 return WDI_STATUS_E_FAILURE;
11770 }
11771
11772 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11773
11774 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11775
11776 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11777 pTrafficStatsIndParams->pTrafficStats,
11778 pTrafficStatsIndParams->length);
11779
11780 /*-------------------------------------------------------------------------
11781 Send Suspend Request to HAL
11782 -------------------------------------------------------------------------*/
11783 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11784 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11785
11786 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11787 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11788}/*WDI_ProcessTrafficStatsInd*/
11789
Chet Lanctot186b5732013-03-18 10:26:30 -070011790#ifdef WLAN_FEATURE_11W
11791/**
11792 @brief Process Exclude Unencrypted Indications function (called
11793 when Main FSM allows it)
11794
11795 @param pWDICtx: pointer to the WLAN DAL context
11796 pEventData: pointer to the event information structure
11797
11798 @see
11799 @return Result of the function call
11800*/
11801WDI_Status
11802WDI_ProcessExcludeUnencryptInd
11803(
11804 WDI_ControlBlockType* pWDICtx,
11805 WDI_EventInfoType* pEventData
11806)
11807{
11808 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11809 wpt_uint8* pSendBuffer = NULL;
11810 wpt_uint16 usDataOffset = 0;
11811 wpt_uint16 usSendSize = 0;
11812 WDI_Status wdiStatus;
11813 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11815
11816 /*-------------------------------------------------------------------------
11817 Sanity check
11818 -------------------------------------------------------------------------*/
11819 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11820 {
11821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11822 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11823 WDI_ASSERT(0);
11824 return WDI_STATUS_E_FAILURE;
11825 }
11826
11827 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11828
11829 /*-----------------------------------------------------------------------
11830 Get message buffer
11831 -----------------------------------------------------------------------*/
11832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11833 WDI_EXCLUDE_UNENCRYPTED_IND,
11834 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11835 &pSendBuffer, &usDataOffset, &usSendSize))||
11836 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11837 {
11838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11839 "Unable to get send buffer in Exclude Unencrypted Ind ");
11840 WDI_ASSERT(0);
11841 return WDI_STATUS_E_FAILURE;
11842 }
11843
11844 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11845
11846 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11847
11848 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11849 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11850
11851 /*-------------------------------------------------------------------------
11852 Send Suspend Request to HAL
11853 -------------------------------------------------------------------------*/
11854 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11855 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11856
11857 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11858 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11859}/*WDI_ProcessExcludeUnencryptInd*/
11860#endif
11861
Yue Mab9c86f42013-08-14 15:59:08 -070011862/**
11863 @brief Process Add Periodic Tx Pattern Indication function (called when
11864 Main FSM allows it)
11865
11866 @param pWDICtx: pointer to the WLAN DAL context
11867 pEventData: pointer to the event information structure
11868
11869 @see
11870 @return Result of the function call
11871*/
11872WDI_Status
11873WDI_ProcessAddPeriodicTxPtrnInd
11874(
11875 WDI_ControlBlockType* pWDICtx,
11876 WDI_EventInfoType* pEventData
11877)
11878{
11879 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11880 wpt_uint8* pSendBuffer = NULL;
11881 wpt_uint16 usDataOffset = 0;
11882 wpt_uint16 usSendSize = 0;
11883 WDI_Status wdiStatus;
11884 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11885 wpt_uint8 selfStaIdx = 0;
11886
11887 /*-------------------------------------------------------------------------
11888 Sanity check
11889 -------------------------------------------------------------------------*/
11890 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11891 {
11892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11893 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11894 WDI_ASSERT(0);
11895 return WDI_STATUS_E_FAILURE;
11896 }
11897
11898 pAddPeriodicTxPtrnParams =
11899 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11900
11901 /*------------------------------------------------------------------------
11902 Get message buffer
11903 ------------------------------------------------------------------------*/
11904 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11905 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11906 &pSendBuffer, &usDataOffset, &usSendSize))||
11907 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11908 {
11909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11910 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11911 __func__);
11912 WDI_ASSERT(0);
11913 return WDI_STATUS_E_FAILURE;
11914 }
11915
11916 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11917
11918 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11919 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11920 &selfStaIdx))
11921 {
11922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11923 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011924 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011925
11926 return WDI_STATUS_E_FAILURE;
11927 }
11928
11929 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11930 halAddPeriodicTxPtrn->ucPtrnId =
11931 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11932 halAddPeriodicTxPtrn->usPtrnSize =
11933 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11934 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11935 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11936
11937 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11938 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11939 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11940
11941 /*-------------------------------------------------------------------------
11942 Send Indication to HAL
11943 -------------------------------------------------------------------------*/
11944 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11945 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11946
11947 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11948
11949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11950 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11951
11952 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11953} /* WDI_ProcessAddPeriodicTxPtrnInd */
11954
11955/**
11956 @brief Process Delete Periodic Tx Pattern Indication function (called when
11957 Main FSM allows it)
11958
11959 @param pWDICtx: pointer to the WLAN DAL context
11960 pEventData: pointer to the event information structure
11961
11962 @see
11963 @return Result of the function call
11964*/
11965WDI_Status
11966WDI_ProcessDelPeriodicTxPtrnInd
11967(
11968 WDI_ControlBlockType* pWDICtx,
11969 WDI_EventInfoType* pEventData
11970)
11971{
11972 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11973 wpt_uint8* pSendBuffer = NULL;
11974 wpt_uint16 usDataOffset = 0;
11975 wpt_uint16 usSendSize = 0;
11976 WDI_Status wdiStatus;
11977 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11978 wpt_uint8 selfStaIdx = 0;
11979
11980 /*-------------------------------------------------------------------------
11981 Sanity check
11982 -------------------------------------------------------------------------*/
11983 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11984 {
11985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11986 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11987 WDI_ASSERT(0);
11988 return WDI_STATUS_E_FAILURE;
11989 }
11990
11991 pDelPeriodicTxPtrnParams =
11992 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11993
11994 /*------------------------------------------------------------------------
11995 Get message buffer
11996 ------------------------------------------------------------------------*/
11997 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11998 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11999 &pSendBuffer, &usDataOffset, &usSendSize))||
12000 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12001 {
12002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12003 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12004 __func__);
12005 WDI_ASSERT(0);
12006 return WDI_STATUS_E_FAILURE;
12007 }
12008
12009 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12010
12011 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12012 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12013 &selfStaIdx))
12014 {
12015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12016 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012017 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012018
12019 return WDI_STATUS_E_FAILURE;
12020 }
12021
12022 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12023 halDelPeriodicTxPtrn->uPatternIdBitmap =
12024 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12025
12026 /*-------------------------------------------------------------------------
12027 Send Indication to HAL
12028 -------------------------------------------------------------------------*/
12029 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12030 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12031
12032 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12033
12034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12035 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12036
12037 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12038} /* WDI_ProcessDelPeriodicTxPtrnInd */
12039
Jeff Johnson295189b2012-06-20 16:38:30 -070012040/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012042==========================================================================*/
12043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012046
12047 @param pWDICtx: pointer to the WLAN DAL context
12048 pEventData: pointer to the event information structure
12049
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 @see
12051 @return Result of the function call
12052*/
12053WDI_Status
12054WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012055(
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 WDI_ControlBlockType* pWDICtx,
12057 WDI_EventInfoType* pEventData
12058)
12059{
12060 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12061 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 wpt_uint16 usDataOffset = 0;
12064 wpt_uint16 usSendSize = 0;
12065 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12067
12068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 -------------------------------------------------------------------------*/
12071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12072 ( NULL == pEventData->pCBfnc ))
12073 {
12074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 }
12079
12080 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12081 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12082 /*-----------------------------------------------------------------------
12083 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 sizeof(halSwitchChannelReq.switchChannelParams),
12088 &pSendBuffer, &usDataOffset, &usSendSize))||
12089 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12090 {
12091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012092 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 }
12097
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012100#ifndef WLAN_FEATURE_VOWIFI
12101 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12103#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12106
12107#ifdef WLAN_FEATURE_VOWIFI
12108 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12111 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12112 WDI_MAC_ADDR_LEN);
12113 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12114 pwdiSwitchChParams->wdiChInfo.macBSSId,
12115 WDI_MAC_ADDR_LEN);
12116#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 wpalMemoryCopy( pSendBuffer+usDataOffset,
12118 &halSwitchChannelReq.switchChannelParams,
12119 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012120
12121 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123
12124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12128 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012129}/*WDI_ProcessChannelSwitchReq*/
12130
12131/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012132 @brief Process Channel Switch Request function (called when
12133 Main FSM allows it)
12134
12135 @param pWDICtx: pointer to the WLAN DAL context
12136 pEventData: pointer to the event information structure
12137
12138 @see
12139 @return Result of the function call
12140*/
12141WDI_Status WDI_ProcessChannelSwitchReq_V1
12142(
12143 WDI_ControlBlockType* pWDICtx,
12144 WDI_EventInfoType* pEventData
12145)
12146{
12147 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12148 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12149 wpt_uint8* pSendBuffer = NULL;
12150 wpt_uint16 usDataOffset = 0;
12151 wpt_uint16 usSendSize = 0;
12152 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12154
12155 /*-------------------------------------------------------------------------
12156 Sanity check
12157 -------------------------------------------------------------------------*/
12158 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12159 ( NULL == pEventData->pCBfnc ))
12160 {
12161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12162 "%s: Invalid parameters", __func__);
12163 WDI_ASSERT(0);
12164 return WDI_STATUS_E_FAILURE;
12165 }
12166
12167 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12168 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12169 /*-----------------------------------------------------------------------
12170 Get message buffer
12171 ! TO DO : proper conversion into the HAL Message Request Format
12172 -----------------------------------------------------------------------*/
12173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12174 WDI_CH_SWITCH_REQ_V1,
12175 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12176 &pSendBuffer, &usDataOffset, &usSendSize))||
12177 ( usSendSize < (usDataOffset +
12178 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12179 {
12180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12181 "Unable to get send buffer in channel switch req %p %p %p",
12182 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12183 WDI_ASSERT(0);
12184 return WDI_STATUS_E_FAILURE;
12185 }
12186
12187 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12188 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12189
12190 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12191 pwdiSwitchChParams->wdiChInfo.ucChannel;
12192#ifndef WLAN_FEATURE_VOWIFI
12193 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12194 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12195#endif
12196 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12197 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12198
12199#ifdef WLAN_FEATURE_VOWIFI
12200 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12201 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12202 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12203 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12204 WDI_MAC_ADDR_LEN);
12205 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12206 pwdiSwitchChParams->wdiChInfo.macBSSId,
12207 WDI_MAC_ADDR_LEN);
12208#endif
12209 wpalMemoryCopy( pSendBuffer+usDataOffset,
12210 &halSwitchChannelReq.switchChannelParams_V1,
12211 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12212
12213 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12214 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12215
12216 /*-------------------------------------------------------------------------
12217 Send Switch Channel Request to HAL
12218 -------------------------------------------------------------------------*/
12219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12220 wdiSwitchChRspCb, pEventData->pUserData,
12221 WDI_CH_SWITCH_RESP_V1);
12222}/*WDI_ProcessChannelSwitchReq_V1*/
12223
12224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012227
12228 @param pWDICtx: pointer to the WLAN DAL context
12229 pEventData: pointer to the event information structure
12230
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 @see
12232 @return Result of the function call
12233*/
12234WDI_Status
12235WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012236(
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 WDI_ControlBlockType* pWDICtx,
12238 WDI_EventInfoType* pEventData
12239)
12240{
12241 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12242 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 wpt_uint16 usDataOffset = 0;
12247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 tConfigStaReqMsg halConfigStaReqMsg;
12251 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12253
12254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 -------------------------------------------------------------------------*/
12257 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12258 ( NULL == pEventData->pCBfnc ))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 }
12265
Abhishek Singh6927fa02014-06-27 17:19:55 +053012266 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12268 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12269 /*-------------------------------------------------------------------------
12270 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 -------------------------------------------------------------------------*/
12273 wpalMutexAcquire(&pWDICtx->wptMutex);
12274
12275 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12279 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12280 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012281
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12285 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12286 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012287
12288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 }
12291
12292 /*------------------------------------------------------------------------
12293 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 ------------------------------------------------------------------------*/
12296 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12297 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12299 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12300 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012301
Jeff Johnsone7245742012-09-05 17:12:55 -070012302 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 }
12306
12307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012308
12309 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12310#ifdef WLAN_FEATURE_11AC
12311 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012312 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 else
12314#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012315 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012316
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 /*-----------------------------------------------------------------------
12318 Get message buffer
12319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12321 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 {
12325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012326 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 }
12331
12332 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 &pwdiConfigSTAParams->wdiReqInfo);
12335
12336 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12337 {
12338 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 WDI_STATableFindStaidByAddr(pWDICtx,
12341 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 {
12344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012345 MAC_ADDRESS_STR
12346 ": This station does not exist in the WDI Station Table",
12347 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012349 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 }
12352 }
12353 else
12354 {
12355 /* Need to fill in the STA Index to invalid, since at this point we have not
12356 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012357 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 }
12359
12360 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012362
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 wpalMemoryCopy( pSendBuffer+usDataOffset,
12364 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012365 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012366
12367 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012369
Jeff Johnsone7245742012-09-05 17:12:55 -070012370 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12371 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 sizeof(pWDICtx->wdiCachedConfigStaReq));
12373
12374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12378 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012379}/*WDI_ProcessConfigStaReq*/
12380
12381
12382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012385
12386 @param pWDICtx: pointer to the WLAN DAL context
12387 pEventData: pointer to the event information structure
12388
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 @see
12390 @return Result of the function call
12391*/
12392WDI_Status
12393WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012394(
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 WDI_ControlBlockType* pWDICtx,
12396 WDI_EventInfoType* pEventData
12397)
12398{
12399 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12400 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 wpt_uint16 usDataOffset = 0;
12405 wpt_uint16 usSendSize = 0;
12406 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12409
12410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 -------------------------------------------------------------------------*/
12413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12414 ( NULL == pEventData->pCBfnc ))
12415 {
12416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 }
12421
12422 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12423 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12424 /*-------------------------------------------------------------------------
12425 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 -------------------------------------------------------------------------*/
12428 wpalMutexAcquire(&pWDICtx->wptMutex);
12429
12430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12434 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12435 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012436
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12441 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 }
12443 else
12444 {
12445 /*------------------------------------------------------------------------
12446 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 ------------------------------------------------------------------------*/
12449 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12452 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12453 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12454
12455 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 }
12459 }
12460 /* If the link is set to enter IDLE - the Session allocated for this BSS
12461 will be deleted on the Set Link State response coming from HAL
12462 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12465
12466 wpalMutexRelease(&pWDICtx->wptMutex);
12467 /*-----------------------------------------------------------------------
12468 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012471
12472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 sizeof(halLinkStateReqMsg),
12474 &pSendBuffer, &usDataOffset, &usSendSize))||
12475 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12476 {
12477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012478 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 }
12483
12484 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12485 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12486
12487 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12488 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12489
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 wpalMemoryCopy( pSendBuffer+usDataOffset,
12494 &halLinkStateReqMsg,
12495 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012496
12497 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12504 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012505}/*WDI_ProcessSetLinkStateReq*/
12506
12507
12508/**
12509 @brief Process Get Stats Request function (called when Main FSM
12510 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012511
12512 @param pWDICtx: pointer to the WLAN DAL context
12513 pEventData: pointer to the event information structure
12514
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 @see
12516 @return Result of the function call
12517*/
12518WDI_Status
12519WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012520(
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 WDI_ControlBlockType* pWDICtx,
12522 WDI_EventInfoType* pEventData
12523)
12524{
12525 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12526 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 wpt_uint16 usDataOffset = 0;
12529 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 WDI_BSSSessionType* pBSSSes = NULL;
12532 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 tHalStatsReqMsg halStatsReqMsg;
12535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12536
12537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 -------------------------------------------------------------------------*/
12540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12541 ( NULL == pEventData->pCBfnc ) )
12542 {
12543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 }
12548
12549 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12550 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12551
12552 /*-------------------------------------------------------------------------
12553 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 -------------------------------------------------------------------------*/
12556 wpalMutexAcquire(&pWDICtx->wptMutex);
12557
12558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12562 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 &macBSSID))
12564 {
12565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012566 "This station does not exist in the WDI Station Table %d",
12567 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 }
12571
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12573 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12576 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12577 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012578
12579 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 }
12582
12583 /*------------------------------------------------------------------------
12584 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 ------------------------------------------------------------------------*/
12587 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12588 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12590 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12591 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012592
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 }
12597
12598
12599 wpalMutexRelease(&pWDICtx->wptMutex);
12600
12601 /*-----------------------------------------------------------------------
12602 Get message buffer
12603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 sizeof(halStatsReqMsg.statsReqParams),
12606 &pSendBuffer, &usDataOffset, &usSendSize))||
12607 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12608 {
12609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012610 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 }
12615
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 wpalMemoryCopy( pSendBuffer+usDataOffset,
12621 &halStatsReqMsg.statsReqParams,
12622 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
12624 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12631 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012632}/*WDI_ProcessGetStatsReq*/
12633
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012634#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012635/**
12636 @brief Process Get Roam Rssi Request function (called when Main FSM
12637 allows it)
12638
12639 @param pWDICtx: pointer to the WLAN DAL context
12640 pEventData: pointer to the event information structure
12641
12642 @see
12643 @return Result of the function call
12644*/
12645WDI_Status
12646WDI_ProcessGetRoamRssiReq
12647(
12648 WDI_ControlBlockType* pWDICtx,
12649 WDI_EventInfoType* pEventData
12650)
12651{
12652 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12653 WDI_GetStatsRspCb wdiGetStatsRspCb;
12654 wpt_uint8* pSendBuffer = NULL;
12655 wpt_uint16 usDataOffset = 0;
12656 wpt_uint16 usSendSize = 0;
12657 wpt_uint8 ucCurrentBSSSesIdx = 0;
12658 WDI_BSSSessionType* pBSSSes = NULL;
12659 wpt_macAddr macBSSID;
12660 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12661 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12663 /*-------------------------------------------------------------------------
12664 Sanity check
12665 -------------------------------------------------------------------------*/
12666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12667 ( NULL == pEventData->pCBfnc ) )
12668 {
12669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12670 "%s: Invalid parameters", __func__);
12671 WDI_ASSERT(0);
12672 return WDI_STATUS_E_FAILURE;
12673 }
12674
12675 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12676 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12677
12678 /*-------------------------------------------------------------------------
12679 Check to see if we are in the middle of an association, if so queue, if
12680 not it means it is free to process request
12681 -------------------------------------------------------------------------*/
12682 wpalMutexAcquire(&pWDICtx->wptMutex);
12683
12684 /*------------------------------------------------------------------------
12685 Find the BSS for which the request is made
12686 ------------------------------------------------------------------------*/
12687 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12688 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12689 &macBSSID))
12690 {
12691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012692 "This station does not exist in the WDI Station Table %d",
12693 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012694 wpalMutexRelease(&pWDICtx->wptMutex);
12695 return WDI_STATUS_E_FAILURE;
12696 }
12697
12698 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12699 if ( NULL == pBSSSes )
12700 {
12701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12702 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12703 __func__, MAC_ADDR_ARRAY(macBSSID));
12704
12705 wpalMutexRelease(&pWDICtx->wptMutex);
12706 return WDI_STATUS_E_NOT_ALLOWED;
12707 }
12708
12709 /*------------------------------------------------------------------------
12710 Check if this BSS is being currently processed or queued,
12711 if queued - queue the new request as well
12712 ------------------------------------------------------------------------*/
12713 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12714 {
12715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12716 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12717 __func__, MAC_ADDR_ARRAY(macBSSID));
12718
12719 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12720 wpalMutexRelease(&pWDICtx->wptMutex);
12721 return wdiStatus;
12722 }
12723
12724 wpalMutexRelease(&pWDICtx->wptMutex);
12725
12726 /*-----------------------------------------------------------------------
12727 Get message buffer
12728 -----------------------------------------------------------------------*/
12729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12730 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12731 &pSendBuffer, &usDataOffset, &usSendSize))||
12732 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12733 {
12734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012735 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012736 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12737 WDI_ASSERT(0);
12738 return WDI_STATUS_E_FAILURE;
12739 }
12740
12741 halRssiRoamReqMsg.roamRssiReqParams.staId =
12742 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12743 wpalMemoryCopy( pSendBuffer+usDataOffset,
12744 &halRssiRoamReqMsg.roamRssiReqParams,
12745 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12746
12747 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12748 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12749
12750 /*-------------------------------------------------------------------------
12751 Send Get STA Request to HAL
12752 -------------------------------------------------------------------------*/
12753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12754 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12755}/*WDI_ProcessGetRoamRssiReq*/
12756#endif
12757
Jeff Johnson295189b2012-06-20 16:38:30 -070012758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012761
12762 @param pWDICtx: pointer to the WLAN DAL context
12763 pEventData: pointer to the event information structure
12764
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 @see
12766 @return Result of the function call
12767*/
12768WDI_Status
12769WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012770(
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 WDI_ControlBlockType* pWDICtx,
12772 WDI_EventInfoType* pEventData
12773)
12774{
12775 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12776 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12777
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 wpt_uint16 usDataOffset = 0;
12780 wpt_uint16 usSendSize = 0;
12781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12782
12783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 -------------------------------------------------------------------------*/
12786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12787 ( NULL == pEventData->pCBfnc))
12788 {
12789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 }
12794
12795 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12796 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12797
12798 /*-----------------------------------------------------------------------
12799 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 -----------------------------------------------------------------------*/
12802
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12805 &pSendBuffer, &usDataOffset, &usSendSize))||
12806 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012809 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 }
12814
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 wpalMemoryCopy( pSendBuffer+usDataOffset,
12816 &pwdiUpdateCfgParams->uConfigBufferLen,
12817 sizeof(wpt_uint32));
12818 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12819 pwdiUpdateCfgParams->pConfigBuffer,
12820 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012821
12822 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
12825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 -------------------------------------------------------------------------*/
12828
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12830 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832}/*WDI_ProcessUpdateCfgReq*/
12833
12834
12835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012838
12839 @param pWDICtx: pointer to the WLAN DAL context
12840 pEventData: pointer to the event information structure
12841
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 @see
12843 @return Result of the function call
12844*/
12845WDI_Status
12846WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012847(
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 WDI_ControlBlockType* pWDICtx,
12849 WDI_EventInfoType* pEventData
12850)
12851{
12852 WDI_AddBAReqParamsType* pwdiAddBAParams;
12853 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 wpt_uint16 usDataOffset = 0;
12858 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 wpt_macAddr macBSSID;
12861
12862 tAddBAReqMsg halAddBAReq;
12863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12864
12865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 -------------------------------------------------------------------------*/
12868 if (( NULL == pEventData ) ||
12869 ( NULL == pEventData->pEventData) ||
12870 ( NULL == pEventData->pCBfnc ))
12871 {
12872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 }
12877
12878 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12879 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12880
12881 /*-------------------------------------------------------------------------
12882 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 -------------------------------------------------------------------------*/
12885 wpalMutexAcquire(&pWDICtx->wptMutex);
12886
12887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12891 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 &macBSSID))
12893 {
12894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012895 "This station does not exist in the WDI Station Table %d",
12896 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12902 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12905 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12906 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012907
12908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 }
12911
12912 /*------------------------------------------------------------------------
12913 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 ------------------------------------------------------------------------*/
12916 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12917 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12919 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12920 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012921
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012924 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 }
12926
12927
12928 wpalMutexRelease(&pWDICtx->wptMutex);
12929 /*-----------------------------------------------------------------------
12930 Get message buffer
12931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 sizeof(halAddBAReq.addBAParams),
12934 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12937 {
12938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012939 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 }
12944
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12947 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12948#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12951#endif
12952
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 wpalMemoryCopy( pSendBuffer+usDataOffset,
12954 &halAddBAReq.addBAParams,
12955 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012956
12957 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959
12960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12964 wdiAddBARspCb, pEventData->pUserData,
12965 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012966}/*WDI_ProcessAddBAReq*/
12967
12968
12969
12970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012973
12974 @param pWDICtx: pointer to the WLAN DAL context
12975 pEventData: pointer to the event information structure
12976
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 @see
12978 @return Result of the function call
12979*/
12980WDI_Status
12981WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012982(
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 WDI_ControlBlockType* pWDICtx,
12984 WDI_EventInfoType* pEventData
12985)
12986{
12987 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12988 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 wpt_uint16 usDataOffset = 0;
12993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 wpt_uint16 index;
12996 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012997
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 tTriggerBAReqMsg halTriggerBAReq;
12999 tTriggerBaReqCandidate* halTriggerBACandidate;
13000 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13002
13003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013005 -------------------------------------------------------------------------*/
13006 if (( NULL == pEventData ) ||
13007 ( NULL == pEventData->pEventData ) ||
13008 ( NULL == pEventData->pCBfnc ))
13009 {
13010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 }
13015
13016 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13017 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13018 /*-------------------------------------------------------------------------
13019 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 -------------------------------------------------------------------------*/
13022 wpalMutexAcquire(&pWDICtx->wptMutex);
13023
13024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13028 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 &macBSSID))
13030 {
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013032 "This station does not exist in the WDI Station Table %d",
13033 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 }
13037
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13039 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13042 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13043 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013044
13045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048
13049 /*------------------------------------------------------------------------
13050 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 ------------------------------------------------------------------------*/
13053 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13054 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13056 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13057 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 }
13063
13064
13065 wpalMutexRelease(&pWDICtx->wptMutex);
13066 /*-----------------------------------------------------------------------
13067 Get message buffer
13068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13070 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13074 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13079 {
13080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013081 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 }
13086
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13091
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 wpalMemoryCopy( pSendBuffer+usDataOffset,
13093 &halTriggerBAReq.triggerBAParams,
13094 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013095
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13098 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13099 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013100
13101 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 index++)
13103 {
13104 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13105 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13106 halTriggerBACandidate++;
13107 wdiTriggerBACandidate++;
13108 }
13109
13110 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112
13113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13117 wdiTriggerBARspCb, pEventData->pUserData,
13118 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013119}/*WDI_ProcessTriggerBAReq*/
13120
13121
13122
13123/**
13124 @brief Process Update Beacon Params Request function (called when Main FSM
13125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013126
13127 @param pWDICtx: pointer to the WLAN DAL context
13128 pEventData: pointer to the event information structure
13129
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 @see
13131 @return Result of the function call
13132*/
13133WDI_Status
13134WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013135(
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 WDI_ControlBlockType* pWDICtx,
13137 WDI_EventInfoType* pEventData
13138)
13139{
13140 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13141 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 wpt_uint16 usDataOffset = 0;
13144 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13147
13148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 -------------------------------------------------------------------------*/
13151 if (( NULL == pEventData ) ||
13152 ( NULL == pEventData->pEventData) ||
13153 ( NULL == pEventData->pCBfnc))
13154 {
13155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13162 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13163 /*-----------------------------------------------------------------------
13164 Get message buffer
13165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 sizeof(halUpdateBeaconParams),
13168 &pSendBuffer, &usDataOffset, &usSendSize))||
13169 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13170 {
13171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013172 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 }
13177
13178 /*BSS Index of the BSS*/
13179 halUpdateBeaconParams.bssIdx =
13180 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13181 /*shortPreamble mode. HAL should update all the STA rates when it
13182 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13185 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13188 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13191
13192 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13205 halUpdateBeaconParams.fRIFSMode =
13206 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13209
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13211 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013212
13213 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13220 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013221}/*WDI_ProcessUpdateBeaconParamsReq*/
13222
13223
13224
13225/**
13226 @brief Process Send Beacon template Request function (called when Main FSM
13227 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13243 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13248
13249 tSendBeaconReqMsg halSendBeaconReq;
13250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 -------------------------------------------------------------------------*/
13253 if (( NULL == pEventData ) ||
13254 ( NULL == pEventData->pEventData ) ||
13255 ( NULL == pEventData->pCBfnc ))
13256 {
13257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262
13263 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13264 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13265 /*-----------------------------------------------------------------------
13266 Get message buffer
13267 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 sizeof(halSendBeaconReq.sendBeaconParam),
13270 &pSendBuffer, &usDataOffset, &usSendSize))||
13271 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13272 {
13273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013274 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 }
13279
13280 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13281 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13282 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13285 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13286 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013290 /* usP2PIeOffset should be atleast greater than timIeOffset */
13291 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13292 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13293 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13294 {
13295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13296 "Invalid usP2PIeOffset %hu",
13297 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13298 WDI_ASSERT(0);
13299 return WDI_STATUS_E_FAILURE;
13300 }
13301
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 wpalMemoryCopy( pSendBuffer+usDataOffset,
13306 &halSendBeaconReq.sendBeaconParam,
13307 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013308
13309 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013311
13312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13316 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013317}/*WDI_ProcessSendBeaconParamsReq*/
13318
13319/**
13320 @brief Process Update Beacon Params Request function (called when Main FSM
13321 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013322
13323 @param pWDICtx: pointer to the WLAN DAL context
13324 pEventData: pointer to the event information structure
13325
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 @see
13327 @return Result of the function call
13328*/
13329WDI_Status
13330WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013331(
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 WDI_ControlBlockType* pWDICtx,
13333 WDI_EventInfoType* pEventData
13334)
13335{
13336 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13337 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 wpt_uint16 usDataOffset = 0;
13340 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13343
13344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 -------------------------------------------------------------------------*/
13347 if (( NULL == pEventData ) ||
13348 ( NULL == pEventData->pEventData) ||
13349 ( NULL == pEventData->pCBfnc))
13350 {
13351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 }
13356
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13361 /*-----------------------------------------------------------------------
13362 Get message buffer
13363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 sizeof(halUpdateProbeRspTmplParams),
13366 &pSendBuffer, &usDataOffset, &usSendSize))||
13367 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13368 {
13369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013370 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 }
13375
13376 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 WDI_MAC_ADDR_LEN);
13379
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13382
13383 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13384 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013386
13387
13388 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13389 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13390 WDI_PROBE_REQ_BITMAP_IE_LEN);
13391
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 wpalMemoryCopy( pSendBuffer+usDataOffset,
13393 &halUpdateProbeRspTmplParams,
13394 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013398
13399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13403 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13404 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013405}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13406
13407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013410
13411 @param pWDICtx: pointer to the WLAN DAL context
13412 pEventData: pointer to the event information structure
13413
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 @see
13415 @return Result of the function call
13416*/
13417WDI_Status
13418WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013419(
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 WDI_ControlBlockType* pWDICtx,
13421 WDI_EventInfoType* pEventData
13422)
13423{
13424
13425 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13426 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13427
13428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 -------------------------------------------------------------------------*/
13431 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 }
13442
13443 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13446
13447 /*cache the wdi nv request message here if the the first fragment
13448 * To issue the request to HAL for the next fragment */
13449 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13452 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13454
13455 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13456 pWDICtx->pRspCBUserData = pEventData->pUserData;
13457 }
13458
13459 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13460}
13461
13462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013465
13466 @param pWDICtx: pointer to the WLAN DAL context
13467 pEventData: pointer to the event information structure
13468
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 @see
13470 @return Result of the function call
13471*/
13472WDI_Status WDI_ProcessSetMaxTxPowerReq
13473(
13474 WDI_ControlBlockType* pWDICtx,
13475 WDI_EventInfoType* pEventData
13476)
13477{
13478 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13479 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 wpt_uint16 usDataOffset = 0;
13482 wpt_uint16 usSendSize = 0;
13483 tSetMaxTxPwrReq halSetMaxTxPower;
13484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13485
13486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 -------------------------------------------------------------------------*/
13489 if (( NULL == pEventData ) ||
13490 ( NULL == pEventData->pEventData ) ||
13491 ( NULL == pEventData->pCBfnc ))
13492 {
13493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13502
13503 /*-----------------------------------------------------------------------
13504 Get message buffer
13505 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013506if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13508 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013510)))
13511 {
13512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013513 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 }
13518
13519 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13520 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13521 WDI_MAC_ADDR_LEN);
13522
13523 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13524 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13525 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528
13529 wpalMemoryCopy( pSendBuffer+usDataOffset,
13530 &halSetMaxTxPower.setMaxTxPwrParams,
13531 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013532
13533 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13540 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13541 WDI_SET_MAX_TX_POWER_RESP);
13542
Jeff Johnson295189b2012-06-20 16:38:30 -070013543}
13544
Arif Hussaina5ebce02013-08-09 15:09:58 -070013545/*
13546 @brief Process Set Max Tx Power Per Band Request function (called when Main
13547 FSM allows it)
13548
13549 @param pWDICtx: pointer to the WLAN DAL context
13550 pEventData: pointer to the event information structure
13551
13552 @see
13553 @return Result of the function call
13554*/
13555WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13556(
13557 WDI_ControlBlockType* pWDICtx,
13558 WDI_EventInfoType* pEventData
13559)
13560{
13561 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13562 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13563 wpt_uint8* pSendBuffer = NULL;
13564 wpt_uint16 usDataOffset = 0;
13565 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013566 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013567 WDI_Status rValue = WDI_STATUS_SUCCESS;
13568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13569
13570 /*-------------------------------------------------------------------------
13571 Sanity check
13572 -------------------------------------------------------------------------*/
13573 if (( NULL == pEventData ) ||
13574 ( NULL == pEventData->pEventData ) ||
13575 ( NULL == pEventData->pCBfnc ))
13576 {
13577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13578 "%s: Invalid parameters", __func__);
13579 WDI_ASSERT(0);
13580 return WDI_STATUS_E_FAILURE;
13581 }
13582 pwdiSetMaxTxPowerPerBandParams = \
13583 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13584
13585 wdiSetMaxTxPowerPerBandRspCb = \
13586 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13587
13588 /*-----------------------------------------------------------------------
13589 Get message buffer
13590 -----------------------------------------------------------------------*/
13591
13592 rValue = WDI_GetMessageBuffer(pWDICtx,
13593 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13594 sizeof(tSetMaxTxPwrPerBandParams),
13595 &pSendBuffer, &usDataOffset, &usSendSize);
13596
13597 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13598 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13599 {
13600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13601 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13602 pEventData, pwdiSetMaxTxPowerPerBandParams,
13603 wdiSetMaxTxPowerPerBandRspCb);
13604 WDI_ASSERT(0);
13605 return WDI_STATUS_E_FAILURE;
13606 }
13607
13608
Arif Hussainf8f080c2014-04-03 09:48:36 -070013609 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13610 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013611 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13612
Arif Hussainf8f080c2014-04-03 09:48:36 -070013613 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013614 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13615
13616 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13617 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13618
13619 /*-------------------------------------------------------------------------
13620 Send Set Max Tx Power Per Band Request to HAL
13621 -------------------------------------------------------------------------*/
13622 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13623 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13624 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13625}
13626
schang86c22c42013-03-13 18:41:24 -070013627/**
13628 @brief Process Set Tx Power Request function (called when Main
13629 FSM allows it)
13630
13631 @param pWDICtx: pointer to the WLAN DAL context
13632 pEventData: pointer to the event information structure
13633
13634 @see
13635 @return Result of the function call
13636*/
13637WDI_Status WDI_ProcessSetTxPowerReq
13638(
13639 WDI_ControlBlockType* pWDICtx,
13640 WDI_EventInfoType* pEventData
13641)
13642{
13643 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13644 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13645 wpt_uint8* pSendBuffer = NULL;
13646 wpt_uint16 usDataOffset = 0;
13647 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013648 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13650
13651 /*-------------------------------------------------------------------------
13652 Sanity check
13653 -------------------------------------------------------------------------*/
13654 if (( NULL == pEventData ) ||
13655 ( NULL == pEventData->pEventData ) ||
13656 ( NULL == pEventData->pCBfnc ))
13657 {
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13659 "%s: Invalid parameters", __func__);
13660 WDI_ASSERT(0);
13661 return WDI_STATUS_E_FAILURE;
13662 }
13663
13664 pwdiSetTxPowerParams =
13665 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13666 wdiSetTxPowerRspCb =
13667 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13668
13669 /*-----------------------------------------------------------------------
13670 Get message buffer
13671 -----------------------------------------------------------------------*/
13672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13673 sizeof(tSetTxPwrReqParams),
13674 &pSendBuffer, &usDataOffset, &usSendSize))||
13675 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13676 )))
13677 {
13678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013679 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013680 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13681 WDI_ASSERT(0);
13682 return WDI_STATUS_E_FAILURE;
13683 }
13684
Leo Chang9a43db92013-03-25 17:39:58 -070013685 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13686 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13687 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013688
13689 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13690 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13691
13692 /*-------------------------------------------------------------------------
13693 Send Set Tx Power Request to HAL
13694 -------------------------------------------------------------------------*/
13695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13696 wdiSetTxPowerRspCb, pEventData->pUserData,
13697 WDI_SET_TX_POWER_RESP);
13698}
Jeff Johnson295189b2012-06-20 16:38:30 -070013699
13700/**
13701 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13702 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013703
13704 @param pWDICtx: pointer to the WLAN DAL context
13705 pEventData: pointer to the event information structure
13706
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 @see
13708 @return Result of the function call
13709*/
13710WDI_Status
13711WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013712(
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 WDI_ControlBlockType* pWDICtx,
13714 WDI_EventInfoType* pEventData
13715)
13716{
13717 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13718 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 wpt_uint16 usDataOffset = 0;
13721 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13724
13725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 -------------------------------------------------------------------------*/
13728 if (( NULL == pEventData ) ||
13729 ( NULL == pEventData->pEventData) ||
13730 ( NULL == pEventData->pCBfnc))
13731 {
13732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 }
13737
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13742 /*-----------------------------------------------------------------------
13743 Get message buffer
13744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13746 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 sizeof(halSetP2PGONOAParams),
13748 &pSendBuffer, &usDataOffset, &usSendSize))||
13749 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13750 {
13751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013752 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 }
13757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13762 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wpalMemoryCopy( pSendBuffer+usDataOffset,
13773 &halSetP2PGONOAParams,
13774 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013775
13776 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13783 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13784 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013785}/*WDI_ProcessP2PGONOAReq*/
13786
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013787#ifdef FEATURE_WLAN_TDLS
13788
13789/**
13790 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13791 allows it)
13792
13793 @param pWDICtx: pointer to the WLAN DAL context
13794 pEventData: pointer to the event information structure
13795
13796 @see
13797 @return Result of the function call
13798*/
13799WDI_Status
13800WDI_ProcessTdlsLinkEstablishReq
13801(
13802 WDI_ControlBlockType* pWDICtx,
13803 WDI_EventInfoType* pEventData
13804)
13805{
13806 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13807 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13808 wpt_uint8* pSendBuffer = NULL;
13809 wpt_uint16 usDataOffset = 0;
13810 wpt_uint16 usSendSize = 0;
13811
13812 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13814
13815 /*-------------------------------------------------------------------------
13816 Sanity check
13817 -------------------------------------------------------------------------*/
13818 if (( NULL == pEventData ) ||
13819 ( NULL == pEventData->pEventData) ||
13820 ( NULL == pEventData->pCBfnc))
13821 {
13822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13823 "%s: Invalid parameters", __func__);
13824 WDI_ASSERT(0);
13825 return WDI_STATUS_E_FAILURE;
13826 }
13827 pwdiTDLSLinkEstablishReqParams =
13828 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13829 wdiTDLSLinkEstablishReqRspCb =
13830 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13831
13832
13833 /*-----------------------------------------------------------------------
13834 Get message buffer
13835 -----------------------------------------------------------------------*/
13836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13837 WDI_TDLS_LINK_ESTABLISH_REQ,
13838 sizeof(halSetTDLSLinkEstablishParams),
13839 &pSendBuffer, &usDataOffset, &usSendSize))||
13840 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13841 {
13842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013843 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013844 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13845 WDI_ASSERT(0);
13846 return WDI_STATUS_E_FAILURE;
13847 }
13848
13849 halSetTDLSLinkEstablishParams.staIdx =
13850 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13851 halSetTDLSLinkEstablishParams.bIsResponder =
13852 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13853 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13854 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13855 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13856 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13857 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13858 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13859 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13860 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13861 halSetTDLSLinkEstablishParams.aAck = 0;
13862 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13863 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13864 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013865 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13866 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13867
13868 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13869 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13870 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13871 halSetTDLSLinkEstablishParams.validChannelsLen =
13872 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13873
13874 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13875 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13876 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13877 halSetTDLSLinkEstablishParams.validOperClassesLen =
13878 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013879
13880 wpalMemoryCopy( pSendBuffer+usDataOffset,
13881 &halSetTDLSLinkEstablishParams,
13882 sizeof(halSetTDLSLinkEstablishParams));
13883
13884 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13885 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13886
13887 /*-------------------------------------------------------------------------
13888 Send Update Probe Resp Template Request to HAL
13889 -------------------------------------------------------------------------*/
13890 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13891 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13892 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13893 return 0;
13894}/*WDI_ProcessTdlsLinkEstablishReq*/
13895
13896
Atul Mittalc0f739f2014-07-31 13:47:47 +053013897/**
13898 @brief sends the channel switch command to f/w (called when Main FSM
13899 allows it)
13900
13901 @param pWDICtx: pointer to the WLAN DAL context
13902 pEventData: pointer to the event information structure
13903
13904 @see
13905 @return Result of the function call
13906*/
13907WDI_Status
13908WDI_ProcessTdlsChanSwitchReq
13909(
13910 WDI_ControlBlockType* pWDICtx,
13911 WDI_EventInfoType* pEventData
13912)
13913{
13914 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13915 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13916 wpt_uint8* pSendBuffer = NULL;
13917 wpt_uint16 usDataOffset = 0;
13918 wpt_uint16 usSendSize = 0;
13919 //WDI_Status wdiStatus;
13920 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13922
13923 /*-------------------------------------------------------------------------
13924 Sanity check
13925 -------------------------------------------------------------------------*/
13926 if (( NULL == pEventData ) ||
13927 ( NULL == pEventData->pEventData))
13928 {
13929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13930 "%s: Invalid parameters", __func__);
13931 WDI_ASSERT(0);
13932 return WDI_STATUS_E_FAILURE;
13933 }
13934 pwdiTDLSChanSwitchReqParams =
13935 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13936 wdiTDLSChanSwitchReqRspCb =
13937 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13938
13939 /*-----------------------------------------------------------------------
13940 Get message buffer
13941 -----------------------------------------------------------------------*/
13942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13943 WDI_TDLS_CHAN_SWITCH_REQ,
13944 sizeof(halSetTDLSChanSwitchParams),
13945 &pSendBuffer, &usDataOffset, &usSendSize))||
13946 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13947 {
13948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13949 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13950 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13951 WDI_ASSERT(0);
13952 return WDI_STATUS_E_FAILURE;
13953 }
13954
13955 halSetTDLSChanSwitchParams.staIdx =
13956 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13957 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13958 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13959 halSetTDLSChanSwitchParams.targetOperClass =
13960 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13961 halSetTDLSChanSwitchParams.targetChannel =
13962 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13963 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13964 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13965 wpalMemoryCopy( pSendBuffer+usDataOffset,
13966 &halSetTDLSChanSwitchParams,
13967 sizeof(halSetTDLSChanSwitchParams));
13968
13969 pWDICtx->wdiReqStatusCB = NULL;
13970 pWDICtx->pReqStatusUserData = NULL;
13971
13972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13973 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13974 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13975}/*WDI_ProcessTdlsChanSwitchReq*/
13976
13977#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013978
Jeff Johnson295189b2012-06-20 16:38:30 -070013979
13980
13981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 @param None
13985
13986 @see
13987 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013988*/
13989void
13990WDI_SetPowerStateCb
13991(
13992 wpt_status status,
13993 unsigned int dxePhyAddr,
13994 void *pContext
13995)
13996{
13997 wpt_status wptStatus;
13998 WDI_ControlBlockType *pCB = NULL;
13999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 /*
14001 * Trigger the event to bring the Enter BMPS req function to come
14002 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014003*/
14004 if( NULL != pContext )
14005 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 }
14008 else
14009 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 pCB = &gWDICb;
14012 }
Mihir Shetea4306052014-03-25 00:02:54 +053014013
14014 if(eWLAN_PAL_STATUS_SUCCESS == status )
14015 {
14016 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14017 }
14018 else
14019 {
14020 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14021 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 pCB->dxePhyAddr = dxePhyAddr;
14023 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14024 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14025 {
14026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14027 "Failed to set an event");
14028
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 }
14031 return;
14032}
14033
14034
14035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014038
14039 @param pWDICtx: pointer to the WLAN DAL context
14040 pEventData: pointer to the event information structure
14041
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 @see
14043 @return Result of the function call
14044*/
14045WDI_Status
14046WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014047(
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 WDI_ControlBlockType* pWDICtx,
14049 WDI_EventInfoType* pEventData
14050)
14051{
Jeff Johnson43971f52012-07-17 12:26:56 -070014052 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 wpt_uint16 usDataOffset = 0;
14056 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014057 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14059
14060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014063 if ((NULL == pEventData ) ||
14064 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14065 (NULL == (pwdiEnterImpsReqParams =
14066 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 {
14068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014071 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
14074 /*-----------------------------------------------------------------------
14075 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 0,
14080 &pSendBuffer, &usDataOffset, &usSendSize))||
14081 ( usSendSize < (usDataOffset )))
14082 {
14083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014084 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pEventData, wdiEnterImpsRspCb);
14086 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014087 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 }
14089
14090 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014091 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14092 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 {
14094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14095 "WDI Init failed to reset an event");
14096
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014098 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 }
14100
14101 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014102 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14103 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014105 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014107 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014108 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014109
14110 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014113 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14114 WDI_SET_POWER_STATE_TIMEOUT);
14115 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 {
14117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14118 "WDI Init failed to wait on an event");
14119
Karthick S1fa70262015-08-20 13:28:14 +053014120 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014122 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 }
14124
Mihir Shetea4306052014-03-25 00:02:54 +053014125 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14126 {
14127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14128 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14129
14130 goto fail;
14131 }
14132
14133 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14134 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14139 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014140
14141fail:
14142 // Release the message buffer so we don't leak
14143 wpalMemoryFree(pSendBuffer);
14144
14145failRequest:
14146 //WDA should have failure check to avoid the memory leak
14147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148}/*WDI_ProcessEnterImpsReq*/
14149
14150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014153
14154 @param pWDICtx: pointer to the WLAN DAL context
14155 pEventData: pointer to the event information structure
14156
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 @see
14158 @return Result of the function call
14159*/
14160WDI_Status
14161WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014162(
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 WDI_ControlBlockType* pWDICtx,
14164 WDI_EventInfoType* pEventData
14165)
14166{
14167 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 wpt_uint16 usDataOffset = 0;
14170 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014171 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
14177 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014178 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14179 (NULL == (pwdiExitImpsReqParams =
14180 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 {
14182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014186 }
14187
14188 /*-----------------------------------------------------------------------
14189 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 0,
14194 &pSendBuffer, &usDataOffset, &usSendSize))||
14195 ( usSendSize < (usDataOffset )))
14196 {
14197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014198 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 pEventData, wdiExitImpsRspCb);
14200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014203 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14204 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14209 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014210}/*WDI_ProcessExitImpsReq*/
14211
14212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014215
14216 @param pWDICtx: pointer to the WLAN DAL context
14217 pEventData: pointer to the event information structure
14218
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 @see
14220 @return Result of the function call
14221*/
14222WDI_Status
14223WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014224(
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 WDI_ControlBlockType* pWDICtx,
14226 WDI_EventInfoType* pEventData
14227)
14228{
14229 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14230 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 wpt_uint16 usDataOffset = 0;
14233 wpt_uint16 usSendSize = 0;
14234 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014235 wpt_status wptStatus;
14236
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14238
14239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 -------------------------------------------------------------------------*/
14242 if (( NULL == pEventData ) ||
14243 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14244 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14245 {
14246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014249 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014250 }
14251
14252 /*-----------------------------------------------------------------------
14253 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014254 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 sizeof(enterBmpsReq),
14258 &pSendBuffer, &usDataOffset, &usSendSize))||
14259 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14260 {
14261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014262 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14264 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014265 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 }
14267
14268 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014269 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14270 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 {
14272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14273 "WDI Init failed to reset an event");
14274
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014276 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 }
14278
14279 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014280 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14281 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14282 {
14283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014284 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014285 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014286 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014287 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014288
14289/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014292 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14293 WDI_SET_POWER_STATE_TIMEOUT);
14294 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 {
14296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14297 "WDI Init failed to wait on an event");
14298
Karthick S1fa70262015-08-20 13:28:14 +053014299 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014301 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 }
14303
14304 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14305
14306 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14307 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14308 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14309 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14310
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014311 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14313 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14314 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14315
14316 wpalMemoryCopy( pSendBuffer+usDataOffset,
14317 &enterBmpsReq,
14318 sizeof(enterBmpsReq));
14319
14320 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322
14323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14327 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014328
14329fail:
14330 // Release the message buffer so we don't leak
14331 wpalMemoryFree(pSendBuffer);
14332
14333failRequest:
14334 //WDA should have failure check to avoid the memory leak
14335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014336}/*WDI_ProcessEnterBmpsReq*/
14337
14338/**
14339 @brief Process Exit BMPS Request function (called when Main FSM
14340 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014341
14342 @param pWDICtx: pointer to the WLAN DAL context
14343 pEventData: pointer to the event information structure
14344
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 @see
14346 @return Result of the function call
14347*/
14348WDI_Status
14349WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014350(
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 WDI_ControlBlockType* pWDICtx,
14352 WDI_EventInfoType* pEventData
14353)
14354{
14355 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14356 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 wpt_uint16 usDataOffset = 0;
14359 wpt_uint16 usSendSize = 0;
14360 tHalExitBmpsReqParams exitBmpsReq;
14361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14362
14363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 -------------------------------------------------------------------------*/
14366 if (( NULL == pEventData ) ||
14367 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14368 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14369 {
14370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 }
14375
14376 /*-----------------------------------------------------------------------
14377 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 sizeof(exitBmpsReq),
14382 &pSendBuffer, &usDataOffset, &usSendSize))||
14383 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14384 {
14385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014386 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 }
14391 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14392
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14394
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 wpalMemoryCopy( pSendBuffer+usDataOffset,
14396 &exitBmpsReq,
14397 sizeof(exitBmpsReq));
14398
14399 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014400 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014401
14402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14406 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014407}/*WDI_ProcessExitBmpsReq*/
14408
14409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014412
14413 @param pWDICtx: pointer to the WLAN DAL context
14414 pEventData: pointer to the event information structure
14415
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 @see
14417 @return Result of the function call
14418*/
14419WDI_Status
14420WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014421(
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 WDI_ControlBlockType* pWDICtx,
14423 WDI_EventInfoType* pEventData
14424)
14425{
14426 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14427 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 wpt_uint16 usDataOffset = 0;
14430 wpt_uint16 usSendSize = 0;
14431 tUapsdReqParams enterUapsdReq;
14432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14433
14434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -------------------------------------------------------------------------*/
14437 if (( NULL == pEventData ) ||
14438 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14439 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14440 {
14441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 }
14446
14447 /*-----------------------------------------------------------------------
14448 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 sizeof(enterUapsdReq),
14453 &pSendBuffer, &usDataOffset, &usSendSize))||
14454 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14455 {
14456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014457 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 }
14462
14463 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14464 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14465 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14466 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14467 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14468 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14469 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14470 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014472
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 wpalMemoryCopy( pSendBuffer+usDataOffset,
14474 &enterUapsdReq,
14475 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014476
14477 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14484 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014485}/*WDI_ProcessEnterUapsdReq*/
14486
14487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014490
14491 @param pWDICtx: pointer to the WLAN DAL context
14492 pEventData: pointer to the event information structure
14493
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 @see
14495 @return Result of the function call
14496*/
14497WDI_Status
14498WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014499(
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 WDI_ControlBlockType* pWDICtx,
14501 WDI_EventInfoType* pEventData
14502)
14503{
14504 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 wpt_uint16 usDataOffset = 0;
14507 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014508 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14509 wpt_uint8 bssIdx = 0;
14510
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14512
14513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 -------------------------------------------------------------------------*/
14516 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014517 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14519 {
14520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 }
14525
14526 /*-----------------------------------------------------------------------
14527 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014528 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014531 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014533 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 {
14535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014536 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 pEventData, wdiExitUapsdRspCb);
14538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 }
14541
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014542 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14543
14544 wpalMemoryCopy( pSendBuffer+usDataOffset,
14545 &bssIdx,
14546 sizeof(wpt_uint8));
14547
14548 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14549 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14550
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14555 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014556}/*WDI_ProcessExitUapsdReq*/
14557
14558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014561
14562 @param pWDICtx: pointer to the WLAN DAL context
14563 pEventData: pointer to the event information structure
14564
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 @see
14566 @return Result of the function call
14567*/
14568WDI_Status
14569WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014570(
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 WDI_ControlBlockType* pWDICtx,
14572 WDI_EventInfoType* pEventData
14573)
14574{
14575 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14576 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 wpt_uint16 usDataOffset = 0;
14579 wpt_uint16 usSendSize = 0;
14580 tUapsdInfo uapsdAcParamsReq;
14581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14582
14583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 -------------------------------------------------------------------------*/
14586 if (( NULL == pEventData ) ||
14587 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14588 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14589 {
14590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 }
14595
14596 /*-----------------------------------------------------------------------
14597 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 sizeof(uapsdAcParamsReq),
14602 &pSendBuffer, &usDataOffset, &usSendSize))||
14603 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14604 {
14605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014606 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 }
14611
14612 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14613 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14614 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14615 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14616 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14617 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14618
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 wpalMemoryCopy( pSendBuffer+usDataOffset,
14620 &uapsdAcParamsReq,
14621 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014622
14623 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014625
14626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14630 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014631}/*WDI_ProcessSetUapsdAcParamsReq*/
14632
14633/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014636
14637 @param pWDICtx: pointer to the WLAN DAL context
14638 pEventData: pointer to the event information structure
14639
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 @see
14641 @return Result of the function call
14642*/
14643WDI_Status
14644WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014645(
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 WDI_ControlBlockType* pWDICtx,
14647 WDI_EventInfoType* pEventData
14648)
14649{
14650 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14651 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 wpt_uint16 usDataOffset = 0;
14654 wpt_uint16 usSendSize = 0;
14655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14656
14657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -------------------------------------------------------------------------*/
14660 if (( NULL == pEventData ) ||
14661 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14662 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
14670 /*-----------------------------------------------------------------------
14671 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14676 &pSendBuffer, &usDataOffset, &usSendSize))||
14677 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14678 {
14679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014680 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 }
14685
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 wpalMemoryCopy( pSendBuffer+usDataOffset,
14687 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14688 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014689
14690 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014692
14693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14697 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014698}/*WDI_ProcessUpdateUapsdParamsReq*/
14699
14700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014703
14704 @param pWDICtx: pointer to the WLAN DAL context
14705 pEventData: pointer to the event information structure
14706
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 @see
14708 @return Result of the function call
14709*/
14710WDI_Status
14711WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014712(
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 WDI_ControlBlockType* pWDICtx,
14714 WDI_EventInfoType* pEventData
14715)
14716{
14717 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14718 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 wpt_uint16 usDataOffset = 0;
14721 wpt_uint16 usSendSize = 0;
14722 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14723
14724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14725
14726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 -------------------------------------------------------------------------*/
14729 if (( NULL == pEventData ) ||
14730 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14731 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14732 {
14733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 }
14738
14739 /*-----------------------------------------------------------------------
14740 Get message buffer
14741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 sizeof(halRxpFilterParams),
14744 &pSendBuffer, &usDataOffset, &usSendSize))||
14745 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14746 {
14747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014748 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 }
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14758
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 wpalMemoryCopy( pSendBuffer+usDataOffset,
14760 &halRxpFilterParams,
14761 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014762
14763 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014765
14766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14770 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014771}/*WDI_ProcessConfigureRxpFilterReq*/
14772
14773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014776
14777 @param pWDICtx: pointer to the WLAN DAL context
14778 pEventData: pointer to the event information structure
14779
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 @see
14781 @return Result of the function call
14782*/
14783WDI_Status
14784WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014785(
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 WDI_ControlBlockType* pWDICtx,
14787 WDI_EventInfoType* pEventData
14788)
14789{
14790 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14791 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 wpt_uint16 usDataOffset = 0;
14794 wpt_uint16 usSendSize = 0;
14795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14796
14797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 -------------------------------------------------------------------------*/
14800 if (( NULL == pEventData ) ||
14801 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14802 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14803 {
14804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 }
14809
14810 /*-----------------------------------------------------------------------
14811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014815 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14816 &pSendBuffer, &usDataOffset, &usSendSize))||
14817 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14818 {
14819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014820 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14822 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
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 wpalMemoryCopy( pSendBuffer+usDataOffset,
14827 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14828 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14829 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14830 &pwdiBeaconFilterParams->aFilters[0],
14831 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014832
14833 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835
14836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14840 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014841}/*WDI_ProcessSetBeaconFilterReq*/
14842
14843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
14847 @param pWDICtx: pointer to the WLAN DAL context
14848 pEventData: pointer to the event information structure
14849
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 @see
14851 @return Result of the function call
14852*/
14853WDI_Status
14854WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014855(
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 WDI_ControlBlockType* pWDICtx,
14857 WDI_EventInfoType* pEventData
14858)
14859{
14860 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14861 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 wpt_uint16 usDataOffset = 0;
14864 wpt_uint16 usSendSize = 0;
14865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14866
14867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 -------------------------------------------------------------------------*/
14870 if (( NULL == pEventData ) ||
14871 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14872 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14873 {
14874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 }
14879
14880 /*-----------------------------------------------------------------------
14881 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14886 &pSendBuffer, &usDataOffset, &usSendSize))||
14887 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14888 {
14889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014890 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 }
14895
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 wpalMemoryCopy( pSendBuffer+usDataOffset,
14897 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14898 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014899
14900 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014902
14903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14907 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014908}
14909
14910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014913
14914 @param pWDICtx: pointer to the WLAN DAL context
14915 pEventData: pointer to the event information structure
14916
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 @see
14918 @return Result of the function call
14919*/
14920WDI_Status
14921WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014922(
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 WDI_ControlBlockType* pWDICtx,
14924 WDI_EventInfoType* pEventData
14925)
14926{
14927 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14928 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 wpt_uint16 usDataOffset = 0;
14931 wpt_uint16 usSendSize = 0;
14932 tHalRSSIThresholds rssiThresholdsReq;
14933 WDI_Status ret_status = 0;
14934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14935
14936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 -------------------------------------------------------------------------*/
14939 if (( NULL == pEventData ) ||
14940 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14941 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14942 {
14943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 }
14948
14949 /*-----------------------------------------------------------------------
14950 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 sizeof(rssiThresholdsReq),
14955 &pSendBuffer, &usDataOffset, &usSendSize))||
14956 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14957 {
14958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014959 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 }
14964
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014977 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14985
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 wpalMemoryCopy( pSendBuffer+usDataOffset,
14987 &rssiThresholdsReq,
14988 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014989
14990 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 /*-------------------------------------------------------------------------
14994 Send Set threshold req to HAL
14995 -------------------------------------------------------------------------*/
14996 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14997 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14998 {
14999 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15000 // req. Then as a result of processing the threshold cross ind, we trigger
15001 // a Set threshold req, then we need to indicate to WDI that it needs to
15002 // go to busy state as a result of the indication as we sent a req in the
15003 // same WDI context.
15004 // Hence expected state transition is to busy.
15005 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15006 }
15007
15008 return ret_status;
15009}
15010
15011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015014
15015 @param pWDICtx: pointer to the WLAN DAL context
15016 pEventData: pointer to the event information structure
15017
Jeff Johnson295189b2012-06-20 16:38:30 -070015018 @see
15019 @return Result of the function call
15020*/
15021WDI_Status
15022WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015023(
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 WDI_ControlBlockType* pWDICtx,
15025 WDI_EventInfoType* pEventData
15026)
15027{
15028 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15029 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 wpt_uint16 usDataOffset = 0;
15032 wpt_uint16 usSendSize = 0;
15033 tHalHostOffloadReq hostOffloadParams;
15034 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015035 wpt_uint8 ucCurrentBSSSesIdx = 0;
15036 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037
15038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15039
15040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 -------------------------------------------------------------------------*/
15043 if (( NULL == pEventData ) ||
15044 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15045 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15046 {
15047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015050 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 }
15052
15053 /*-----------------------------------------------------------------------
15054 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15059 &pSendBuffer, &usDataOffset, &usSendSize))||
15060 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15061 {
15062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015063 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15065 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015066 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 }
15068
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015069 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15070 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15071 &pBSSSes);
15072 if ( NULL == pBSSSes )
15073 {
c_hpothu86feba52014-10-28 15:51:18 +053015074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015075 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15076 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015077 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015078 }
15079
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15081 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015082
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15084 {
15085 // ARP Offload
15086 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15087 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15088 4);
15089 }
15090 else
15091 {
15092 // NS Offload
15093 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15094 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15095 16);
15096
15097#ifdef WLAN_NS_OFFLOAD
15098 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15099 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15100 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15101 16);
15102 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15103 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15104 16);
15105 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15106 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15107 16);
15108 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15109 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15110 16);
15111 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15112 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15113 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015114 nsOffloadParams.srcIPv6AddrValid =
15115 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15116
15117 nsOffloadParams.targetIPv6Addr1Valid =
15118 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15119
15120 nsOffloadParams.targetIPv6Addr2Valid =
15121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15122
15123 nsOffloadParams.slotIndex =
15124 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015125
Jeff Johnson295189b2012-06-20 16:38:30 -070015126#endif // WLAN_NS_OFFLOAD
15127 }
15128
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015129 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15130
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 // copy hostOffloadParams into pSendBuffer
15132 wpalMemoryCopy( pSendBuffer+usDataOffset,
15133 &hostOffloadParams,
15134 sizeof(hostOffloadParams));
15135
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015136 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015138 // copy nsOffloadParams into pSendBuffer
15139 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 &nsOffloadParams,
15141 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015142 }
15143 else
15144 {
15145#ifdef WLAN_NS_OFFLOAD
15146 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15147 {
15148 // copy nsOffloadParams into pSendBuffer
15149 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15150 &nsOffloadParams,
15151 sizeof(nsOffloadParams));
15152 }
15153#endif
15154 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015155
15156 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015158
15159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15163 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015164
15165fail:
15166 // Release the message buffer so we don't leak
15167 wpalMemoryFree(pSendBuffer);
15168
15169failRequest:
15170 //WDA should have failure check to avoid the memory leak
15171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015172}/*WDI_ProcessHostOffloadReq*/
15173
15174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015177
15178 @param pWDICtx: pointer to the WLAN DAL context
15179 pEventData: pointer to the event information structure
15180
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 @see
15182 @return Result of the function call
15183*/
15184WDI_Status
15185WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015186(
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 WDI_ControlBlockType* pWDICtx,
15188 WDI_EventInfoType* pEventData
15189)
15190{
15191 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15192 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 wpt_uint16 usDataOffset = 0;
15195 wpt_uint16 usSendSize = 0;
15196 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015197 wpt_uint8 ucCurrentBSSSesIdx = 0;
15198 WDI_BSSSessionType* pBSSSes = NULL;
15199
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15201
15202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 -------------------------------------------------------------------------*/
15205 if (( NULL == pEventData ) ||
15206 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15207 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15208 {
15209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15210 "Invalid parameters in Keep Alive req");
15211 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015212 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 }
15214
15215 /*-----------------------------------------------------------------------
15216 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 sizeof(keepAliveReq),
15221 &pSendBuffer, &usDataOffset, &usSendSize))||
15222 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15223 {
15224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015225 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015226 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15227 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015228 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 }
15230
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015231 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15232 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15233 &pBSSSes);
15234 if ( NULL == pBSSSes )
15235 {
15236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015237 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015238 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015239 }
15240
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15242 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15243
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015244 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15247 {
15248 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15249 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15250 HAL_IPV4_ADDR_LEN);
15251 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15252 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 wpalMemoryCopy(keepAliveReq.destMacAddr,
15255 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15256 HAL_MAC_ADDR_LEN);
15257 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015258
15259 wpalMemoryCopy( pSendBuffer+usDataOffset,
15260 &keepAliveReq,
15261 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015262
15263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015264 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015265
15266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015267 "Process keep alive req time period %d",
15268 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015269
15270 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015272
15273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15274 "Sending keep alive req to HAL");
15275
15276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15280 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015281
15282fail:
15283 // Release the message buffer so we don't leak
15284 wpalMemoryFree(pSendBuffer);
15285
15286failRequest:
15287 //WDA should have failure check to avoid the memory leak
15288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015289}/*WDI_ProcessKeepAliveReq*/
15290
15291
15292/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015295
15296 @param pWDICtx: pointer to the WLAN DAL context
15297 pEventData: pointer to the event information structure
15298
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 @see
15300 @return Result of the function call
15301*/
15302WDI_Status
15303WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015304(
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 WDI_ControlBlockType* pWDICtx,
15306 WDI_EventInfoType* pEventData
15307)
15308{
15309 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15310 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 wpt_uint16 usDataOffset = 0;
15313 wpt_uint16 usSendSize = 0;
15314 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015315 wpt_uint8 ucCurrentBSSSesIdx = 0;
15316 WDI_BSSSessionType* pBSSSes = NULL;
15317
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15319
15320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 -------------------------------------------------------------------------*/
15323 if (( NULL == pEventData ) ||
15324 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15325 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15326 {
15327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015330 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
15332
15333 /*-----------------------------------------------------------------------
15334 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 sizeof(wowlAddBcPtrnReq),
15339 &pSendBuffer, &usDataOffset, &usSendSize))||
15340 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15341 {
15342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015343 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15345 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015346 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 }
15348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015349 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15350 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15351 &pBSSSes);
15352 if ( NULL == pBSSSes )
15353 {
15354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015355 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015356 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015357 }
15358
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15367
15368 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15369 {
15370 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15371 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15373 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15376 }
15377 else
15378 {
15379 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15380 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15381 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15384 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15385
15386 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15388 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15389 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15390 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15391 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15392 }
15393
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015394 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15395
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 wpalMemoryCopy( pSendBuffer+usDataOffset,
15397 &wowlAddBcPtrnReq,
15398 sizeof(wowlAddBcPtrnReq));
15399
15400 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015401 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015402
15403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15407 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015408fail:
15409 // Release the message buffer so we don't leak
15410 wpalMemoryFree(pSendBuffer);
15411
15412failRequest:
15413 //WDA should have failure check to avoid the memory leak
15414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415}/*WDI_ProcessWowlAddBcPtrnReq*/
15416
15417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015418 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015420
15421 @param pWDICtx: pointer to the WLAN DAL context
15422 pEventData: pointer to the event information structure
15423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 @see
15425 @return Result of the function call
15426*/
15427WDI_Status
15428WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015429(
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ControlBlockType* pWDICtx,
15431 WDI_EventInfoType* pEventData
15432)
15433{
15434 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15435 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 wpt_uint16 usDataOffset = 0;
15438 wpt_uint16 usSendSize = 0;
15439 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015440 wpt_uint8 ucCurrentBSSSesIdx = 0;
15441 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15443
15444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 -------------------------------------------------------------------------*/
15447 if (( NULL == pEventData ) ||
15448 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15449 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15450 {
15451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015454 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015455 }
15456
15457 /*-----------------------------------------------------------------------
15458 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 sizeof(wowlDelBcPtrnReq),
15463 &pSendBuffer, &usDataOffset, &usSendSize))||
15464 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15465 {
15466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015467 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15469 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015470 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 }
15472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015473 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15474 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15475 &pBSSSes);
15476 if ( NULL == pBSSSes )
15477 {
15478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015479 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015480 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015481 }
15482
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015485
15486 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15487
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 wpalMemoryCopy( pSendBuffer+usDataOffset,
15489 &wowlDelBcPtrnReq,
15490 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015491
15492 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015494
15495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15499 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015500
15501fail:
15502 // Release the message buffer so we don't leak
15503 wpalMemoryFree(pSendBuffer);
15504
15505failRequest:
15506 //WDA should have failure check to avoid the memory leak
15507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015508}/*WDI_ProcessWowlDelBcPtrnReq*/
15509
15510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015513
15514 @param pWDICtx: pointer to the WLAN DAL context
15515 pEventData: pointer to the event information structure
15516
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 @see
15518 @return Result of the function call
15519*/
15520WDI_Status
15521WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015522(
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 WDI_ControlBlockType* pWDICtx,
15524 WDI_EventInfoType* pEventData
15525)
15526{
15527 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15528 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 wpt_uint16 usDataOffset = 0;
15531 wpt_uint16 usSendSize = 0;
15532 tHalWowlEnterParams wowlEnterReq;
15533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15534
15535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 -------------------------------------------------------------------------*/
15538 if (( NULL == pEventData ) ||
15539 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15540 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15541 {
15542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 }
15547
15548 /*-----------------------------------------------------------------------
15549 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 sizeof(wowlEnterReq),
15554 &pSendBuffer, &usDataOffset, &usSendSize))||
15555 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15556 {
15557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015558 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 }
15563
Kumar Anandaca924e2013-07-22 14:35:34 -070015564 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15565
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15582
15583#ifdef WLAN_WAKEUP_EVENTS
15584 wowlEnterReq.ucWoWEAPIDRequestEnable =
15585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15586
15587 wowlEnterReq.ucWoWEAPOL4WayEnable =
15588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15589
15590 wowlEnterReq.ucWowNetScanOffloadMatch =
15591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15592
15593 wowlEnterReq.ucWowGTKRekeyError =
15594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15595
15596 wowlEnterReq.ucWoWBSSConnLoss =
15597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15598#endif // WLAN_WAKEUP_EVENTS
15599
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015600 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15601
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15603 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15604 sizeof(tSirMacAddr));
15605
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 wpalMemoryCopy( pSendBuffer+usDataOffset,
15607 &wowlEnterReq,
15608 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015609
15610 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015612
15613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15617 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessWowlEnterReq*/
15619
15620/**
15621 @brief Process Wowl exit Request function (called when Main FSM
15622 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015638 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wpt_uint16 usDataOffset = 0;
15641 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015642 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15644
15645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 -------------------------------------------------------------------------*/
15648 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015649 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15651 {
15652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 }
15657
15658 /*-----------------------------------------------------------------------
15659 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015663 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015665 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 {
15667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015668 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 pEventData, wdiWowlExitCb);
15670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 }
15673
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015674 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15675
15676 wpalMemoryCopy( pSendBuffer+usDataOffset,
15677 &wowlExitparams,
15678 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15683 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684}/*WDI_ProcessWowlExitReq*/
15685
15686/**
15687 @brief Process Configure Apps Cpu Wakeup State Request function
15688 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015689
15690 @param pWDICtx: pointer to the WLAN DAL context
15691 pEventData: pointer to the event information structure
15692
Jeff Johnson295189b2012-06-20 16:38:30 -070015693 @see
15694 @return Result of the function call
15695*/
15696WDI_Status
15697WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015698(
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 WDI_ControlBlockType* pWDICtx,
15700 WDI_EventInfoType* pEventData
15701)
15702{
15703 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15704 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 wpt_uint16 usDataOffset = 0;
15707 wpt_uint16 usSendSize = 0;
15708 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15710
15711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015713 -------------------------------------------------------------------------*/
15714 if (( NULL == pEventData ) ||
15715 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15716 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15717 {
15718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 }
15723
15724 /*-----------------------------------------------------------------------
15725 Get message buffer
15726 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 sizeof(halCfgAppsCpuWakeupStateReqParams),
15729 &pSendBuffer, &usDataOffset, &usSendSize))||
15730 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15731 {
15732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015733 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 }
15738
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15741
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 wpalMemoryCopy( pSendBuffer+usDataOffset,
15743 &halCfgAppsCpuWakeupStateReqParams,
15744 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015745
15746 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015748
15749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15753 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15754 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015755}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15756
15757#ifdef WLAN_FEATURE_VOWIFI_11R
15758/**
15759 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15760 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015761
15762 @param pWDICtx: pointer to the WLAN DAL context
15763 pEventData: pointer to the event information structure
15764
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 @see
15766 @return Result of the function call
15767*/
15768WDI_Status
15769WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015770(
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 WDI_ControlBlockType* pWDICtx,
15772 WDI_EventInfoType* pEventData
15773)
15774{
15775 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15776 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 wpt_uint16 usDataOffset = 0;
15781 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 wpt_macAddr macBSSID;
15784 tAggrAddTsReq halAggrAddTsReq;
15785 int i;
15786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15787
15788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 -------------------------------------------------------------------------*/
15791 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15792 ( NULL == pEventData->pCBfnc ))
15793 {
15794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 }
15799 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15800 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15801 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15802 /*-------------------------------------------------------------------------
15803 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 -------------------------------------------------------------------------*/
15806 wpalMutexAcquire(&pWDICtx->wptMutex);
15807
15808 /*------------------------------------------------------------------------
15809 Find the BSS for which the request is made and identify WDI session
15810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15812 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 &macBSSID))
15814 {
15815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015816 "This station does not exist in the WDI Station Table %d",
15817 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 }
15821
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15823 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15826 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15827 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015828
15829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015832
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 /*------------------------------------------------------------------------
15834 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 ------------------------------------------------------------------------*/
15837 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15838 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15840 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15841 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015842
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 }
15847
15848 wpalMutexRelease(&pWDICtx->wptMutex);
15849 /*-----------------------------------------------------------------------
15850 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 sizeof(tAggrAddTsParams),
15855 &pSendBuffer, &usDataOffset, &usSendSize))||
15856 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15857 {
15858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015859 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 }
15864
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15869
15870 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15871 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15878 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15881 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15884 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15887 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15890 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15893 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15896 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15899 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015904
15905
15906 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015908 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15936 }
15937
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 wpalMemoryCopy( pSendBuffer+usDataOffset,
15939 &halAggrAddTsReq,
15940 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015941
15942 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015943 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015944
15945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015951}/*WDI_ProcessAggrAddTSpecReq*/
15952#endif /* WLAN_FEATURE_VOWIFI_11R */
15953
15954/**
15955 @brief Process Shutdown Request function (called when Main FSM
15956 allows it)
15957
15958 @param pWDICtx: pointer to the WLAN DAL context
15959 pEventData: pointer to the event information structure
15960
15961 @see
15962 @return Result of the function call
15963*/
15964WDI_Status
15965WDI_ProcessShutdownReq
15966(
15967 WDI_ControlBlockType* pWDICtx,
15968 WDI_EventInfoType* pEventData
15969 )
15970{
15971 wpt_status wptStatus;
15972
15973
15974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15975
15976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 -------------------------------------------------------------------------*/
15979 if ( NULL == pEventData )
15980 {
15981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 WDI_ASSERT(0);
15984 return WDI_STATUS_E_FAILURE;
15985 }
15986
15987 wpalMutexAcquire(&pWDICtx->wptMutex);
15988
15989
15990 gWDIInitialized = eWLAN_PAL_FALSE;
15991 /*! TO DO: stop the data services */
15992 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15993 {
15994 /*Stop the STA Table !UT- check this logic again
15995 It is safer to do it here than on the response - because a stop is imminent*/
15996 WDI_STATableStop(pWDICtx);
15997
15998 /* Stop Transport Driver, DXE */
15999 WDTS_Stop(pWDICtx);
16000 }
16001
16002 /*Clear all pending request*/
16003 WDI_ClearPendingRequests(pWDICtx);
16004 /* Close Data transport*/
16005 /* FTM mode does not open Data Path */
16006 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16007 {
16008 WDTS_Close(pWDICtx);
16009 }
16010 /*Close the STA Table !UT- check this logic again*/
16011 WDI_STATableClose(pWDICtx);
16012 /*close the PAL */
16013 wptStatus = wpalClose(pWDICtx->pPALContext);
16014 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16015 {
16016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16017 "Failed to wpal Close %d", wptStatus);
16018 WDI_ASSERT(0);
16019 }
16020
16021 /*Transition back to init state*/
16022 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16023
16024 wpalMutexRelease(&pWDICtx->wptMutex);
16025
16026 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
16029
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016031}/*WDI_ProcessShutdownReq*/
16032
16033/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016035========================================================================*/
16036
16037/**
16038 @brief Process Start Response function (called when a response
16039 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016040
16041 @param pWDICtx: pointer to the WLAN DAL context
16042 pEventData: pointer to the event information structure
16043
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 @see
16045 @return Result of the function call
16046*/
16047WDI_Status
16048WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016049(
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 WDI_ControlBlockType* pWDICtx,
16051 WDI_EventInfoType* pEventData
16052)
16053{
16054 WDI_StartRspParamsType wdiRspParams;
16055 WDI_StartRspCb wdiStartRspCb = NULL;
16056
16057 tHalMacStartRspParams* startRspParams;
16058
16059#ifndef HAL_SELF_STA_PER_BSS
16060 WDI_AddStaParams wdiAddSTAParam = {0};
16061#endif
16062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16063
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 -------------------------------------------------------------------------*/
16068 if (( NULL == pEventData ) ||
16069 ( NULL == pEventData->pEventData) ||
16070 ( NULL == wdiStartRspCb ))
16071 {
16072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 }
16077
16078 /*-------------------------------------------------------------------------
16079 Extract response and send it to UMAC
16080 -------------------------------------------------------------------------*/
16081 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16082 {
16083 // not enough data was received
16084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016085 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 }
16090
16091 /*-------------------------------------------------------------------------
16092 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 -------------------------------------------------------------------------*/
16095 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16096
16097 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16098 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16099 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16100 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16101 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16102 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16103 wdiRspParams.wlanReportedVersion.major =
16104 startRspParams->wcnssWlanVersion.major;
16105 wdiRspParams.wlanReportedVersion.minor =
16106 startRspParams->wcnssWlanVersion.minor;
16107 wdiRspParams.wlanReportedVersion.version =
16108 startRspParams->wcnssWlanVersion.version;
16109 wdiRspParams.wlanReportedVersion.revision =
16110 startRspParams->wcnssWlanVersion.revision;
16111 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16112 startRspParams->wcnssCrmVersionString,
16113 sizeof(wdiRspParams.wcnssSoftwareVersion));
16114 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16115 startRspParams->wcnssWlanVersionString,
16116 sizeof(wdiRspParams.wcnssHardwareVersion));
16117 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16118
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016119 /*Save the HAL Version*/
16120 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16121
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 wpalMutexAcquire(&pWDICtx->wptMutex);
16123 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16124 {
16125 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16126
16127 /*Cache the start response for further use*/
16128 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 sizeof(pWDICtx->wdiCachedStartRspParams));
16131
16132 }
16133 else
16134 {
16135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16136 "Failed to start device with status %s(%d)",
16137 WDI_getHALStatusMsgString(startRspParams->status),
16138 startRspParams->status);
16139
16140 /*Set the expected state transition to stopped - because the start has
16141 failed*/
16142 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16143
16144 wpalMutexRelease(&pWDICtx->wptMutex);
16145
16146 /*Notify UMAC*/
16147 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016148
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016150 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016151
16152 /*Although the response is an error - it was processed by our function
16153 so as far as the caller is concerned this is a succesful reponse processing*/
16154 return WDI_STATUS_SUCCESS;
16155 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016156
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 wpalMutexRelease(&pWDICtx->wptMutex);
16158
16159 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16160 {
16161 /* FTM mode does not need to execute below */
16162 /* Notify UMAC */
16163 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16164 return WDI_STATUS_SUCCESS;
16165 }
16166
16167 /* START the Data transport */
16168 WDTS_startTransport(pWDICtx);
16169
16170 /*Start the STA Table !- check this logic again*/
16171 WDI_STATableStart(pWDICtx);
16172
16173#ifndef HAL_SELF_STA_PER_BSS
16174 /* Store the Self STA Index */
16175 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16176
16177 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16178 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16179 WDI_MAC_ADDR_LEN);
16180
16181 /* At this point add the self-STA */
16182
16183 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16184 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16185 /*! TO DO: wdiAddSTAParam.dpuSig */
16186 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16187 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16188 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16189
16190 //all DPU indices are the same for self STA
16191 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16192 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016193 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16195 WDI_MAC_ADDR_LEN);
16196 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16197 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16198
16199 /* Note: Since we don't get an explicit config STA request for self STA, we
16200 add the self STA upon receiving the Start response message. But the
16201 self STA entry in the table is deleted when WDI gets an explicit delete STA
16202 request */
16203 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16204#endif
16205
16206 /*Notify UMAC*/
16207 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16208
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016210}/*WDI_ProcessStartRsp*/
16211
16212
16213/**
16214 @brief Process Stop Response function (called when a response
16215 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016216
16217 @param pWDICtx: pointer to the WLAN DAL context
16218 pEventData: pointer to the event information structure
16219
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 @see
16221 @return Result of the function call
16222*/
16223WDI_Status
16224WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016225(
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 WDI_ControlBlockType* pWDICtx,
16227 WDI_EventInfoType* pEventData
16228)
16229{
16230 WDI_Status wdiStatus;
16231 WDI_StopRspCb wdiStopRspCb = NULL;
16232
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16235
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 -------------------------------------------------------------------------*/
16240 if (( NULL == pEventData ) ||
16241 ( NULL == pEventData->pEventData) ||
16242 ( NULL == wdiStopRspCb ))
16243 {
16244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 }
16249
16250 /*-------------------------------------------------------------------------
16251 Extract response and send it to UMAC
16252 -------------------------------------------------------------------------*/
16253 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16254 {
16255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016256 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 pEventData->uEventDataSize);
16258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 }
16261
16262 /*-------------------------------------------------------------------------
16263 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16267 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 sizeof(halMacStopRspMsg.stopRspParams));
16269
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016271
16272 wpalMutexAcquire(&pWDICtx->wptMutex);
16273
16274 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016275 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 --------------------------------------------------------------------------*/
16277 if ( WDI_STATUS_SUCCESS != wdiStatus )
16278 {
16279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16280 "Failed to stop the device with status %s (%d)",
16281 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16282 halMacStopRspMsg.stopRspParams.status);
16283
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016285 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016286
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016290
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16292
16293 /*Transition now as WDI may get preempted imediately after it sends
16294 up the Stop Response and it will not get to process the state transition
16295 from Main Rsp function*/
16296 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16297 wpalMutexRelease(&pWDICtx->wptMutex);
16298
16299 /*! TO DO: - STOP the Data transport */
16300
16301 /*Notify UMAC*/
16302 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16303
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305}/*WDI_ProcessStopRsp*/
16306
16307/**
16308 @brief Process Close Rsp function (called when a response
16309 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016310
16311 @param pWDICtx: pointer to the WLAN DAL context
16312 pEventData: pointer to the event information structure
16313
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 @see
16315 @return Result of the function call
16316*/
16317WDI_Status
16318WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016319(
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 WDI_ControlBlockType* pWDICtx,
16321 WDI_EventInfoType* pEventData
16322)
16323{
16324 /*There is no close response comming from HAL - function just kept for
16325 simmetry */
16326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016328}/*WDI_ProcessCloseRsp*/
16329
16330
16331/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016333============================================================================*/
16334
16335/**
16336 @brief Process Init Scan Rsp function (called when a response
16337 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016338
16339 @param pWDICtx: pointer to the WLAN DAL context
16340 pEventData: pointer to the event information structure
16341
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 @see
16343 @return Result of the function call
16344*/
16345WDI_Status
16346WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016347(
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 WDI_ControlBlockType* pWDICtx,
16349 WDI_EventInfoType* pEventData
16350)
16351{
16352 WDI_Status wdiStatus;
16353 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016354 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016355 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16357
16358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016360 -------------------------------------------------------------------------*/
16361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16362 ( NULL == pEventData->pEventData))
16363 {
16364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 }
16369
16370 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16371 if( NULL == wdiInitScanRspCb)
16372 {
16373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016374 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 }
16378
16379 /*-------------------------------------------------------------------------
16380 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016383 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16384 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 sizeof(halInitScanRspMsg.initScanRspParams));
16386
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016388
16389 if ( pWDICtx->bInBmps )
16390 {
16391 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016392 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16393 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016395 "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 -080016396 WDI_ASSERT(0);
16397 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 }
16399
16400 /*Notify UMAC*/
16401 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16402
Jeff Johnsone7245742012-09-05 17:12:55 -070016403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016404}/*WDI_ProcessInitScanRsp*/
16405
16406
16407/**
16408 @brief Process Start Scan Rsp function (called when a response
16409 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016410
16411 @param pWDICtx: pointer to the WLAN DAL context
16412 pEventData: pointer to the event information structure
16413
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 @see
16415 @return Result of the function call
16416*/
16417WDI_Status
16418WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016419(
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 WDI_ControlBlockType* pWDICtx,
16421 WDI_EventInfoType* pEventData
16422)
16423{
16424 WDI_StartScanRspParamsType wdiStartScanParams;
16425 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016426
16427 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16429
16430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 -------------------------------------------------------------------------*/
16433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16434 ( NULL == pEventData->pEventData))
16435 {
16436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 }
16441
16442 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16443 if( NULL == wdiStartScanRspCb)
16444 {
16445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016446 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 }
16450
16451 /*-------------------------------------------------------------------------
16452 Extract response and send it to UMAC
16453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 sizeof(halStartScanRspMsg.startScanRspParams));
16457
16458 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16459 halStartScanRspMsg.startScanRspParams.status);
16460#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016461 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 halStartScanRspMsg.startScanRspParams.startTSF,
16465 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016466#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016467
16468 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16469 {
16470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16471 "Start scan failed with status %s (%d)",
16472 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16473 halStartScanRspMsg.startScanRspParams.status);
16474 /* send the status to UMAC, don't return from here*/
16475 }
16476
16477 /*Notify UMAC*/
16478 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16479
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481
16482}/*WDI_ProcessStartScanRsp*/
16483
16484
16485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016488
16489 @param pWDICtx: pointer to the WLAN DAL context
16490 pEventData: pointer to the event information structure
16491
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 @see
16493 @return Result of the function call
16494*/
16495WDI_Status
16496WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016497(
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 WDI_ControlBlockType* pWDICtx,
16499 WDI_EventInfoType* pEventData
16500)
16501{
16502 WDI_Status wdiStatus;
16503 tHalEndScanRspMsg halEndScanRspMsg;
16504 WDI_EndScanRspCb wdiEndScanRspCb;
16505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16506
16507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 -------------------------------------------------------------------------*/
16510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16511 ( NULL == pEventData->pEventData))
16512 {
16513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 }
16518
16519 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16520
16521 /*-------------------------------------------------------------------------
16522 Extract response and send it to UMAC
16523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16525 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 sizeof(halEndScanRspMsg.endScanRspParams));
16527
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016529
16530 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16531 {
16532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16533 "End Scan failed with status %s (%d )",
16534 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16535 halEndScanRspMsg.endScanRspParams.status);
16536 /* send the status to UMAC, don't return from here*/
16537 }
16538
16539 /*Notify UMAC*/
16540 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16541
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016543}/*WDI_ProcessEndScanRsp*/
16544
16545
16546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016549
16550 @param pWDICtx: pointer to the WLAN DAL context
16551 pEventData: pointer to the event information structure
16552
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 @see
16554 @return Result of the function call
16555*/
16556WDI_Status
16557WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016558(
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ControlBlockType* pWDICtx,
16560 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016561)
Jeff Johnson295189b2012-06-20 16:38:30 -070016562{
16563 WDI_Status wdiStatus;
16564 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016565
16566 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16568
16569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 -------------------------------------------------------------------------*/
16572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16573 ( NULL == pEventData->pEventData))
16574 {
16575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 }
16580
16581 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16582
16583 /*-------------------------------------------------------------------------
16584 Extract response and send it to UMAC
16585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16587 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16589
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016591
16592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 halFinishScanRspMsg.finishScanRspParams.status);
16595
16596 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16597 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16598 {
16599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16600 "Finish Scan failed with status %s (%d)",
16601 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16602 halFinishScanRspMsg.finishScanRspParams.status);
16603 /* send the status to UMAC, don't return from here*/
16604 }
16605
16606 /*Notify UMAC*/
16607 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16608
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016610}/*WDI_ProcessFinishScanRsp*/
16611
16612/**
16613 @brief Process Join Response function (called when a response
16614 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016615
16616 @param pWDICtx: pointer to the WLAN DAL context
16617 pEventData: pointer to the event information structure
16618
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 @see
16620 @return Result of the function call
16621*/
16622WDI_Status
16623WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016624(
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 WDI_ControlBlockType* pWDICtx,
16626 WDI_EventInfoType* pEventData
16627)
16628{
16629 WDI_Status wdiStatus;
16630 WDI_JoinRspCb wdiJoinRspCb;
16631 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016632
16633 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16635
16636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 -------------------------------------------------------------------------*/
16639 if (( NULL == pWDICtx ) ||
16640 ( NULL == pWDICtx->pfncRspCB ) ||
16641 ( NULL == pEventData ) ||
16642 ( NULL == pEventData->pEventData))
16643 {
16644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 }
16649
16650 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16651
16652 /*-------------------------------------------------------------------------
16653 Extract response and send it to UMAC
16654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16656 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 sizeof(halJoinRspMsg.joinRspParams));
16658
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016660
16661 wpalMutexAcquire(&pWDICtx->wptMutex);
16662
16663 /*-----------------------------------------------------------------------
16664 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16669 {
16670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16672 "association no longer in progress %d - mysterious HAL response",
16673 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016674
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016678 }
16679
16680 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16681
16682 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 -----------------------------------------------------------------------*/
16685 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16686 {
16687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16688 "Join only allowed in Joining state - failure state is %d "
16689 "strange HAL response", pBSSSes->wdiAssocState);
16690
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16692
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697
16698 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 -----------------------------------------------------------------------*/
16701 if ( WDI_STATUS_SUCCESS != wdiStatus )
16702 {
16703 /*Association was failed by HAL - remove session*/
16704 WDI_DeleteSession(pWDICtx, pBSSSes);
16705
16706 /*Association no longer in progress */
16707 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16708
16709 /*Association no longer in progress - prepare pending assoc for processing*/
16710 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016711
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 }
16713 else
16714 {
16715 /*Transition to state Joining - this may be redundant as we are supposed
16716 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 }
16719
16720 wpalMutexRelease(&pWDICtx->wptMutex);
16721
16722 /*Notify UMAC*/
16723 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16724
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016726}/*WDI_ProcessJoinRsp*/
16727
16728
16729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016732
16733 @param pWDICtx: pointer to the WLAN DAL context
16734 pEventData: pointer to the event information structure
16735
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 @see
16737 @return Result of the function call
16738*/
16739WDI_Status
16740WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016741(
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ControlBlockType* pWDICtx,
16743 WDI_EventInfoType* pEventData
16744)
16745{
16746 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16747 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 WDI_BSSSessionType* pBSSSes = NULL;
16750
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16753 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016754
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16756
16757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 -------------------------------------------------------------------------*/
16760 if (( NULL == pEventData ) ||
16761 ( NULL == pEventData->pEventData))
16762 {
16763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 }
16768
16769 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16770
16771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016772 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16775 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 sizeof(halConfigBssRspMsg.configBssRspParams));
16777
16778 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16779 halConfigBssRspMsg.configBssRspParams.status);
16780 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16781 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016782 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16784 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016785
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016787
16788 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790
16791 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016795
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016797 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16799 #endif
16800 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16801 halConfigBssRspMsg.configBssRspParams.staMac,
16802 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016803
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 wpalMutexAcquire(&pWDICtx->wptMutex);
16805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16809 wdiConfigBSSParams.macBSSID,
16810 &pBSSSes);
16811
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 /*-----------------------------------------------------------------------
16813 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 -----------------------------------------------------------------------*/
16816 if ( NULL == pBSSSes )
16817 {
16818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16819 "Association sequence for this BSS does not yet exist "
16820 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016821
16822 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16823
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016827
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 /*Save data for this BSS*/
16829 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16830 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016831 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016840 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16841 pBSSSes->bcastStaIdx =
16842 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016843
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016845
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 /*-------------------------------------------------------------------------
16847 Add Peer STA
16848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16851 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016852
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016856 wdiAddSTAParam.ucHTCapable =
16857 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16858 wdiAddSTAParam.ucStaType =
16859 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16863 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016865
16866 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16867 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16868 WDI_MAC_ADDR_LEN);
16869
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016875 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016883
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16885 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016886
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16888 /*-------------------------------------------------------------------------
16889 Add Broadcast STA only in AP mode
16890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016892 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 {
16894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16895 "Add BCAST STA to table for index: %d",
16896 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016897
16898 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016900
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16902 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16903 }
16904 wpalMutexRelease(&pWDICtx->wptMutex);
16905 }
16906 else
16907 {
16908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16909 "Config BSS RSP failed with status : %s(%d)",
16910 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 halConfigBssRspMsg.configBssRspParams.status);
16913
Jeff Johnsone7245742012-09-05 17:12:55 -070016914
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 /*Association was failed by HAL - remove session*/
16916 WDI_DeleteSession(pWDICtx, pBSSSes);
16917
16918 /*Association no longer in progress */
16919 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16920
16921 /*Association no longer in progress - prepare pending assoc for processing*/
16922 WDI_DequeueAssocRequest(pWDICtx);
16923
16924 }
16925
16926 /*Notify UMAC*/
16927 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16928
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016930}/*WDI_ProcessConfigBSSRsp*/
16931
16932
16933/**
16934 @brief Process Del BSS Response function (called when a response
16935 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016936
16937 @param pWDICtx: pointer to the WLAN DAL context
16938 pEventData: pointer to the event information structure
16939
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 @see
16941 @return Result of the function call
16942*/
16943WDI_Status
16944WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016945(
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 WDI_ControlBlockType* pWDICtx,
16947 WDI_EventInfoType* pEventData
16948)
16949{
16950 WDI_DelBSSRspParamsType wdiDelBSSParams;
16951 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 WDI_BSSSessionType* pBSSSes = NULL;
16954
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16957
16958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 -------------------------------------------------------------------------*/
16961 if (( NULL == pEventData ) ||
16962 ( NULL == pEventData->pEventData))
16963 {
16964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 }
16969
16970 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16971
16972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16976 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 sizeof(halDelBssRspMsg.deleteBssRspParams));
16978
16979
16980 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016982
16983 wpalMutexAcquire(&pWDICtx->wptMutex);
16984
16985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16989 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16990 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016991
16992 /*-----------------------------------------------------------------------
16993 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 -----------------------------------------------------------------------*/
16996 if ( NULL == pBSSSes )
16997 {
16998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16999 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017000 "association no longer in progress - mysterious HAL response");
17001
17002 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17003
17004 wpalMutexRelease(&pWDICtx->wptMutex);
17005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017007
17008 /*Extract BSSID for the response to UMAC*/
17009 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17010 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17011
17012 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17013
17014 /*-----------------------------------------------------------------------
17015 The current session will be deleted
17016 -----------------------------------------------------------------------*/
17017 WDI_DeleteSession(pWDICtx, pBSSSes);
17018
17019
17020 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017021 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17022 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017024 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017025 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017026
17027 /* Delete the STA's in this BSS */
17028 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17029
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 wpalMutexRelease(&pWDICtx->wptMutex);
17031
17032 /*Notify UMAC*/
17033 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17034
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017036}/*WDI_ProcessDelBSSRsp*/
17037
17038/**
17039 @brief Process Post Assoc Rsp function (called when a response
17040 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017041
17042 @param pWDICtx: pointer to the WLAN DAL context
17043 pEventData: pointer to the event information structure
17044
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 @see
17046 @return Result of the function call
17047*/
17048WDI_Status
17049WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017050(
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 WDI_ControlBlockType* pWDICtx,
17052 WDI_EventInfoType* pEventData
17053)
17054{
17055 WDI_PostAssocRspParamsType wdiPostAssocParams;
17056 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17061
17062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 -------------------------------------------------------------------------*/
17065 if (( NULL == pEventData ) ||
17066 ( NULL == pEventData->pEventData))
17067 {
17068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 }
17073
17074 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17075
17076 /*-------------------------------------------------------------------------
17077 Extract response and send it to UMAC
17078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17080 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 sizeof(halPostAssocRspMsg.postAssocRspParams));
17082
17083 /*Extract the Post Assoc STA Params */
17084
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17091
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wdiPostAssocParams.wdiStatus =
17093 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017094
17095 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17096 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017097 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17098 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 WDI_MAC_ADDR_LEN);
17100
17101 /* Extract Post Assoc BSS Params */
17102
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17104 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17105 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106
17107 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17108 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17111 .macSTA, WDI_MAC_ADDR_LEN);
17112
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17115
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17118
17119 wdiPostAssocParams.bssParams.ucBSSIdx =
17120 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17121
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17124
17125 wpalMutexAcquire(&pWDICtx->wptMutex);
17126
17127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017131 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017133
17134 /*-----------------------------------------------------------------------
17135 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 -----------------------------------------------------------------------*/
17138 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17141 {
17142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17143 "Association sequence for this BSS does not yet exist or "
17144 "association no longer in progress - mysterious HAL response");
17145
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17147
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 }
17151
17152 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 -----------------------------------------------------------------------*/
17155 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17156 {
17157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17158 "Post Assoc not allowed before JOIN - failing request "
17159 "strange HAL response");
17160
Jeff Johnsone7245742012-09-05 17:12:55 -070017161 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 }
17166
17167 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 -----------------------------------------------------------------------*/
17170 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17171 {
17172 /*Association was failed by HAL - remove session*/
17173 WDI_DeleteSession(pWDICtx, pBSSSes);
17174 }
17175 else
17176 {
17177 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017178 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017179
17180 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17189
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17192 }
17193
17194 /*Association no longer in progress */
17195 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17196
17197 /*Association no longer in progress - prepare pending assoc for processing*/
17198 WDI_DequeueAssocRequest(pWDICtx);
17199
17200 wpalMutexRelease(&pWDICtx->wptMutex);
17201
17202 /*Notify UMAC*/
17203 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17204
Jeff Johnsone7245742012-09-05 17:12:55 -070017205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017206}/*WDI_ProcessPostAssocRsp*/
17207
17208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017209 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017211
17212 @param pWDICtx: pointer to the WLAN DAL context
17213 pEventData: pointer to the event information structure
17214
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 @see
17216 @return Result of the function call
17217*/
17218WDI_Status
17219WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017220(
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 WDI_ControlBlockType* pWDICtx,
17222 WDI_EventInfoType* pEventData
17223)
17224{
17225 WDI_DelSTARspParamsType wdiDelSTARsp;
17226 WDI_DelSTARspCb wdiDelSTARspCb;
17227 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17230
17231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 -------------------------------------------------------------------------*/
17234 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17235 ( NULL == pEventData->pEventData))
17236 {
17237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 }
17242
17243 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17244
17245 /*-------------------------------------------------------------------------
17246 Extract response and send it to UMAC
17247 -------------------------------------------------------------------------*/
17248 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 sizeof(halDelStaRspMsg.delStaRspParams));
17251
17252 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 wdiDelSTARsp.wdiStatus =
17254 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017255
17256 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17257
17258 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17259 if(staType == WDI_STA_ENTRY_SELF)
17260 {
17261 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17262
17263 /* At this point add the self-STA */
17264
17265 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17266 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17267 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17268
17269#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17270#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17271
17272 //all DPU indices are the same for self STA
17273 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17274 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17275 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17276 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17277 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17278 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017279
17280 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 }
17282 else
17283 {
17284 //Delete the station in the table
17285 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17286 }
17287
17288 /*Notify UMAC*/
17289 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17290
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017292}/*WDI_ProcessDelSTARsp*/
17293
17294
17295/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017296 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017297==========================================================================*/
17298
17299/**
17300 @brief Process Set BSS Key Rsp function (called when a response
17301 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017302
17303 @param pWDICtx: pointer to the WLAN DAL context
17304 pEventData: pointer to the event information structure
17305
Jeff Johnson295189b2012-06-20 16:38:30 -070017306 @see
17307 @return Result of the function call
17308*/
17309WDI_Status
17310WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017311(
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 WDI_ControlBlockType* pWDICtx,
17313 WDI_EventInfoType* pEventData
17314)
17315{
17316 WDI_Status wdiStatus;
17317 eHalStatus halStatus;
17318 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17320
17321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 -------------------------------------------------------------------------*/
17324 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17325 ( NULL == pEventData->pEventData))
17326 {
17327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 }
17332
17333 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17334
17335 /*-------------------------------------------------------------------------
17336 Extract response and send it to UMAC
17337 -------------------------------------------------------------------------*/
17338 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340
17341 if ( eHAL_STATUS_SUCCESS != halStatus )
17342 {
17343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17344 "Set BSS Key failed with status %s (%d)",
17345 WDI_getHALStatusMsgString(halStatus),
17346 halStatus);
17347 /* send the status to UMAC, don't return from here*/
17348 }
17349
17350 /*Notify UMAC*/
17351 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17352
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017354}/*WDI_ProcessSetBssKeyRsp*/
17355
17356/**
17357 @brief Process Remove BSS Key Rsp function (called when a response
17358 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017359
17360 @param pWDICtx: pointer to the WLAN DAL context
17361 pEventData: pointer to the event information structure
17362
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 @see
17364 @return Result of the function call
17365*/
17366WDI_Status
17367WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017368(
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 WDI_ControlBlockType* pWDICtx,
17370 WDI_EventInfoType* pEventData
17371)
17372{
17373 WDI_Status wdiStatus;
17374 eHalStatus halStatus;
17375 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17377
17378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 -------------------------------------------------------------------------*/
17381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17382 ( NULL == pEventData->pEventData))
17383 {
17384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 }
17389
17390 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17391
17392 /*-------------------------------------------------------------------------
17393 Extract response and send it to UMAC
17394 -------------------------------------------------------------------------*/
17395 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017397
17398 if ( eHAL_STATUS_SUCCESS != halStatus )
17399 {
17400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17401 "Remove BSS Key failed with status %s (%d )",
17402 WDI_getHALStatusMsgString(halStatus),
17403 halStatus);
17404 /* send the status to UMAC, don't return from here*/
17405 }
17406
17407 /*Notify UMAC*/
17408 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17409
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411}/*WDI_ProcessSetBssKeyRsp*/
17412
17413
17414/**
17415 @brief Process Set STA Key Rsp function (called when a response
17416 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017417
17418 @param pWDICtx: pointer to the WLAN DAL context
17419 pEventData: pointer to the event information structure
17420
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 @see
17422 @return Result of the function call
17423*/
17424WDI_Status
17425WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017426(
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 WDI_ControlBlockType* pWDICtx,
17428 WDI_EventInfoType* pEventData
17429)
17430{
17431 WDI_Status wdiStatus;
17432 eHalStatus halStatus;
17433 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17435
17436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 -------------------------------------------------------------------------*/
17439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17440 ( NULL == pEventData->pEventData))
17441 {
17442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 }
17447
17448 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17449
17450 /*-------------------------------------------------------------------------
17451 Extract response and send it to UMAC
17452 -------------------------------------------------------------------------*/
17453 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017455
17456 if ( eHAL_STATUS_SUCCESS != halStatus )
17457 {
17458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17459 "Set STA Key failed with status %s (%d)",
17460 WDI_getHALStatusMsgString(halStatus),
17461 halStatus);
17462 /* send the status to UMAC, don't return from here*/
17463 }
17464
17465 /*Notify UMAC*/
17466 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17467
Jeff Johnsone7245742012-09-05 17:12:55 -070017468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017469}/*WDI_ProcessSetSTAKeyRsp*/
17470
17471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017474
17475 @param pWDICtx: pointer to the WLAN DAL context
17476 pEventData: pointer to the event information structure
17477
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 @see
17479 @return Result of the function call
17480*/
17481WDI_Status
17482WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017483(
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 WDI_ControlBlockType* pWDICtx,
17485 WDI_EventInfoType* pEventData
17486)
17487{
17488 WDI_Status wdiStatus;
17489 eHalStatus halStatus;
17490 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17492
17493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 -------------------------------------------------------------------------*/
17496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17497 ( NULL == pEventData->pEventData))
17498 {
17499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 }
17504
17505 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17506
17507 /*-------------------------------------------------------------------------
17508 Extract response and send it to UMAC
17509 -------------------------------------------------------------------------*/
17510 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017512
17513 if ( eHAL_STATUS_SUCCESS != halStatus )
17514 {
17515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17516 "Remove STA Key failed with status %s (%d)",
17517 WDI_getHALStatusMsgString(halStatus),
17518 halStatus);
17519 /* send the status to UMAC, don't return from here*/
17520 }
17521
17522 /*Notify UMAC*/
17523 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17524
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017526}/*WDI_ProcessRemoveStaKeyRsp*/
17527
17528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017531
17532 @param pWDICtx: pointer to the WLAN DAL context
17533 pEventData: pointer to the event information structure
17534
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 @see
17536 @return Result of the function call
17537*/
17538WDI_Status
17539WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017540(
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 WDI_ControlBlockType* pWDICtx,
17542 WDI_EventInfoType* pEventData
17543)
17544{
17545 WDI_Status wdiStatus;
17546 eHalStatus halStatus;
17547 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17549
17550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 -------------------------------------------------------------------------*/
17553 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17554 ( NULL == pEventData->pEventData))
17555 {
17556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 }
17561
17562 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17563
17564 /*-------------------------------------------------------------------------
17565 Extract response and send it to UMAC
17566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 wpalMemoryCopy( &halStatus,
17568 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 sizeof(halStatus));
17570
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017572
17573 if ( eHAL_STATUS_SUCCESS != halStatus )
17574 {
17575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17576 "Set STA Key failed with status %s (%d)",
17577 WDI_getHALStatusMsgString(halStatus),
17578 halStatus);
17579 /* send the status to UMAC, don't return from here*/
17580 }
17581
17582 /*Notify UMAC*/
17583 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17584
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017586}/*WDI_ProcessSetSTABcastKeyRsp*/
17587
17588/**
17589 @brief Process Remove STA Bcast Key Rsp function (called when a
17590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017591
17592 @param pWDICtx: pointer to the WLAN DAL context
17593 pEventData: pointer to the event information structure
17594
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 @see
17596 @return Result of the function call
17597*/
17598WDI_Status
17599WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017600(
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 WDI_ControlBlockType* pWDICtx,
17602 WDI_EventInfoType* pEventData
17603)
17604{
17605 WDI_Status wdiStatus;
17606 eHalStatus halStatus;
17607 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17609
17610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 -------------------------------------------------------------------------*/
17613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17614 ( NULL == pEventData->pEventData))
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 }
17621
17622 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17623
17624 /*-------------------------------------------------------------------------
17625 Extract response and send it to UMAC
17626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wpalMemoryCopy( &halStatus,
17628 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 sizeof(halStatus));
17630
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017632
17633 if ( eHAL_STATUS_SUCCESS != halStatus )
17634 {
17635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17636 "Remove STA Key failed with status %s (%d)",
17637 WDI_getHALStatusMsgString(halStatus),
17638 halStatus);
17639 /* send the status to UMAC, don't return from here*/
17640 }
17641
17642 /*Notify UMAC*/
17643 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17644
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017646}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17647
17648
17649/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017651==========================================================================*/
17652
17653/**
17654 @brief Process Add TSpec Rsp function (called when a response
17655 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017656
17657 @param pWDICtx: pointer to the WLAN DAL context
17658 pEventData: pointer to the event information structure
17659
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 @see
17661 @return Result of the function call
17662*/
17663WDI_Status
17664WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017665(
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 WDI_ControlBlockType* pWDICtx,
17667 WDI_EventInfoType* pEventData
17668)
17669{
17670 WDI_Status wdiStatus;
17671 eHalStatus halStatus;
17672 WDI_AddTsRspCb wdiAddTsRspCb;
17673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17674
17675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 -------------------------------------------------------------------------*/
17678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17679 ( NULL == pEventData->pEventData))
17680 {
17681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 }
17686
17687 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17688
17689 /*-------------------------------------------------------------------------
17690 Extract response and send it to UMAC
17691 -------------------------------------------------------------------------*/
17692 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017694
17695 /*Notify UMAC*/
17696 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17697
Jeff Johnsone7245742012-09-05 17:12:55 -070017698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017699}/*WDI_ProcessAddTSpecRsp*/
17700
17701
Sunil Duttbd736ed2014-05-26 21:19:41 +053017702
17703#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17704
17705WDI_Status
17706WDI_ProcessLLStatsSetRsp
17707(
17708 WDI_ControlBlockType* pWDICtx,
17709 WDI_EventInfoType* pEventData
17710)
17711{
17712 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17713
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17715 "%s: Enter ", __func__);
17716 /*-------------------------------------------------------------------------
17717 Sanity check
17718 -------------------------------------------------------------------------*/
17719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17720 ( NULL == pEventData->pEventData))
17721 {
17722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17723 "%s: Invalid parameters", __func__);
17724 WDI_ASSERT(0);
17725 return WDI_STATUS_E_FAILURE;
17726 }
17727
17728 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17729
17730 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17731
17732 return WDI_STATUS_SUCCESS;
17733}
17734
17735WDI_Status
17736WDI_ProcessLLStatsGetRsp
17737(
17738 WDI_ControlBlockType* pWDICtx,
17739 WDI_EventInfoType* pEventData
17740)
17741{
17742 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17743
17744 /*-------------------------------------------------------------------------
17745 Sanity check
17746 -------------------------------------------------------------------------*/
17747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17748 ( NULL == pEventData->pEventData))
17749 {
17750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17751 "%s: Invalid parameters", __func__);
17752 WDI_ASSERT(0);
17753 return WDI_STATUS_E_FAILURE;
17754 }
17755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17756 "%s: Enter ", __func__);
17757
17758 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17759
17760 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17761
17762 return WDI_STATUS_SUCCESS;
17763}
17764
17765WDI_Status
17766WDI_ProcessLLStatsClearRsp
17767(
17768 WDI_ControlBlockType* pWDICtx,
17769 WDI_EventInfoType* pEventData
17770)
17771{
17772 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17773
17774 /*-------------------------------------------------------------------------
17775 Sanity check
17776 -------------------------------------------------------------------------*/
17777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17778 ( NULL == pEventData->pEventData))
17779 {
17780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17781 "%s: Invalid parameters", __func__);
17782 WDI_ASSERT(0);
17783 return WDI_STATUS_E_FAILURE;
17784 }
17785
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17787 "%s: CLEAR RESPONSE CALL BACK", __func__);
17788 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17789
17790 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17791
17792 return WDI_STATUS_SUCCESS;
17793}
17794#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17795
Jeff Johnson295189b2012-06-20 16:38:30 -070017796/**
17797 @brief Process Del TSpec Rsp function (called when a response
17798 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017799
17800 @param pWDICtx: pointer to the WLAN DAL context
17801 pEventData: pointer to the event information structure
17802
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 @see
17804 @return Result of the function call
17805*/
17806WDI_Status
17807WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017808(
Jeff Johnson295189b2012-06-20 16:38:30 -070017809 WDI_ControlBlockType* pWDICtx,
17810 WDI_EventInfoType* pEventData
17811)
17812{
17813 WDI_Status wdiStatus;
17814 eHalStatus halStatus;
17815 WDI_DelTsRspCb wdiDelTsRspCb;
17816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17817
17818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 -------------------------------------------------------------------------*/
17821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17822 ( NULL == pEventData->pEventData))
17823 {
17824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 }
17829
17830 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17831
17832 /*-------------------------------------------------------------------------
17833 Extract response and send it to UMAC
17834 -------------------------------------------------------------------------*/
17835 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017836 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017837
17838 /*Notify UMAC*/
17839 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17840
Jeff Johnsone7245742012-09-05 17:12:55 -070017841 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017842}/*WDI_ProcessDelTSpecRsp*/
17843
17844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017847
17848 @param pWDICtx: pointer to the WLAN DAL context
17849 pEventData: pointer to the event information structure
17850
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 @see
17852 @return Result of the function call
17853*/
17854WDI_Status
17855WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017856(
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 WDI_ControlBlockType* pWDICtx,
17858 WDI_EventInfoType* pEventData
17859)
17860{
17861 WDI_Status wdiStatus;
17862 eHalStatus halStatus;
17863 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17865
17866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 -------------------------------------------------------------------------*/
17869 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17870 ( NULL == pEventData->pEventData))
17871 {
17872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 }
17877
17878 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17879
17880 /*-------------------------------------------------------------------------
17881 Extract response and send it to UMAC
17882 -------------------------------------------------------------------------*/
17883 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017884 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017885
17886 /*Notify UMAC*/
17887 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17888
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017890}/*WDI_ProcessUpdateEDCAParamsRsp*/
17891
17892
17893/**
17894 @brief Process Add BA Rsp function (called when a response
17895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017896
17897 @param pWDICtx: pointer to the WLAN DAL context
17898 pEventData: pointer to the event information structure
17899
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 @see
17901 @return Result of the function call
17902*/
17903WDI_Status
17904WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017905(
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ControlBlockType* pWDICtx,
17907 WDI_EventInfoType* pEventData
17908)
17909{
17910 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17911
17912 tAddBASessionRspParams halBASessionRsp;
17913 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17914
Jeff Johnsone7245742012-09-05 17:12:55 -070017915
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17917
17918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 -------------------------------------------------------------------------*/
17921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17922 ( NULL == pEventData->pEventData))
17923 {
17924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 }
17929
17930 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17931
17932 /*-------------------------------------------------------------------------
17933 Extract response and send it to UMAC
17934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017935 wpalMemoryCopy( &halBASessionRsp,
17936 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 sizeof(halBASessionRsp));
17938
17939 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17940
Jeff Johnson43971f52012-07-17 12:26:56 -070017941 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 {
17943 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17944 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17945 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17946 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17947 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17948 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17949 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17950 }
17951
17952 /*Notify UMAC*/
17953 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17954
Jeff Johnsone7245742012-09-05 17:12:55 -070017955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017956}/*WDI_ProcessAddSessionBARsp*/
17957
17958
17959/**
17960 @brief Process Del BA Rsp function (called when a response
17961 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017962
17963 @param pWDICtx: pointer to the WLAN DAL context
17964 pEventData: pointer to the event information structure
17965
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 @see
17967 @return Result of the function call
17968*/
17969WDI_Status
17970WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017971(
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 WDI_ControlBlockType* pWDICtx,
17973 WDI_EventInfoType* pEventData
17974)
17975{
17976 WDI_Status wdiStatus;
17977 eHalStatus halStatus;
17978 WDI_DelBARspCb wdiDelBARspCb;
17979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17980
17981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 -------------------------------------------------------------------------*/
17984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17985 ( NULL == pEventData->pEventData))
17986 {
17987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 }
17992
17993 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17994
17995 /*-------------------------------------------------------------------------
17996 Extract response and send it to UMAC
17997 -------------------------------------------------------------------------*/
17998 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017999 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018000
18001 if ( eHAL_STATUS_SUCCESS == halStatus )
18002 {
18003 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18004 }
18005
18006 /*Notify UMAC*/
18007 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18008
Jeff Johnsone7245742012-09-05 17:12:55 -070018009 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018010}/*WDI_ProcessDelBARsp*/
18011
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018012#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018013/**
18014 @brief Process TSM Stats Rsp function (called when a response
18015 is being received over the bus from HAL)
18016
18017 @param pWDICtx: pointer to the WLAN DAL context
18018 pEventData: pointer to the event information structure
18019
18020 @see
18021 @return Result of the function call
18022*/
18023WDI_Status
18024WDI_ProcessTsmStatsRsp
18025(
18026 WDI_ControlBlockType* pWDICtx,
18027 WDI_EventInfoType* pEventData
18028)
18029{
18030 WDI_TsmRspCb wdiTsmStatsRspCb;
18031 tTsmStatsRspMsg halTsmStatsRspMsg;
18032 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18034
18035 /*-------------------------------------------------------------------------
18036 Sanity check
18037 -------------------------------------------------------------------------*/
18038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18039 ( NULL == pEventData->pEventData))
18040 {
18041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 WDI_ASSERT(0);
18044 return WDI_STATUS_E_FAILURE;
18045 }
18046
18047 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18048
18049 /*-------------------------------------------------------------------------
18050 Unpack HAL Response Message - the header was already extracted by the
18051 main Response Handling procedure
18052 -------------------------------------------------------------------------*/
18053 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18054 pEventData->pEventData,
18055 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18056
18057 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18058 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18059 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18060 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18061 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18062 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18063 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18064 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18065 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18066 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18067 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18068 halTsmStatsRspMsg.tsmStatsRspParams.status);
18069
18070 /*Notify UMAC*/
18071 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18072
18073 return WDI_STATUS_SUCCESS;
18074}/*WDI_ProcessTsmStatsRsp*/
18075
18076#endif
18077
18078
18079
18080/**
18081 @brief Process Flush AC Rsp function (called when a response
18082 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018083
18084 @param pWDICtx: pointer to the WLAN DAL context
18085 pEventData: pointer to the event information structure
18086
Jeff Johnson295189b2012-06-20 16:38:30 -070018087 @see
18088 @return Result of the function call
18089*/
18090WDI_Status
18091WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018092(
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 WDI_ControlBlockType* pWDICtx,
18094 WDI_EventInfoType* pEventData
18095)
18096{
18097 WDI_Status wdiStatus;
18098 eHalStatus halStatus;
18099 WDI_FlushAcRspCb wdiFlushAcRspCb;
18100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18101
18102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 -------------------------------------------------------------------------*/
18105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18106 ( NULL == pEventData->pEventData))
18107 {
18108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 }
18113
18114 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18115
18116 /*-------------------------------------------------------------------------
18117 Extract response and send it to UMAC
18118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 wpalMemoryCopy( &halStatus,
18120 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 sizeof(halStatus));
18122
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018124
18125 /*Notify UMAC*/
18126 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18127
Jeff Johnsone7245742012-09-05 17:12:55 -070018128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018129}/*WDI_ProcessFlushAcRsp*/
18130
18131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018134
18135 @param pWDICtx: pointer to the WLAN DAL context
18136 pEventData: pointer to the event information structure
18137
Jeff Johnson295189b2012-06-20 16:38:30 -070018138 @see
18139 @return Result of the function call
18140*/
18141WDI_Status
18142WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018143(
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 WDI_ControlBlockType* pWDICtx,
18145 WDI_EventInfoType* pEventData
18146)
18147{
18148 WDI_Status wdiStatus;
18149 eHalStatus halStatus;
18150 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18152
18153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 -------------------------------------------------------------------------*/
18156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18157 ( NULL == pEventData->pEventData))
18158 {
18159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 }
18164
18165 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18166
18167 /*-------------------------------------------------------------------------
18168 Extract response and send it to UMAC
18169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 wpalMemoryCopy( &halStatus,
18171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 sizeof(halStatus));
18173
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018175
18176 /*Notify UMAC*/
18177 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18178
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180}/*WDI_ProcessBtAmpEventRsp*/
18181
18182
18183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018186
18187 @param pWDICtx: pointer to the WLAN DAL context
18188 pEventData: pointer to the event information structure
18189
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 @see
18191 @return Result of the function call
18192*/
18193WDI_Status
18194WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018195(
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 WDI_ControlBlockType* pWDICtx,
18197 WDI_EventInfoType* pEventData
18198)
18199{
18200 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18201 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18202 tAddStaSelfRspMsg halAddStaSelfRsp;
18203 WDI_AddStaParams wdiAddSTAParam = {0};
18204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18205
18206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 -------------------------------------------------------------------------*/
18209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18210 ( NULL == pEventData->pEventData))
18211 {
18212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 }
18217
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18220
18221 /*-------------------------------------------------------------------------
18222 Extract response and send it to UMAC
18223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018224 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18225 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18227
18228
Jeff Johnsone7245742012-09-05 17:12:55 -070018229 wdiAddSTASelfParams.wdiStatus =
18230 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018231
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18238
18239 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18240 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18241 WDI_MAC_ADDR_LEN);
18242
18243
18244#ifdef HAL_SELF_STA_PER_BSS
18245
18246 /* At this point add the self-STA */
18247
18248 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18249 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18250 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18251
18252 //all DPU indices are the same for self STA
18253
18254 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018255 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018256 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18257 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18258 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18259 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18260 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18261
18262 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18263 WDI_MAC_ADDR_LEN);
18264
18265 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18266 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18267
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018269 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18270 {
18271 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18272 }
18273#endif
18274
18275 /*Notify UMAC*/
18276 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18277
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018279}/*WDI_ProcessAddSTASelfRsp*/
18280
18281
18282
18283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018286
18287 @param pWDICtx: pointer to the WLAN DAL context
18288 pEventData: pointer to the event information structure
18289
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 @see
18291 @return Result of the function call
18292*/
18293WDI_Status
18294WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018295(
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 WDI_ControlBlockType* pWDICtx,
18297 WDI_EventInfoType* pEventData
18298)
18299{
18300 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18301 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18302 tDelStaSelfRspParams delStaSelfRspParams;
18303 wpt_uint8 ucStaIdx;
18304
18305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18306
18307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 -------------------------------------------------------------------------*/
18310 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18311 ( NULL == pEventData->pEventData))
18312 {
18313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 }
18318
18319 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18320
18321 /*-------------------------------------------------------------------------
18322 Extract response and send it to UMAC
18323 -------------------------------------------------------------------------*/
18324
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 (wpt_uint8*)pEventData->pEventData,
18327 sizeof(tDelStaSelfRspParams));
18328
Jeff Johnsone7245742012-09-05 17:12:55 -070018329 wdiDelStaSelfRspParams.wdiStatus =
18330 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018331
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18334 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18335 {
18336 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018337 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 delStaSelfRspParams.selfMacAddr,
18339 &ucStaIdx);
18340 if(WDI_STATUS_E_FAILURE == wdiStatus)
18341 {
18342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018343 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 }
18347 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18348 }
18349
18350 /*Notify UMAC*/
18351 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18352
18353 return WDI_STATUS_SUCCESS;
18354}
18355
Jeff Johnsone7245742012-09-05 17:12:55 -070018356#ifdef FEATURE_OEM_DATA_SUPPORT
18357/**
18358 @brief Start Oem Data Rsp function (called when a
18359 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018360
Jeff Johnsone7245742012-09-05 17:12:55 -070018361 @param pWDICtx: pointer to the WLAN DAL context
18362 pEventData: pointer to the event information structure
18363
18364 @see
18365 @return Result of the function call
18366*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018367
18368WDI_Status
18369WDI_ProcessStartOemDataRsp
18370(
18371 WDI_ControlBlockType* pWDICtx,
18372 WDI_EventInfoType* pEventData
18373)
18374{
18375 WDI_oemDataRspCb wdiOemDataRspCb;
18376 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18377 tStartOemDataRspParams* halStartOemDataRspParams;
18378
18379 /*-------------------------------------------------------------------------
18380 Sanity check
18381 -------------------------------------------------------------------------*/
18382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18383 ( NULL == pEventData->pEventData))
18384 {
18385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018386 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 WDI_ASSERT(0);
18388 return WDI_STATUS_E_FAILURE;
18389 }
18390
18391 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18392
18393 /*-------------------------------------------------------------------------
18394 Extract response and send it to UMAC
18395 -------------------------------------------------------------------------*/
18396 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18397
18398
18399 //It is the responsibility of the application code to check for failure
18400 //conditions!
18401
18402 //Allocate memory for WDI OEM DATA RSP structure
18403 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18404
18405 if(NULL == wdiOemDataRspParams)
18406 {
18407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018408 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 pWDICtx, pEventData, pEventData->pEventData);
18410 WDI_ASSERT(0);
18411 return WDI_STATUS_E_FAILURE;
18412 }
18413
18414 /* Populate WDI structure members */
18415 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18416
18417 /*Notify UMAC*/
18418 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18419
18420 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18421 wpalMemoryFree(wdiOemDataRspParams);
18422
18423 return WDI_STATUS_SUCCESS;
18424}/*WDI_PrcoessStartOemDataRsp*/
18425#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018426
18427/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018429===========================================================================*/
18430
18431/**
18432 @brief Process Channel Switch Rsp function (called when a response
18433 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018434
18435 @param pWDICtx: pointer to the WLAN DAL context
18436 pEventData: pointer to the event information structure
18437
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 @see
18439 @return Result of the function call
18440*/
18441WDI_Status
18442WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018443(
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 WDI_ControlBlockType* pWDICtx,
18445 WDI_EventInfoType* pEventData
18446)
18447{
18448 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18449 WDI_SwitchChRspCb wdiChSwitchRspCb;
18450 tSwitchChannelRspParams halSwitchChannelRsp;
18451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18452
18453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 -------------------------------------------------------------------------*/
18456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18457 ( NULL == pEventData->pEventData))
18458 {
18459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 }
18464
18465 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18466
18467 /*-------------------------------------------------------------------------
18468 Extract response and send it to UMAC
18469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 (wpt_uint8*)pEventData->pEventData,
18472 sizeof(halSwitchChannelRsp));
18473
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 wdiSwitchChRsp.wdiStatus =
18475 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18477
18478#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018480#endif
18481
18482 /*Notify UMAC*/
18483 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18484
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018486}/*WDI_ProcessChannelSwitchRsp*/
18487
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018488/**
18489 @brief Process Channel Switch Rsp function (called when a response
18490 is being received over the bus from HAL against
18491 WDI_ProcessChannelSwitchReq_V1)
18492
18493 @param pWDICtx: pointer to the WLAN DAL context
18494 pEventData: pointer to the event information structure
18495
18496 @see
18497 @return Result of the function call
18498*/
18499
18500WDI_Status
18501WDI_ProcessChannelSwitchRsp_V1
18502(
18503 WDI_ControlBlockType* pWDICtx,
18504 WDI_EventInfoType* pEventData
18505)
18506{
18507 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18508 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18509 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18511
18512 /*-------------------------------------------------------------------------
18513 Sanity check
18514 -------------------------------------------------------------------------*/
18515 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18516 ( NULL == pEventData->pEventData))
18517 {
18518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18519 "%s: Invalid parameters", __func__);
18520 WDI_ASSERT(0);
18521 return WDI_STATUS_E_FAILURE;
18522 }
18523
18524 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18525
18526 /*-------------------------------------------------------------------------
18527 Extract response and send it to UMAC
18528 -------------------------------------------------------------------------*/
18529 wpalMemoryCopy( &halSwitchChannelRsp,
18530 (wpt_uint8*)pEventData->pEventData,
18531 sizeof(halSwitchChannelRsp));
18532
18533 wdiSwitchChRsp.wdiStatus =
18534 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18535 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18536
18537#ifdef WLAN_FEATURE_VOWIFI
18538 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18539#endif
18540
18541 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18542 if (( NULL == wdiChSwitchRspCb ) )
18543 {
18544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18545 "%s: ### Call back function is null", __func__);
18546 WDI_ASSERT(0);
18547 return WDI_STATUS_E_FAILURE;
18548 }
18549 /*Notify UMAC*/
18550 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18551
18552 return WDI_STATUS_SUCCESS;
18553}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018554
18555/**
18556 @brief Process Config STA Rsp function (called when a response
18557 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018558
18559 @param pWDICtx: pointer to the WLAN DAL context
18560 pEventData: pointer to the event information structure
18561
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 @see
18563 @return Result of the function call
18564*/
18565WDI_Status
18566WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018567(
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 WDI_ControlBlockType* pWDICtx,
18569 WDI_EventInfoType* pEventData
18570)
18571{
18572 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18573 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18574 WDI_AddStaParams wdiAddSTAParam;
18575
18576 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018578
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18581
18582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 -------------------------------------------------------------------------*/
18585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18586 ( NULL == pEventData->pEventData))
18587 {
18588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 }
18593
18594 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18595
18596 /*-------------------------------------------------------------------------
18597 Extract response and send it to UMAC
18598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18600 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 sizeof(halConfigStaRsp.configStaRspParams));
18602
18603
18604 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18605 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18606 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18607 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18608 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18609
18610 /* MAC Address of STA - take from cache as it does not come back in the
18611 response*/
18612 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018615
18616 wdiCfgSTAParams.wdiStatus =
18617 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018618
18619 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18620 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18621 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18622
18623 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18624 {
18625 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18626 {
18627 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18630 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018631
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 wdiAddSTAParam.ucHTCapable =
18636 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18637 wdiAddSTAParam.ucStaType =
18638 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018639 wdiAddSTAParam.ucRmfEnabled =
18640 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018641
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18644 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018646
18647 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18648 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18649 WDI_MAC_ADDR_LEN);
18650
18651 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18652 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18653 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018654
18655 if ( NULL == pBSSSes )
18656 {
18657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18658 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018659
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 }
18663
18664 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018674
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18676 }
18677 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18678 {
18679 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18680
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018691 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 halConfigStaRsp.configStaRspParams.ucUcastSig;
18695 }
18696 }
18697
18698 /*Notify UMAC*/
18699 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18700
Jeff Johnsone7245742012-09-05 17:12:55 -070018701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018702}/*WDI_ProcessConfigStaRsp*/
18703
18704
18705/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018706 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018707 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018708
18709 @param pWDICtx: pointer to the WLAN DAL context
18710 pEventData: pointer to the event information structure
18711
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 @see
18713 @return Result of the function call
18714*/
18715WDI_Status
18716WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018717(
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 WDI_ControlBlockType* pWDICtx,
18719 WDI_EventInfoType* pEventData
18720)
18721{
18722 WDI_Status wdiStatus;
18723 eHalStatus halStatus;
18724 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18725
18726 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18729
18730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 -------------------------------------------------------------------------*/
18733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18734 ( NULL == pEventData->pEventData))
18735 {
18736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 }
18741
18742 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18743
18744 wpalMutexAcquire(&pWDICtx->wptMutex);
18745
18746 /*If the link is being transitioned to idle - the BSS is to be deleted
18747 - this type of ending a session is possible when UMAC has failed an
18748 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18751 {
18752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18756 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18757 &pBSSSes);
18758
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 /*-----------------------------------------------------------------------
18760 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 -----------------------------------------------------------------------*/
18763 if ( NULL == pBSSSes )
18764 {
18765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18766 "Set link response received outside association session");
18767 }
18768 else
18769 {
18770 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18771 will be del BSS coming after this to stop the beaconing & cleaning up the
18772 sessions*/
18773 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18774 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18775 {
18776 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018777 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 -----------------------------------------------------------------------*/
18779 WDI_DeleteSession(pWDICtx, pBSSSes);
18780
18781 /*-----------------------------------------------------------------------
18782 Check to see if this association is in progress - if so disable the
18783 flag as this has ended
18784 -----------------------------------------------------------------------*/
18785 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018786 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 /*Association no longer in progress */
18788 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18789 /*Association no longer in progress - prepare pending assoc for processing*/
18790 WDI_DequeueAssocRequest(pWDICtx);
18791 }
18792 }
18793 }
18794 }
18795 /* If the link state has been set to POST ASSOC, reset the "association in
18796 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018797 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18799 {
18800 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18801 WDI_DequeueAssocRequest(pWDICtx);
18802 }
18803
18804 wpalMutexRelease(&pWDICtx->wptMutex);
18805
18806 /*-------------------------------------------------------------------------
18807 Extract response and send it to UMAC
18808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 wpalMemoryCopy( &halStatus,
18810 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 sizeof(halStatus));
18812
Jeff Johnsone7245742012-09-05 17:12:55 -070018813 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018814
18815 /*Notify UMAC*/
18816 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18817
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018819}/*WDI_ProcessSetLinkStateRsp*/
18820
18821/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018824
18825 @param pWDICtx: pointer to the WLAN DAL context
18826 pEventData: pointer to the event information structure
18827
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 @see
18829 @return Result of the function call
18830*/
18831WDI_Status
18832WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018833(
Jeff Johnson295189b2012-06-20 16:38:30 -070018834 WDI_ControlBlockType* pWDICtx,
18835 WDI_EventInfoType* pEventData
18836)
18837{
18838 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18839 WDI_GetStatsRspCb wdiGetStatsRspCb;
18840 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018841
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18843
18844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 -------------------------------------------------------------------------*/
18847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18848 ( NULL == pEventData->pEventData))
18849 {
18850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 }
18855
18856 /*-------------------------------------------------------------------------
18857 Extract response and send it to UMAC
18858 -------------------------------------------------------------------------*/
18859 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18860
18861 /*allocate the stats response buffer */
18862 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18863 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18864 + sizeof(WDI_GetStatsRspParamsType));
18865
18866 if(NULL == wdiGetStatsRsp)
18867 {
18868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018869 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 pWDICtx, pEventData, pEventData->pEventData);
18871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 }
18874
18875 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18876
18877 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18878 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18879 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18880 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18881 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18882 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18883
18884 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18885 wpalMemoryCopy(wdiGetStatsRsp + 1,
18886 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18887 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18888
18889 /*Notify UMAC*/
18890 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18891
18892 wpalMemoryFree(wdiGetStatsRsp);
18893
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018895}/*WDI_ProcessGetStatsRsp*/
18896
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018897#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018898/**
18899 @brief Process Get Roam Rssi Rsp function (called when a response is
18900 being received over the bus from HAL)
18901
18902 @param pWDICtx: pointer to the WLAN DAL context
18903 pEventData: pointer to the event information structure
18904
18905 @see
18906 @return Result of the function call
18907*/
18908WDI_Status
18909WDI_ProcessGetRoamRssiRsp
18910(
18911 WDI_ControlBlockType* pWDICtx,
18912 WDI_EventInfoType* pEventData
18913)
18914{
18915 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18916 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18917 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18919
18920 /*-------------------------------------------------------------------------
18921 Sanity check
18922 -------------------------------------------------------------------------*/
18923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18924 ( NULL == pEventData->pEventData))
18925 {
18926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18927 "%s: Invalid parameters", __func__);
18928 WDI_ASSERT(0);
18929 return WDI_STATUS_E_FAILURE;
18930 }
18931
18932 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18933 if(NULL == wdiGetRoamRssiRspCb)
18934 {
18935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18936 "%s: call back function is NULL", __func__);
18937 WDI_ASSERT(0);
18938 return WDI_STATUS_E_FAILURE;
18939 }
18940
18941 /*-------------------------------------------------------------------------
18942 Extract response and send it to UMAC
18943 -------------------------------------------------------------------------*/
18944 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18945 pEventData->pEventData,
18946 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18947
18948 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18949 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18950 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18951
18952 /*Notify UMAC*/
18953 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18954
18955 return WDI_STATUS_SUCCESS;
18956}/*WDI_ProcessGetRoamRssiRsp*/
18957#endif
18958
Jeff Johnson295189b2012-06-20 16:38:30 -070018959
18960/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018963
18964 @param pWDICtx: pointer to the WLAN DAL context
18965 pEventData: pointer to the event information structure
18966
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 @see
18968 @return Result of the function call
18969*/
18970WDI_Status
18971WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018972(
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 WDI_ControlBlockType* pWDICtx,
18974 WDI_EventInfoType* pEventData
18975)
18976{
18977 WDI_Status wdiStatus;
18978 eHalStatus halStatus;
18979 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18981
18982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018983 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 -------------------------------------------------------------------------*/
18985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18986 ( NULL == pEventData->pEventData))
18987 {
18988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 }
18993
18994 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18995
18996 /*-------------------------------------------------------------------------
18997 Extract response and send it to UMAC
18998 -------------------------------------------------------------------------*/
18999 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019000 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019001
19002 /*Notify UMAC*/
19003 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19004
Jeff Johnsone7245742012-09-05 17:12:55 -070019005 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019006}/*WDI_ProcessUpdateCfgRsp*/
19007
19008
19009
19010/**
19011 @brief Process Add BA Rsp function (called when a response
19012 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019013
19014 @param pWDICtx: pointer to the WLAN DAL context
19015 pEventData: pointer to the event information structure
19016
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 @see
19018 @return Result of the function call
19019*/
19020WDI_Status
19021WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019022(
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 WDI_ControlBlockType* pWDICtx,
19024 WDI_EventInfoType* pEventData
19025)
19026{
19027 WDI_AddBARspCb wdiAddBARspCb;
19028
19029 tAddBARspParams halAddBARsp;
19030 WDI_AddBARspinfoType wdiAddBARsp;
19031
19032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19033
19034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 -------------------------------------------------------------------------*/
19037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19038 ( NULL == pEventData->pEventData))
19039 {
19040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 }
19045
19046 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19047
19048 /*-------------------------------------------------------------------------
19049 Extract response and send it to UMAC
19050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 wpalMemoryCopy( &halAddBARsp,
19052 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 sizeof(halAddBARsp));
19054
19055 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19056
Jeff Johnson43971f52012-07-17 12:26:56 -070019057 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 {
19059 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19060 }
19061
19062 /*Notify UMAC*/
19063 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19064
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019066}/*WDI_ProcessAddSessionBARsp*/
19067
19068/**
19069 @brief Process Add BA Rsp function (called when a response
19070 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019071
19072 @param pWDICtx: pointer to the WLAN DAL context
19073 pEventData: pointer to the event information structure
19074
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 @see
19076 @return Result of the function call
19077*/
19078WDI_Status
19079WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019080(
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 WDI_ControlBlockType* pWDICtx,
19082 WDI_EventInfoType* pEventData
19083)
19084{
19085 WDI_TriggerBARspCb wdiTriggerBARspCb;
19086
19087 tTriggerBARspParams* halTriggerBARsp;
19088 tTriggerBaRspCandidate* halBaCandidate;
19089 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19090 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19091 wpt_uint16 index;
19092 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019093 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19095
19096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 -------------------------------------------------------------------------*/
19099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19100 ( NULL == pEventData->pEventData))
19101 {
19102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 }
19107
19108 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19109
19110 /*-------------------------------------------------------------------------
19111 Extract response and send it to UMAC
19112 -------------------------------------------------------------------------*/
19113 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19114
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019115 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19116
19117 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19118 {
19119 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019120 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019122
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019123 if(NULL == wdiTriggerBARsp)
19124 {
19125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019126 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019127 pWDICtx, pEventData, pEventData->pEventData);
19128 WDI_ASSERT(0);
19129 return WDI_STATUS_E_FAILURE;
19130 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019131
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019132 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19133
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19137
19138 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19139 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19140
19141 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19142 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19145 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19146 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019149 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019150 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19151 }
19152 wdiTriggerBARspCandidate++;
19153 halBaCandidate++;
19154 }
19155 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019156 else
19157 {
19158 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19159
19160 if(NULL == wdiTriggerBARsp)
19161 {
19162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019163 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019164 pWDICtx, pEventData, pEventData->pEventData);
19165 WDI_ASSERT(0);
19166 return WDI_STATUS_E_FAILURE;
19167 }
19168
19169 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19170
19171 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019172
19173 /*Notify UMAC*/
19174 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19175
19176 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019178}/*WDI_ProcessAddSessionBARsp*/
19179
19180/**
19181 @brief Process Update Beacon Params Rsp function (called when a response
19182 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019183
19184 @param pWDICtx: pointer to the WLAN DAL context
19185 pEventData: pointer to the event information structure
19186
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 @see
19188 @return Result of the function call
19189*/
19190WDI_Status
19191WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019192(
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 WDI_ControlBlockType* pWDICtx,
19194 WDI_EventInfoType* pEventData
19195)
19196{
19197 WDI_Status wdiStatus;
19198 eHalStatus halStatus;
19199 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19201
19202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 -------------------------------------------------------------------------*/
19205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19206 ( NULL == pEventData->pEventData))
19207 {
19208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 }
19213
19214 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19215
19216 /*-------------------------------------------------------------------------
19217 Extract response and send it to UMAC
19218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019219 wpalMemoryCopy( &halStatus,
19220 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019221 sizeof(halStatus));
19222
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019224
19225 /*Notify UMAC*/
19226 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19227
Jeff Johnsone7245742012-09-05 17:12:55 -070019228 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019229}/*WDI_ProcessUpdateBeaconParamsRsp*/
19230
19231/**
19232 @brief Process Send Beacon template Rsp function (called when a response
19233 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019234
19235 @param pWDICtx: pointer to the WLAN DAL context
19236 pEventData: pointer to the event information structure
19237
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 @see
19239 @return Result of the function call
19240*/
19241WDI_Status
19242WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019243(
Jeff Johnson295189b2012-06-20 16:38:30 -070019244 WDI_ControlBlockType* pWDICtx,
19245 WDI_EventInfoType* pEventData
19246)
19247{
19248 WDI_Status wdiStatus;
19249 eHalStatus halStatus;
19250 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19252
19253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 -------------------------------------------------------------------------*/
19256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19257 ( NULL == pEventData->pEventData))
19258 {
19259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 }
19264
19265 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19266
19267 /*-------------------------------------------------------------------------
19268 Extract response and send it to UMAC
19269 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 wpalMemoryCopy( &halStatus,
19271 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 sizeof(halStatus));
19273
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019275
19276 /*Notify UMAC*/
19277 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19278
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019280}/*WDI_ProcessSendBeaconParamsRsp*/
19281
Jeff Johnsone7245742012-09-05 17:12:55 -070019282
Jeff Johnson295189b2012-06-20 16:38:30 -070019283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
19287 @param pWDICtx: pointer to the WLAN DAL context
19288 pEventData: pointer to the event information structure
19289
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 @see
19291 @return Result of the function call
19292*/
19293WDI_Status
19294WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019295(
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 WDI_ControlBlockType* pWDICtx,
19297 WDI_EventInfoType* pEventData
19298)
19299{
19300 WDI_Status wdiStatus;
19301 eHalStatus halStatus;
19302 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19304
19305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 -------------------------------------------------------------------------*/
19308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19309 ( NULL == pEventData->pEventData))
19310 {
19311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 }
19316
19317 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19318
19319 /*-------------------------------------------------------------------------
19320 Extract response and send it to UMAC
19321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wpalMemoryCopy( &halStatus,
19323 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 sizeof(halStatus));
19325
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019327
19328 /*Notify UMAC*/
19329 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19330
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19333
19334 /**
19335 @brief Process Set Max Tx Power Rsp function (called when a response
19336 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019337
19338 @param pWDICtx: pointer to the WLAN DAL context
19339 pEventData: pointer to the event information structure
19340
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 @see
19342 @return Result of the function call
19343*/
19344WDI_Status
19345WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019346(
Jeff Johnson295189b2012-06-20 16:38:30 -070019347 WDI_ControlBlockType* pWDICtx,
19348 WDI_EventInfoType* pEventData
19349)
19350{
19351 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019352
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019354
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19357
19358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 -------------------------------------------------------------------------*/
19361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19362 ( NULL == pEventData->pEventData))
19363 {
19364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 }
19369
19370 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19371
19372 /*-------------------------------------------------------------------------
19373 Extract response and send it to UMAC
19374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19376 pEventData->pEventData,
19377 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019378
19379 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19380 {
19381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19382 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 }
19385
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019388 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019389
19390 /*Notify UMAC*/
19391 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19392
Jeff Johnsone7245742012-09-05 17:12:55 -070019393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019394}
19395
schang86c22c42013-03-13 18:41:24 -070019396 /**
19397 @brief Process Set Tx Power Rsp function (called when a response
19398 is being received over the bus from HAL)
19399
19400 @param pWDICtx: pointer to the WLAN DAL context
19401 pEventData: pointer to the event information structure
19402
19403 @see
19404 @return Result of the function call
19405*/
19406WDI_Status
19407WDI_ProcessSetTxPowerRsp
19408(
19409 WDI_ControlBlockType* pWDICtx,
19410 WDI_EventInfoType* pEventData
19411)
19412{
19413 tSetTxPwrRspMsg halTxpowerrsp;
19414 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19415 WDA_SetTxPowerRspCb wdiReqStatusCb;
19416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19417
19418 /*-------------------------------------------------------------------------
19419 Sanity check
19420 -------------------------------------------------------------------------*/
19421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19422 ( NULL == pEventData->pEventData))
19423 {
19424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19425 "%s: Invalid parameters", __func__);
19426 WDI_ASSERT(0);
19427 return WDI_STATUS_E_FAILURE;
19428 }
19429
19430 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19431
19432 /*-------------------------------------------------------------------------
19433 Extract response and send it to UMAC
19434 -------------------------------------------------------------------------*/
19435 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19436 pEventData->pEventData,
19437 sizeof(halTxpowerrsp.setTxPwrRspParams));
19438
19439 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19440 {
19441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19442 "Error status returned in Set Tx Power Response ");
19443 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19444 return WDI_STATUS_E_FAILURE;
19445 }
19446
19447 wdiSetTxPowerRspMsg.wdiStatus =
19448 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19449
19450 /*Notify UMAC*/
19451 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19452
19453 return WDI_STATUS_SUCCESS;
19454}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019455
19456/**
19457 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19458 is being received over the bus from HAL)
19459
19460 @param pWDICtx: pointer to the WLAN DAL context
19461 pEventData: pointer to the event information structure
19462
19463 @see
19464 @return Result of the function call
19465*/
19466WDI_Status
19467WDI_ProcessSetMaxTxPowerPerBandRsp
19468(
19469 WDI_ControlBlockType* pWDICtx,
19470 WDI_EventInfoType* pEventData
19471)
19472{
19473 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19474 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19475 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19477
19478 /*-------------------------------------------------------------------------
19479 Sanity check
19480 -------------------------------------------------------------------------*/
19481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19482 ( NULL == pEventData->pEventData))
19483 {
19484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19485 "%s: Invalid parameters", __func__);
19486 WDI_ASSERT(0);
19487 return WDI_STATUS_E_FAILURE;
19488 }
19489
19490 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19491
19492 /*-------------------------------------------------------------------------
19493 Extract response and send it to UMAC
19494 -------------------------------------------------------------------------*/
19495 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19496 pEventData->pEventData,
19497 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19498
19499 if (eHAL_STATUS_SUCCESS !=
19500 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19501 {
19502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19503 "Error status returned in Set Max Tx Power Per Band Response");
19504 return WDI_STATUS_E_FAILURE;
19505 }
19506
19507 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19508 WDI_HAL_2_WDI_STATUS(
19509 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19510
19511 /* Notify UMAC */
19512 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19513
19514 return WDI_STATUS_SUCCESS;
19515}
19516
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019517#ifdef FEATURE_WLAN_TDLS
19518/**
19519 @brief Process TDLS Link Establish Rsp function (called
19520 when a response is being received over the bus from HAL)
19521
19522 @param pWDICtx: pointer to the WLAN DAL context
19523 pEventData: pointer to the event information structure
19524
19525 @see
19526 @return Result of the function call
19527*/
19528WDI_Status
19529WDI_ProcessLinkEstablishReqRsp
19530(
19531 WDI_ControlBlockType* pWDICtx,
19532 WDI_EventInfoType* pEventData
19533)
19534{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019535 eHalStatus halStatus;
19536 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019537 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19538 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19539
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19541
19542 /*-------------------------------------------------------------------------
19543 Sanity check
19544 -------------------------------------------------------------------------*/
19545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19546 ( NULL == pEventData->pEventData))
19547 {
19548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19549 "%s: Invalid parameters", __func__);
19550 WDI_ASSERT(0);
19551 return WDI_STATUS_E_FAILURE;
19552 }
19553
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019554 /*-------------------------------------------------------------------------
19555 Extract indication and send it to UMAC
19556 -------------------------------------------------------------------------*/
19557 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19558 pEventData->pEventData,
19559 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19560
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019561 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19562
19563 /*-------------------------------------------------------------------------
19564 Extract response and send it to UMAC
19565 -------------------------------------------------------------------------*/
19566 wpalMemoryCopy( &halStatus,
19567 pEventData->pEventData,
19568 sizeof(halStatus));
19569
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019570 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19571 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019572
19573 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019574 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019575
19576 return WDI_STATUS_SUCCESS;
19577}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019578
19579
19580
19581/**
19582 @brief Process TDLS Chan switch Rsp function (called
19583 when a response is being received over the bus from HAL)
19584
19585 @param pWDICtx: pointer to the WLAN DAL context
19586 pEventData: pointer to the event information structure
19587
19588 @see
19589 @return Result of the function call
19590*/
19591WDI_Status
19592WDI_ProcessChanSwitchReqRsp
19593(
19594 WDI_ControlBlockType* pWDICtx,
19595 WDI_EventInfoType* pEventData
19596)
19597{
19598 eHalStatus halStatus;
19599 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19600 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19601 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19602
19603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19604
19605 /*-------------------------------------------------------------------------
19606 Sanity check
19607 -------------------------------------------------------------------------*/
19608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19609 ( NULL == pEventData->pEventData))
19610 {
19611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19612 "%s: Invalid parameters", __func__);
19613 WDI_ASSERT(0);
19614 return WDI_STATUS_E_FAILURE;
19615 }
19616
19617 /*-------------------------------------------------------------------------
19618 Extract indication and send it to UMAC
19619 -------------------------------------------------------------------------*/
19620 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19621 pEventData->pEventData,
19622 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19623
19624 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19625
19626 /*-------------------------------------------------------------------------
19627 Extract response and send it to UMAC
19628 -------------------------------------------------------------------------*/
19629 wpalMemoryCopy( &halStatus,
19630 pEventData->pEventData,
19631 sizeof(halStatus));
19632
19633 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19634 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19635
19636 /*Notify UMAC*/
19637 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19638
19639 return WDI_STATUS_SUCCESS;
19640}/*WDI_ProcessChanSwitchReqRsp*/
19641
19642
19643
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019644#endif
schang86c22c42013-03-13 18:41:24 -070019645
Jeff Johnson295189b2012-06-20 16:38:30 -070019646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019649
19650 @param pWDICtx: pointer to the WLAN DAL context
19651 pEventData: pointer to the event information structure
19652
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 @see
19654 @return Result of the function call
19655*/
19656WDI_Status
19657WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019658(
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 WDI_ControlBlockType* pWDICtx,
19660 WDI_EventInfoType* pEventData
19661)
19662{
19663 WDI_Status wdiStatus;
19664 eHalStatus halStatus;
19665 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19667
19668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 -------------------------------------------------------------------------*/
19671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19672 ( NULL == pEventData->pEventData))
19673 {
19674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 }
19679
19680 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19681
19682 /*-------------------------------------------------------------------------
19683 Extract response and send it to UMAC
19684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 wpalMemoryCopy( &halStatus,
19686 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 sizeof(halStatus));
19688
Jeff Johnsone7245742012-09-05 17:12:55 -070019689 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019690
19691 /*Notify UMAC*/
19692 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19693
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019695}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019699
19700 @param pWDICtx: pointer to the WLAN DAL context
19701 pEventData: pointer to the event information structure
19702
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 @see
19704 @return Result of the function call
19705*/
19706WDI_Status
19707WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019708(
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ControlBlockType* pWDICtx,
19710 WDI_EventInfoType* pEventData
19711)
19712{
19713 WDI_Status wdiStatus;
19714 eHalStatus halStatus;
19715 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019716 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19718
19719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 -------------------------------------------------------------------------*/
19722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19723 ( NULL == pEventData->pEventData))
19724 {
19725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 }
19730
19731 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19732
19733 /*-------------------------------------------------------------------------
19734 Extract response and send it to UMAC
19735 -------------------------------------------------------------------------*/
19736 halStatus = *((eHalStatus*)pEventData->pEventData);
19737
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019740 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19741 * Other module states are taken care by PMC.
19742 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19743 */
19744 if (wdiStatus != WDI_STATUS_SUCCESS) {
19745
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19747 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19748 halStatus);
19749 /* Call Back is not required as we are putting the DXE in FULL
19750 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019751 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19752
19753 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019755 "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 -080019756 WDI_ASSERT(0);
19757 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019758 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 /*Notify UMAC*/
19760 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19761
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019763}/*WDI_ProcessEnterImpsRsp*/
19764
19765/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019768
19769 @param pWDICtx: pointer to the WLAN DAL context
19770 pEventData: pointer to the event information structure
19771
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 @see
19773 @return Result of the function call
19774*/
19775WDI_Status
19776WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019777(
Jeff Johnson295189b2012-06-20 16:38:30 -070019778 WDI_ControlBlockType* pWDICtx,
19779 WDI_EventInfoType* pEventData
19780)
19781{
19782 WDI_Status wdiStatus;
19783 eHalStatus halStatus;
19784 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019785 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19787
19788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 -------------------------------------------------------------------------*/
19791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19792 ( NULL == pEventData->pEventData))
19793 {
19794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 }
19799
19800 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19801
19802 /*-------------------------------------------------------------------------
19803 Extract response and send it to UMAC
19804 -------------------------------------------------------------------------*/
19805 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019806 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019807
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019808 if (halStatus != eHAL_STATUS_SUCCESS)
19809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19810 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19811
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019813 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19814 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19815 {
19816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019817 "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 -080019818 WDI_ASSERT(0);
19819 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019820 /*Notify UMAC*/
19821 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19822
Jeff Johnsone7245742012-09-05 17:12:55 -070019823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019824}/*WDI_ProcessExitImpsRsp*/
19825
19826/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 @param pWDICtx: pointer to the WLAN DAL context
19831 pEventData: pointer to the event information structure
19832
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 @see
19834 @return Result of the function call
19835*/
19836WDI_Status
19837WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019838(
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 WDI_ControlBlockType* pWDICtx,
19840 WDI_EventInfoType* pEventData
19841)
19842{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019843 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19844 tHalEnterBmpsRspParams halEnterBmpsRsp;
19845 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19846 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019847 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19849
19850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 -------------------------------------------------------------------------*/
19853 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19854 ( NULL == pEventData->pEventData))
19855 {
19856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 }
19861
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019863 Extract response and send it to UMAC
19864 -------------------------------------------------------------------------*/
19865 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19866 {
19867 wpalMemoryCopy( &halEnterBmpsRsp,
19868 pEventData->pEventData,
19869 sizeof(halEnterBmpsRsp));
19870
19871 //Used to print debug message
19872 halStatus = halEnterBmpsRsp.status;
19873 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19874 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19875 }
19876 else
19877 {
19878 halStatus = *((eHalStatus*)pEventData->pEventData);
19879 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19880 }
19881
19882 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019883
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019884 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19885 * Other module states are taken care by PMC.
19886 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19887 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019888 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19889 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019890
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019892 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19893 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019894 /* Call Back is not required as we are putting the DXE in FULL
19895 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019896 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19897 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19898 {
19899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019900 "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 -080019901 WDI_ASSERT(0);
19902 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019903 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019904 }
19905
Jeff Johnson295189b2012-06-20 16:38:30 -070019906 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019907 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019908
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019910}/*WDI_ProcessEnterBmpsRsp*/
19911
19912/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019915
19916 @param pWDICtx: pointer to the WLAN DAL context
19917 pEventData: pointer to the event information structure
19918
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 @see
19920 @return Result of the function call
19921*/
19922WDI_Status
19923WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019924(
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 WDI_ControlBlockType* pWDICtx,
19926 WDI_EventInfoType* pEventData
19927)
19928{
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 eHalStatus halStatus;
19930 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019931 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019932 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19933 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19935
19936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 -------------------------------------------------------------------------*/
19939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19940 ( NULL == pEventData->pEventData))
19941 {
19942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 }
19947
19948 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19949
19950 /*-------------------------------------------------------------------------
19951 Extract response and send it to UMAC
19952 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019953
19954 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19955 {
19956 wpalMemoryCopy( &halExitBmpsRsp,
19957 pEventData->pEventData,
19958 sizeof(halExitBmpsRsp));
19959
19960 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19961 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19962 }
19963 else
19964 {
19965 halStatus = *((eHalStatus*)pEventData->pEventData);
19966 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19967 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019968
19969 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019970 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19971 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19972 {
19973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019974 "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 -080019975 WDI_ASSERT(0);
19976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19978
19979 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019980 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019981
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019983}/*WDI_ProcessExitBmpsRsp*/
19984
19985/**
19986 @brief Process Enter UAPSD Rsp function (called when a response
19987 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019988
19989 @param pWDICtx: pointer to the WLAN DAL context
19990 pEventData: pointer to the event information structure
19991
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 @see
19993 @return Result of the function call
19994*/
19995WDI_Status
19996WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019997(
Jeff Johnson295189b2012-06-20 16:38:30 -070019998 WDI_ControlBlockType* pWDICtx,
19999 WDI_EventInfoType* pEventData
20000)
20001{
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020003 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020005 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20006
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20008
20009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 -------------------------------------------------------------------------*/
20012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20013 ( NULL == pEventData->pEventData))
20014 {
20015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 }
20020
20021 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20022
20023 /*-------------------------------------------------------------------------
20024 Extract response and send it to UMAC
20025 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020026 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20027 {
20028 wpalMemoryCopy( &halEnterUapsdRsp,
20029 pEventData->pEventData,
20030 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020031
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020032 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20033 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20034 }
20035 else
20036 {
20037 halStatus = *((eHalStatus*)pEventData->pEventData);
20038 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20039 }
20040
20041 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 {
20043 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20044 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20045 // the traffic to decide when to suspend the trigger frames when there is no traffic
20046 // activity on the trigger enabled ACs
20047 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20048
20049#ifdef WLAN_PERF
20050 // Increment the BD signature to refresh the fast path BD utilization
20051 pWDICtx->uBdSigSerialNum++;
20052#endif
20053 }
20054
20055 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020056 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020057
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020059}/*WDI_ProcessEnterUapsdRsp*/
20060
20061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020063 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020064
20065 @param pWDICtx: pointer to the WLAN DAL context
20066 pEventData: pointer to the event information structure
20067
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 @see
20069 @return Result of the function call
20070*/
20071WDI_Status
20072WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020073(
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 WDI_ControlBlockType* pWDICtx,
20075 WDI_EventInfoType* pEventData
20076)
20077{
Jeff Johnson295189b2012-06-20 16:38:30 -070020078 eHalStatus halStatus;
20079 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020080 tHalExitUapsdRspParams halExitUapsdRsp;
20081 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20083
20084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 -------------------------------------------------------------------------*/
20087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20088 ( NULL == pEventData->pEventData))
20089 {
20090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 }
20095
20096 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20097
20098 /*-------------------------------------------------------------------------
20099 Extract response and send it to UMAC
20100 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020101 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20102 {
20103 wpalMemoryCopy( &halExitUapsdRsp,
20104 pEventData->pEventData,
20105 sizeof(halExitUapsdRsp));
20106
20107 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20108 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20109 }
20110 else
20111 {
20112 halStatus = *((eHalStatus*)pEventData->pEventData);
20113 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20116 // directly instead of the FW WQ.
20117 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20118
20119#ifdef WLAN_PERF
20120 // Increment the BD signature to refresh the fast path BD utilization
20121 pWDICtx->uBdSigSerialNum++;
20122#endif
20123
20124 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020125 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020126
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128}/*WDI_ProcessExitUapsdRsp*/
20129
20130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020133
20134 @param pWDICtx: pointer to the WLAN DAL context
20135 pEventData: pointer to the event information structure
20136
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 @see
20138 @return Result of the function call
20139*/
20140WDI_Status
20141WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020142(
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 WDI_ControlBlockType* pWDICtx,
20144 WDI_EventInfoType* pEventData
20145)
20146{
20147 WDI_Status wdiStatus;
20148 eHalStatus halStatus;
20149 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20151
20152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 -------------------------------------------------------------------------*/
20155 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20156 ( NULL == pEventData->pEventData))
20157 {
20158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 }
20163
20164 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20165
20166 /*-------------------------------------------------------------------------
20167 Extract response and send it to UMAC
20168 -------------------------------------------------------------------------*/
20169 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020171
20172 /*Notify UMAC*/
20173 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20174
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176}/*WDI_ProcessSetUapsdAcParamsRsp*/
20177
20178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020181
20182 @param pWDICtx: pointer to the WLAN DAL context
20183 pEventData: pointer to the event information structure
20184
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 @see
20186 @return Result of the function call
20187*/
20188WDI_Status
20189WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020190(
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WDI_ControlBlockType* pWDICtx,
20192 WDI_EventInfoType* pEventData
20193)
20194{
20195 WDI_Status wdiStatus;
20196 eHalStatus halStatus;
20197 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20199
20200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 -------------------------------------------------------------------------*/
20203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20204 ( NULL == pEventData->pEventData))
20205 {
20206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 }
20211
20212 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20213
20214 /*-------------------------------------------------------------------------
20215 Extract response and send it to UMAC
20216 -------------------------------------------------------------------------*/
20217 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020219
20220 /*Notify UMAC*/
20221 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20222
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020224}/*WDI_ProcessUpdateUapsdParamsRsp*/
20225
20226/**
20227 @brief Process Configure RXP filter Rsp function (called when a
20228 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020229
20230 @param pWDICtx: pointer to the WLAN DAL context
20231 pEventData: pointer to the event information structure
20232
Jeff Johnson295189b2012-06-20 16:38:30 -070020233 @see
20234 @return Result of the function call
20235*/
20236WDI_Status
20237WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020238(
Jeff Johnson295189b2012-06-20 16:38:30 -070020239 WDI_ControlBlockType* pWDICtx,
20240 WDI_EventInfoType* pEventData
20241)
20242{
20243 WDI_Status wdiStatus;
20244 eHalStatus halStatus;
20245 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20247
20248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 -------------------------------------------------------------------------*/
20251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20252 ( NULL == pEventData->pEventData))
20253 {
20254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 }
20259
20260 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20261
20262 /*-------------------------------------------------------------------------
20263 Extract response and send it to UMAC
20264 -------------------------------------------------------------------------*/
20265 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020266 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020267
20268 /*Notify UMAC*/
20269 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20270
Jeff Johnsone7245742012-09-05 17:12:55 -070020271 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020272}/*WDI_ProcessConfigureRxpFilterRsp*/
20273
20274/**
20275 @brief Process Set beacon filter Rsp function (called when a
20276 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020277
20278 @param pWDICtx: pointer to the WLAN DAL context
20279 pEventData: pointer to the event information structure
20280
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 @see
20282 @return Result of the function call
20283*/
20284WDI_Status
20285WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020286(
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 WDI_ControlBlockType* pWDICtx,
20288 WDI_EventInfoType* pEventData
20289)
20290{
20291 WDI_Status wdiStatus;
20292 eHalStatus halStatus;
20293 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20295
20296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020298 -------------------------------------------------------------------------*/
20299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20300 ( NULL == pEventData->pEventData))
20301 {
20302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 }
20307
20308 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20309
20310 /*-------------------------------------------------------------------------
20311 Extract response and send it to UMAC
20312 -------------------------------------------------------------------------*/
20313 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020315
20316 /*Notify UMAC*/
20317 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20318
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020320}/*WDI_ProcessSetBeaconFilterRsp*/
20321
20322/**
20323 @brief Process remove beacon filter Rsp function (called when a
20324 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020325
20326 @param pWDICtx: pointer to the WLAN DAL context
20327 pEventData: pointer to the event information structure
20328
Jeff Johnson295189b2012-06-20 16:38:30 -070020329 @see
20330 @return Result of the function call
20331*/
20332WDI_Status
20333WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020334(
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 WDI_ControlBlockType* pWDICtx,
20336 WDI_EventInfoType* pEventData
20337)
20338{
20339 WDI_Status wdiStatus;
20340 eHalStatus halStatus;
20341 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20343
20344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 -------------------------------------------------------------------------*/
20347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20348 ( NULL == pEventData->pEventData))
20349 {
20350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 }
20355
20356 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20357
20358 /*-------------------------------------------------------------------------
20359 Extract response and send it to UMAC
20360 -------------------------------------------------------------------------*/
20361 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020363
20364 /*Notify UMAC*/
20365 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20366
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020368}/*WDI_ProcessRemBeaconFilterRsp*/
20369
20370/**
20371 @brief Process set RSSI thresholds Rsp function (called when a
20372 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020373
20374 @param pWDICtx: pointer to the WLAN DAL context
20375 pEventData: pointer to the event information structure
20376
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 @see
20378 @return Result of the function call
20379*/
20380WDI_Status
20381WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020382(
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WDI_ControlBlockType* pWDICtx,
20384 WDI_EventInfoType* pEventData
20385)
20386{
20387 WDI_Status wdiStatus;
20388 eHalStatus halStatus;
20389 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20391
20392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 -------------------------------------------------------------------------*/
20395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20396 ( NULL == pEventData->pEventData))
20397 {
20398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 }
20403
20404 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20405
20406 /*-------------------------------------------------------------------------
20407 Extract response and send it to UMAC
20408 -------------------------------------------------------------------------*/
20409 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020411
20412 /*Notify UMAC*/
20413 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20414
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020416}/*WDI_ProcessSetRSSIThresoldsRsp*/
20417
20418/**
20419 @brief Process host offload Rsp function (called when a
20420 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020421
20422 @param pWDICtx: pointer to the WLAN DAL context
20423 pEventData: pointer to the event information structure
20424
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 @see
20426 @return Result of the function call
20427*/
20428WDI_Status
20429WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020430(
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 WDI_ControlBlockType* pWDICtx,
20432 WDI_EventInfoType* pEventData
20433)
20434{
20435 WDI_Status wdiStatus;
20436 eHalStatus halStatus;
20437 WDI_HostOffloadCb wdiHostOffloadCb;
20438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20439
20440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 -------------------------------------------------------------------------*/
20443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20444 ( NULL == pEventData->pEventData))
20445 {
20446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 }
20451
20452 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20453
20454 /*-------------------------------------------------------------------------
20455 Extract response and send it to UMAC
20456 -------------------------------------------------------------------------*/
20457 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
20460 /*Notify UMAC*/
20461 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20462
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020464}/*WDI_ProcessHostOffloadRsp*/
20465
20466/**
20467 @brief Process keep alive Rsp function (called when a
20468 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020469
20470 @param pWDICtx: pointer to the WLAN DAL context
20471 pEventData: pointer to the event information structure
20472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 @see
20474 @return Result of the function call
20475*/
20476WDI_Status
20477WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020478(
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 WDI_ControlBlockType* pWDICtx,
20480 WDI_EventInfoType* pEventData
20481)
20482{
20483 WDI_Status wdiStatus;
20484 eHalStatus halStatus;
20485 WDI_KeepAliveCb wdiKeepAliveCb;
20486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20488 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20489
20490
20491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 -------------------------------------------------------------------------*/
20494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20495 ( NULL == pEventData->pEventData))
20496 {
20497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020501 }
20502
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20504
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 /*-------------------------------------------------------------------------
20506 Extract response and send it to UMAC
20507 -------------------------------------------------------------------------*/
20508 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
20511 /*Notify UMAC*/
20512 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20513
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020515}/*WDI_ProcessKeepAliveRsp*/
20516
20517/**
20518 @brief Process wowl add ptrn Rsp function (called when a
20519 response 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_ProcessWowlAddBcPtrnRsp
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_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020536 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20537 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20538
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20540
20541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 -------------------------------------------------------------------------*/
20544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20545 ( NULL == pEventData->pEventData))
20546 {
20547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020551 }
20552
20553 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20554
20555 /*-------------------------------------------------------------------------
20556 Extract response and send it to UMAC
20557 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020558 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20559 {
20560 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20561 pEventData->pEventData,
20562 sizeof(halAddWowlBcastPtrRsp));
20563
20564 wdiWowlAddBcPtrRsp.wdiStatus =
20565 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20566 }
20567 else
20568 {
20569 halStatus = *((eHalStatus*)pEventData->pEventData);
20570 wdiWowlAddBcPtrRsp.wdiStatus =
20571 WDI_HAL_2_WDI_STATUS(halStatus);
20572 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020573
20574 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020575 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020576
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020578}/*WDI_ProcessWowlAddBcPtrnRsp*/
20579
20580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020583
20584 @param pWDICtx: pointer to the WLAN DAL context
20585 pEventData: pointer to the event information structure
20586
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 @see
20588 @return Result of the function call
20589*/
20590WDI_Status
20591WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020592(
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 WDI_ControlBlockType* pWDICtx,
20594 WDI_EventInfoType* pEventData
20595)
20596{
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 eHalStatus halStatus;
20598 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020599 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20600 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20602
20603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 -------------------------------------------------------------------------*/
20606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20607 ( NULL == pEventData->pEventData))
20608 {
20609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020613 }
20614
20615 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20616
20617 /*-------------------------------------------------------------------------
20618 Extract response and send it to UMAC
20619 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020620 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20621 {
20622 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20623 pEventData->pEventData,
20624 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020625
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020626 wdiWowlDelBcstPtrRsp.wdiStatus =
20627 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20628 }
20629 else
20630 {
20631 halStatus = *((eHalStatus*)pEventData->pEventData);
20632 wdiWowlDelBcstPtrRsp.wdiStatus = 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 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, 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_ProcessWowlDelBcPtrnRsp*/
20639
20640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020643
20644 @param pWDICtx: pointer to the WLAN DAL context
20645 pEventData: pointer to the event information structure
20646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 @see
20648 @return Result of the function call
20649*/
20650WDI_Status
20651WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020652(
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 WDI_ControlBlockType* pWDICtx,
20654 WDI_EventInfoType* pEventData
20655)
20656{
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 eHalStatus halStatus;
20658 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020659 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20660 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20676
20677 /*-------------------------------------------------------------------------
20678 Extract response and send it to UMAC
20679 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020680 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20681 {
20682 wpalMemoryCopy( &halEnterWowlRspParams,
20683 (wpt_uint8*)pEventData->pEventData,
20684 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020686 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20687 wdiwowlEnterRsp.status =
20688 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20689 }
20690 else
20691 {
20692 halStatus = *((eHalStatus*)pEventData->pEventData);
20693 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20694 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020696 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020697
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020699}/*WDI_ProcessWowlEnterRsp*/
20700
20701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020702 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020704
20705 @param pWDICtx: pointer to the WLAN DAL context
20706 pEventData: pointer to the event information structure
20707
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 @see
20709 @return Result of the function call
20710*/
20711WDI_Status
20712WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020713(
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 WDI_ControlBlockType* pWDICtx,
20715 WDI_EventInfoType* pEventData
20716)
20717{
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 eHalStatus halStatus;
20719 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020720 tHalExitWowlRspParams halExitWowlRspParams;
20721 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20722
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20724
20725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 -------------------------------------------------------------------------*/
20728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20729 ( NULL == pEventData->pEventData))
20730 {
20731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 }
20736
20737 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20738
20739 /*-------------------------------------------------------------------------
20740 Extract response and send it to UMAC
20741 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020742 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20743 {
20744 wpalMemoryCopy( &halExitWowlRspParams,
20745 pEventData->pEventData,
20746 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020747
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020748 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20749 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20750
20751 }
20752 else
20753 {
20754 halStatus = *((eHalStatus*)pEventData->pEventData);
20755 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20756 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020758 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020759
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020761}/*WDI_ProcessWowlExitRsp*/
20762
20763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 (called when a response is being received over the bus
20766 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020767
20768 @param pWDICtx: pointer to the WLAN DAL context
20769 pEventData: pointer to the event information structure
20770
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 @see
20772 @return Result of the function call
20773*/
20774WDI_Status
20775WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020776(
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 WDI_ControlBlockType* pWDICtx,
20778 WDI_EventInfoType* pEventData
20779)
20780{
20781 WDI_Status wdiStatus;
20782 eHalStatus halStatus;
20783 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20785
20786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020788 -------------------------------------------------------------------------*/
20789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20790 ( NULL == pEventData->pEventData))
20791 {
20792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 }
20797
20798 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20799
20800 /*-------------------------------------------------------------------------
20801 Extract response and send it to UMAC
20802 -------------------------------------------------------------------------*/
20803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020805
20806 /*Notify UMAC*/
20807 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20808
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020810}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20811
20812
20813/**
20814 @brief Process Nv download(called when a response
20815 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020816
20817 @param pWDICtx: pointer to the WLAN DAL context
20818 pEventData: pointer to the event information structure
20819
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 @see
20821 @return Result of the function call
20822*/
20823WDI_Status
20824WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020825(
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 WDI_ControlBlockType* pWDICtx,
20827 WDI_EventInfoType* pEventData
20828)
20829{
20830
20831 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20832 tHalNvImgDownloadRspParams halNvDownloadRsp;
20833 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20834
20835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 -------------------------------------------------------------------------*/
20838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20839 ( NULL == pEventData->pEventData))
20840 {
20841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 }
20846
20847 /*-------------------------------------------------------------------------
20848 Extract response and send it to UMAC
20849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMemoryCopy( &halNvDownloadRsp,
20851 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 sizeof(halNvDownloadRsp));
20853
20854 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20855
20856 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20858 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 {
20860 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 }
20863 else
20864 {
20865 /*Reset the Nv related global information in WDI context information */
20866 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20867 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20868 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20869 /*call WDA callback function for last fragment */
20870 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20871 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20872 }
20873
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875}
20876#ifdef WLAN_FEATURE_VOWIFI_11R
20877/**
20878 @brief Process Add TSpec Rsp function (called when a response
20879 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020880
20881 @param pWDICtx: pointer to the WLAN DAL context
20882 pEventData: pointer to the event information structure
20883
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 @see
20885 @return Result of the function call
20886*/
20887WDI_Status
20888WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020889(
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_ControlBlockType* pWDICtx,
20891 WDI_EventInfoType* pEventData
20892)
20893{
20894 WDI_Status wdiStatus;
20895 tAggrAddTsRspParams aggrAddTsRsp;
20896 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20898
20899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 -------------------------------------------------------------------------*/
20902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20903 ( NULL == pEventData->pEventData))
20904 {
20905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 }
20910
20911 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20912
20913 /*-------------------------------------------------------------------------
20914 Extract response and send it to UMAC
20915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 wpalMemoryCopy( &aggrAddTsRsp,
20917 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 sizeof(aggrAddTsRsp));
20919
20920 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020921 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020922
20923 /*Notify UMAC*/
20924 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20925
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020927}/*WDI_ProcessAddTSpecRsp*/
20928#endif /* WLAN_FEATURE_VOWIFI_11R */
20929
20930/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020933
20934 @param pWDICtx: pointer to the WLAN DAL context
20935 pEventData: pointer to the event information structure
20936
Jeff Johnson295189b2012-06-20 16:38:30 -070020937 @see
20938 @return Result of the function call
20939*/
20940WDI_Status
20941WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020942(
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 WDI_ControlBlockType* pWDICtx,
20944 WDI_EventInfoType* pEventData
20945)
20946{
20947 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20948 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20949 tHalHostResumeRspParams hostResumeRspMsg;
20950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20951
20952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 -------------------------------------------------------------------------*/
20955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20956 ( NULL == pEventData->pEventData))
20957 {
20958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 }
20963
20964 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20965
20966 /*-------------------------------------------------------------------------
20967 Extract response and send it to UMAC
20968 -------------------------------------------------------------------------*/
20969
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 (wpt_uint8*)pEventData->pEventData,
20972 sizeof(hostResumeRspMsg));
20973
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 wdiResumeRspParams.wdiStatus =
20975 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020976
20977 /*Notify UMAC*/
20978 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20979
20980 return WDI_STATUS_SUCCESS;
20981}
20982
20983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020984 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020986
20987 @param pWDICtx: pointer to the WLAN DAL context
20988 pEventData: pointer to the event information structure
20989
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 @see
20991 @return Result of the function call
20992*/
20993WDI_Status
20994WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020995(
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 WDI_ControlBlockType* pWDICtx,
20997 WDI_EventInfoType* pEventData
20998)
20999{
21000 WDI_Status wdiStatus;
21001 eHalStatus halStatus;
21002 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21004
21005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 -------------------------------------------------------------------------*/
21008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21009 ( NULL == pEventData->pEventData))
21010 {
21011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021016
21017 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018
21019 /*-------------------------------------------------------------------------
21020 Extract response and send it to UMAC
21021 -------------------------------------------------------------------------*/
21022 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021024
21025 /*Notify UMAC*/
21026 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21027
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021029}/*WDI_ProcessSetTxPerTrackingRsp*/
21030
21031/*==========================================================================
21032 Indications from HAL
21033 ==========================================================================*/
21034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021035 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021036 indication of this kind is being received over the bus
21037 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021038
21039 @param pWDICtx: pointer to the WLAN DAL context
21040 pEventData: pointer to the event information structure
21041
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 @see
21043 @return Result of the function call
21044*/
21045WDI_Status
21046WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021047(
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 WDI_ControlBlockType* pWDICtx,
21049 WDI_EventInfoType* pEventData
21050)
21051{
21052 WDI_LowLevelIndType wdiInd;
21053 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21055
21056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 -------------------------------------------------------------------------*/
21059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21060 ( NULL == pEventData->pEventData))
21061 {
21062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 }
21067
21068 /*-------------------------------------------------------------------------
21069 Extract indication and send it to UMAC
21070 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021071 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21072 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 sizeof(tHalRSSINotification));
21074
21075 /*Fill in the indication parameters*/
21076 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21077 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21078 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21079 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21080 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21081 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21082 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21083 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21084 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21085 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21086 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21087 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21088 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021089 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21090 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021091
ltimariub77f24b2013-01-24 18:54:33 -080021092 if ( pWDICtx->wdiLowLevelIndCB )
21093 {
21094 /*Notify UMAC of indication*/
21095 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21096 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021097
21098 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099}/*WDI_ProcessLowRSSIInd*/
21100
21101
21102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021103 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 an indication of this kind is being received over the
21105 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021106
21107 @param pWDICtx: pointer to the WLAN DAL context
21108 pEventData: pointer to the event information structure
21109
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 @see
21111 @return Result of the function call
21112*/
21113WDI_Status
21114WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021115(
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 WDI_ControlBlockType* pWDICtx,
21117 WDI_EventInfoType* pEventData
21118)
21119{
21120 WDI_Status wdiStatus;
21121 eHalStatus halStatus;
21122 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021123 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21125
21126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 -------------------------------------------------------------------------*/
21129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21130 ( NULL == pEventData->pEventData))
21131 {
21132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021137 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 /*-------------------------------------------------------------------------
21139 Extract indication and send it to UMAC
21140 -------------------------------------------------------------------------*/
21141 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21142 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021144
21145 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021147 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21148 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021149 if ( pWDICtx->wdiLowLevelIndCB )
21150 {
21151 /*Notify UMAC*/
21152 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21153 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021154
21155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021156}/*WDI_ProcessMissedBeaconInd*/
21157
21158
21159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 an indication of this kind is being received over the
21162 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021163
21164 @param pWDICtx: pointer to the WLAN DAL context
21165 pEventData: pointer to the event information structure
21166
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 @see
21168 @return Result of the function call
21169*/
21170WDI_Status
21171WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021172(
Jeff Johnson295189b2012-06-20 16:38:30 -070021173 WDI_ControlBlockType* pWDICtx,
21174 WDI_EventInfoType* pEventData
21175)
21176{
21177 WDI_Status wdiStatus;
21178 eHalStatus halStatus;
21179 WDI_LowLevelIndType wdiInd;
21180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21181
21182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 -------------------------------------------------------------------------*/
21185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21186 ( NULL == pEventData->pEventData))
21187 {
21188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 }
21193
21194 /*-------------------------------------------------------------------------
21195 Extract indication and send it to UMAC
21196 -------------------------------------------------------------------------*/
21197 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21198 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021200
21201 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 /* ! TO DO - fill in from HAL struct:
21204 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21205
ltimariub77f24b2013-01-24 18:54:33 -080021206 if ( pWDICtx->wdiLowLevelIndCB )
21207 {
21208 /*Notify UMAC*/
21209 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21210 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021211
21212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213}/*WDI_ProcessUnkAddrFrameInd*/
21214
21215
21216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021217 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 indication of this kind is being received over the bus
21219 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021220
21221 @param pWDICtx: pointer to the WLAN DAL context
21222 pEventData: pointer to the event information structure
21223
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 @see
21225 @return Result of the function call
21226*/
21227WDI_Status
21228WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021229(
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 WDI_ControlBlockType* pWDICtx,
21231 WDI_EventInfoType* pEventData
21232)
21233{
21234 WDI_LowLevelIndType wdiInd;
21235 tpSirMicFailureInd pHalMicFailureInd;
21236
21237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21238
21239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 -------------------------------------------------------------------------*/
21242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21243 ( NULL == pEventData->pEventData))
21244 {
21245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021250
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21252 /*-------------------------------------------------------------------------
21253 Extract indication and send it to UMAC
21254 -------------------------------------------------------------------------*/
21255
21256 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21259 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21260 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21261 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21262 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21263 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21264 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21265 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021271 pHalMicFailureInd->info.keyId;
21272 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21273 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21274 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21275 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021276
21277 if ( pWDICtx->wdiLowLevelIndCB )
21278 {
21279 /*Notify UMAC*/
21280 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21281 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021282
21283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021284}/*WDI_ProcessMicFailureInd*/
21285
21286
21287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 an indication of this kind is being received over the
21290 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021291
21292 @param pWDICtx: pointer to the WLAN DAL context
21293 pEventData: pointer to the event information structure
21294
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 @see
21296 @return Result of the function call
21297*/
21298WDI_Status
21299WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021300(
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 WDI_ControlBlockType* pWDICtx,
21302 WDI_EventInfoType* pEventData
21303)
21304{
21305 WDI_Status wdiStatus;
21306 eHalStatus halStatus;
21307 WDI_LowLevelIndType wdiInd;
21308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21309
21310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 -------------------------------------------------------------------------*/
21313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21314 ( NULL == pEventData->pEventData))
21315 {
21316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 }
21321
21322 /*-------------------------------------------------------------------------
21323 Extract indication and send it to UMAC
21324 -------------------------------------------------------------------------*/
21325
21326 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21327 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021329
21330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21331 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021332
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21335 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336
ltimariub77f24b2013-01-24 18:54:33 -080021337 if ( pWDICtx->wdiLowLevelIndCB )
21338 {
21339 /*Notify UMAC*/
21340 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21341 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021342
21343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021344}/*WDI_ProcessFatalErrorInd*/
21345
21346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021348 an indication of this kind is being received over the
21349 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021350
21351 @param pWDICtx: pointer to the WLAN DAL context
21352 pEventData: pointer to the event information structure
21353
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 @see
21355 @return Result of the function call
21356*/
21357WDI_Status
21358WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021359(
Jeff Johnson295189b2012-06-20 16:38:30 -070021360 WDI_ControlBlockType* pWDICtx,
21361 WDI_EventInfoType* pEventData
21362)
21363{
21364 tDeleteStaContextParams halDelSTACtx;
21365 WDI_LowLevelIndType wdiInd;
21366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21367
21368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 -------------------------------------------------------------------------*/
21371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21372 ( NULL == pEventData->pEventData))
21373 {
21374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 }
21379
21380 /*-------------------------------------------------------------------------
21381 Extract indication and send it to UMAC
21382 -------------------------------------------------------------------------*/
21383
21384 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 wpalMemoryCopy( &halDelSTACtx,
21386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 sizeof(halDelSTACtx));
21388
21389 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021391
21392 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21393 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21394 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21395 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21396
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021401 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21402 halDelSTACtx.reasonCode;
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_ProcessDelSTAInd*/
21412
21413/**
21414*@brief Process Coex Indication function (called when
21415 an indication of this kind is being received over the
21416 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021417
21418 @param pWDICtx: pointer to the WLAN DAL context
21419 pEventData: pointer to the event information structure
21420
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 @see
21422 @return Result of the function call
21423*/
21424WDI_Status
21425WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021426(
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 WDI_ControlBlockType* pWDICtx,
21428 WDI_EventInfoType* pEventData
21429)
21430{
21431 WDI_LowLevelIndType wdiInd;
21432 tCoexIndMsg halCoexIndMsg;
21433 wpt_uint32 index;
21434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21435
21436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 -------------------------------------------------------------------------*/
21439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21440 ( NULL == pEventData->pEventData ))
21441 {
21442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 }
21447
21448 /*-------------------------------------------------------------------------
21449 Extract indication and send it to UMAC
21450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21452 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 sizeof(halCoexIndMsg.coexIndParams) );
21454
21455 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 wdiInd.wdiIndicationType = WDI_COEX_IND;
21457 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21459 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 }
21462
21463 // DEBUG
21464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21465 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021466 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21467 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21468 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21469 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21470 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021471
ltimariub77f24b2013-01-24 18:54:33 -080021472 if ( pWDICtx->wdiLowLevelIndCB )
21473 {
21474 /*Notify UMAC*/
21475 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021477
21478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021479}/*WDI_ProcessCoexInd*/
21480
21481/**
21482*@brief Process Tx Complete Indication function (called when
21483 an indication of this kind is being received over the
21484 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021485
21486 @param pWDICtx: pointer to the WLAN DAL context
21487 pEventData: pointer to the event information structure
21488
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 @see
21490 @return Result of the function call
21491*/
21492WDI_Status
21493WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021494(
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 WDI_ControlBlockType* pWDICtx,
21496 WDI_EventInfoType* pEventData
21497)
21498{
21499 WDI_LowLevelIndType wdiInd;
21500 tTxComplIndMsg halTxComplIndMsg;
21501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21502
21503 /*-------------------------------------------------------------------------
21504 Sanity check
21505 -------------------------------------------------------------------------*/
21506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21507 ( NULL == pEventData->pEventData ))
21508 {
21509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 WDI_ASSERT( 0 );
21512 return WDI_STATUS_E_FAILURE;
21513 }
21514
21515 /*-------------------------------------------------------------------------
21516 Extract indication and send it to UMAC
21517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21519 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 sizeof(halTxComplIndMsg.txComplParams) );
21521
21522 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021524
21525 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21526 &halTxComplIndMsg.txComplParams,
21527 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021528
ltimariub77f24b2013-01-24 18:54:33 -080021529 if ( pWDICtx->wdiLowLevelIndCB )
21530 {
21531 /*Notify UMAC*/
21532 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21533 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021534
21535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021536}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021537#ifdef FEATURE_WLAN_TDLS
21538/**
21539*@brief Process TDLS Indication function (called when
21540 an indication of this kind is being received over the
21541 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021542
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021543 @param pWDICtx: pointer to the WLAN DAL context
21544 pEventData: pointer to the event information structure
21545
21546 @see
21547 @return Result of the function call
21548*/
21549WDI_Status
21550WDI_ProcessTdlsInd
21551(
21552 WDI_ControlBlockType* pWDICtx,
21553 WDI_EventInfoType* pEventData
21554)
21555{
21556 WDI_LowLevelIndType wdiInd;
21557 tTdlsIndMsg halTdlsIndMsg;
21558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21559
21560 /*-------------------------------------------------------------------------
21561 Sanity check
21562 -------------------------------------------------------------------------*/
21563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21564 ( NULL == pEventData->pEventData ))
21565 {
21566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21567 "%s: Invalid parameters", __func__);
21568 WDI_ASSERT( 0 );
21569 return WDI_STATUS_E_FAILURE;
21570 }
21571
21572 /*-------------------------------------------------------------------------
21573 Extract indication and send it to UMAC
21574 -------------------------------------------------------------------------*/
21575 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21576 pEventData->pEventData,
21577 sizeof(halTdlsIndMsg.tdlsIndParams) );
21578
21579 /*Fill in the indication parameters*/
21580 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21581
21582 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21583 = halTdlsIndMsg.tdlsIndParams.status;
21584
21585 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21586 = halTdlsIndMsg.tdlsIndParams.staIdx;
21587
21588 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21589 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21590
Atul Mittalbb2aad02014-09-22 19:09:36 +053021591 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21592 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021593 /*Notify UMAC*/
21594 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21595
21596 return WDI_STATUS_SUCCESS;
21597}/*WDI_ProcessTdlsInd*/
21598#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021599/**
Viral Modid86bde22012-12-10 13:09:21 -080021600*@brief Process Noa Start Indication function (called when
21601 an indication of this kind is being received over the
21602 bus from HAL)
21603
21604 @param pWDICtx: pointer to the WLAN DAL context
21605 pEventData: pointer to the event information structure
21606
21607 @see
21608 @return Result of the function call
21609*/
21610WDI_Status
21611WDI_ProcessP2pNoaStartInd
21612(
21613 WDI_ControlBlockType* pWDICtx,
21614 WDI_EventInfoType* pEventData
21615)
21616{
21617 WDI_LowLevelIndType wdiInd;
21618 tNoaStartIndMsg halNoaStartIndMsg;
21619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21620
21621 /*-------------------------------------------------------------------------
21622 Sanity check
21623 -------------------------------------------------------------------------*/
21624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21625 ( NULL == pEventData->pEventData ))
21626 {
21627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21628 "%s: Invalid parameters", __func__);
21629 WDI_ASSERT( 0 );
21630 return WDI_STATUS_E_FAILURE;
21631 }
21632
21633 /*-------------------------------------------------------------------------
21634 Extract indication and send it to UMAC
21635 -------------------------------------------------------------------------*/
21636 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21637 pEventData->pEventData,
21638 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21639
21640 /*Fill in the indication parameters*/
21641 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21642
21643 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21644 = halNoaStartIndMsg.noaStartIndParams.status;
21645
21646 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21647 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21648
21649 /*Notify UMAC*/
21650 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21651
21652 return WDI_STATUS_SUCCESS;
21653}/*WDI_ProcessNoaAttrInd*/
21654
21655/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021656*@brief Process Noa Attr Indication function (called when
21657 an indication of this kind is being received over the
21658 bus from HAL)
21659
21660 @param pWDICtx: pointer to the WLAN DAL context
21661 pEventData: pointer to the event information structure
21662
21663 @see
21664 @return Result of the function call
21665*/
21666WDI_Status
21667WDI_ProcessP2pNoaAttrInd
21668(
21669 WDI_ControlBlockType* pWDICtx,
21670 WDI_EventInfoType* pEventData
21671)
21672{
21673 WDI_LowLevelIndType wdiInd;
21674 tNoaAttrIndMsg halNoaAttrIndMsg;
21675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21676
21677 /*-------------------------------------------------------------------------
21678 Sanity check
21679 -------------------------------------------------------------------------*/
21680 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21681 ( NULL == pEventData->pEventData ))
21682 {
21683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 WDI_ASSERT( 0 );
21686 return WDI_STATUS_E_FAILURE;
21687 }
21688
21689 /*-------------------------------------------------------------------------
21690 Extract indication and send it to UMAC
21691 -------------------------------------------------------------------------*/
21692 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21693 pEventData->pEventData,
21694 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21695
21696 /*Fill in the indication parameters*/
21697 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021698
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21700 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21703 = halNoaAttrIndMsg.noaAttrIndParams.index;
21704 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21705 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21706 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21707 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021708
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21710 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21711 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21712 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21713 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21714 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21715 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21716 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021717
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21719 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21720 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21721 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21722 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21723 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21724 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21725 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21726
ltimariub77f24b2013-01-24 18:54:33 -080021727 if ( pWDICtx->wdiLowLevelIndCB )
21728 {
21729 /*Notify UMAC*/
21730 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21731 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021732
21733 return WDI_STATUS_SUCCESS;
21734}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021735
21736/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021737 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 an indication of this kind is being received over the
21739 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021740
21741 @param pWDICtx: pointer to the WLAN DAL context
21742 pEventData: pointer to the event information structure
21743
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 @see
21745 @return Result of the function call
21746*/
21747WDI_Status
21748WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021749(
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 WDI_ControlBlockType* pWDICtx,
21751 WDI_EventInfoType* pEventData
21752)
21753{
21754 WDI_LowLevelIndType wdiInd;
21755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021756
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 /*-------------------------------------------------------------------------
21758 Extract indication and send it to UMAC
21759 -------------------------------------------------------------------------*/
21760 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21762
ltimariub77f24b2013-01-24 18:54:33 -080021763 if ( pWDICtx->wdiLowLevelIndCB )
21764 {
21765 /*Notify UMAC*/
21766 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21767 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021768
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021770}/*WDI_ProcessTxPerHitInd*/
21771
Jeff Johnson295189b2012-06-20 16:38:30 -070021772/**
Yue Mab9c86f42013-08-14 15:59:08 -070021773 @brief Process Periodic Tx Pattern Fw Indication function
21774
21775 @param pWDICtx: pointer to the WLAN DAL context
21776 pEventData: pointer to the event information structure
21777
21778 @see
21779 @return Result of the function call
21780*/
21781WDI_Status
21782WDI_ProcessPeriodicTxPtrnFwInd
21783(
21784 WDI_ControlBlockType* pWDICtx,
21785 WDI_EventInfoType* pEventData
21786)
21787{
21788 WDI_LowLevelIndType wdiInd;
21789
21790 /*-------------------------------------------------------------------------
21791 Sanity check
21792 -------------------------------------------------------------------------*/
21793 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21794 (NULL == pEventData->pEventData))
21795 {
21796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21797 "%s: Invalid parameters", __func__);
21798 WDI_ASSERT(0);
21799 return WDI_STATUS_E_FAILURE;
21800 }
21801
21802 /*-------------------------------------------------------------------------
21803 Extract indication and send it to UMAC
21804 -------------------------------------------------------------------------*/
21805 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21806 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21807 sizeof(tHalPeriodicTxPtrnFwInd));
21808
21809 if (pWDICtx->wdiLowLevelIndCB)
21810 {
21811 /*Notify UMAC*/
21812 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21813 }
21814
21815 return WDI_STATUS_SUCCESS;
21816}
21817
21818/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 @brief WDI_ProcessFTMCommandReq
21820 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021821
21822 @param pWDICtx: pointer to the WLAN DAL context
21823 pEventData: pointer to the event information structure
21824
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 @see
21826 @return Result of the function call
21827*/
21828WDI_Status
21829WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021830(
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 WDI_ControlBlockType* pWDICtx,
21832 WDI_EventInfoType* pEventData
21833)
21834{
21835 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21836 wpt_uint8 *ftmCommandBuffer = NULL;
21837 wpt_uint16 dataOffset;
21838 wpt_uint16 bufferSize;
21839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 -------------------------------------------------------------------------*/
21842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21843 ( NULL == pEventData->pEventData))
21844
21845 {
21846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 }
21851
21852 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21853
21854 /* Get MSG Buffer */
21855 WDI_GetMessageBuffer(pWDICtx,
21856 WDI_FTM_CMD_REQ,
21857 ftmCommandReq->bodyLength,
21858 &ftmCommandBuffer,
21859 &dataOffset,
21860 &bufferSize);
21861
21862 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21863 ftmCommandReq->FTMCommandBody,
21864 ftmCommandReq->bodyLength);
21865
21866 /* Send MSG */
21867 return WDI_SendMsg(pWDICtx,
21868 ftmCommandBuffer,
21869 bufferSize,
21870 pEventData->pCBfnc,
21871 pEventData->pUserData,
21872 WDI_FTM_CMD_RESP);
21873}
21874
21875/**
21876 @brief WDI_ProcessFTMCommandRsp
21877 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021878
21879 @param pWDICtx: pointer to the WLAN DAL context
21880 pEventData: pointer to the event information structure
21881
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 @see
21883 @return Result of the function call
21884*/
21885WDI_Status
21886WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021887(
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 WDI_ControlBlockType* pWDICtx,
21889 WDI_EventInfoType* pEventData
21890)
21891{
21892 WDI_FTMCommandRspCb ftmCMDRspCb;
21893 tProcessPttRspParams *ftmCMDRspData = NULL;
21894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21895
21896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 -------------------------------------------------------------------------*/
21899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21900 ( NULL == pEventData->pEventData))
21901 {
21902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 }
21907
21908 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21909
21910 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21913 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21915
21916 /*Notify UMAC*/
21917 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21918
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021920}
Jeff Johnson295189b2012-06-20 16:38:30 -070021921/**
21922 @brief WDI_ProcessHalDumpCmdReq
21923 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
21925 @param pWDICtx: pointer to the WLAN DAL context
21926 pEventData: pointer to the event information structure
21927
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 @see
21929 @return Result of the function call
21930*/
21931WDI_Status
21932WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021933(
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 WDI_ControlBlockType* pWDICtx,
21935 WDI_EventInfoType* pEventData
21936)
21937{
21938 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21939 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21940 wpt_uint16 usDataOffset = 0;
21941 wpt_uint16 usSendSize = 0;
21942 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021944
21945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 -------------------------------------------------------------------------*/
21948 if (( NULL == pEventData ) ||
21949 ( NULL == pEventData->pEventData) ||
21950 ( NULL == pEventData->pCBfnc ))
21951 {
21952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 }
21957
21958 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21959 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21960
21961 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021972
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 /*-----------------------------------------------------------------------
21974 Get message buffer
21975 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21978 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21981 {
21982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021983 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 }
21988
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 wpalMemoryCopy( pSendBuffer+usDataOffset,
21990 &halDumpCmdReqMsg.dumpCmdReqParams,
21991 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021992
21993 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22000 wdiHALDumpCmdRspCb, pEventData->pUserData,
22001 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022002}
22003
22004/**
22005 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 Process hal Dump Command Response from HAL, simply route to HDD
22007
22008 @param pWDICtx: pointer to the WLAN DAL context
22009 pEventData: pointer to the event information structure
22010
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 @see
22012 @return Result of the function call
22013*/
22014WDI_Status
22015WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022016(
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 WDI_ControlBlockType* pWDICtx,
22018 WDI_EventInfoType* pEventData
22019)
22020{
22021 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022022 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22024
22025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 -------------------------------------------------------------------------*/
22028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22029 ( NULL == pEventData->pEventData))
22030 {
22031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 }
22036
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038
22039 /*Initialize the WDI Response structure */
22040 wdiHALDumpCmdRsp.usBufferLen = 0;
22041 wdiHALDumpCmdRsp.pBuffer = NULL;
22042
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022043 wpalMemoryCopy( &halDumpCmdRspParams,
22044 pEventData->pEventData,
22045 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022046
22047 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022048 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022049
22050 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022051 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 {
22053 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022054 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22055 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22056
22057 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22058 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022059 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022061
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 /*Notify UMAC*/
22063 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22064
22065 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22066 {
22067 /* Free the allocated buffer */
22068 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22069 }
22070 return WDI_STATUS_SUCCESS;
22071}
22072
22073/*==========================================================================
22074 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022075
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022078==========================================================================*/
22079/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 when it wishes to send up a notification like the ones
22082 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022083
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022085
22086 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 wctsNotifyCBData: the callback data of the user
22089
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022091
22092 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022093*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022094void
Jeff Johnson295189b2012-06-20 16:38:30 -070022095WDI_NotifyMsgCTSCB
22096(
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 WCTS_NotifyEventType wctsEvent,
22099 void* wctsNotifyCBData
22100)
22101{
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22104
22105 if (NULL == pWDICtx )
22106 {
22107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 }
22112
22113 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22114 {
22115 /* callback presumably occurred after close */
22116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022117 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 }
22120
22121 if ( WCTS_EVENT_OPEN == wctsEvent )
22122 {
22123 /*Flag must be set atomically as it is checked from incoming request
22124 functions*/
22125 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127
22128 /*Nothing to do - so try to dequeue any pending request that may have
22129 occurred while we were trying to establish this*/
22130 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022133 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 {
22135 /*Flag must be set atomically as it is checked from incoming request
22136 functions*/
22137 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022139
22140 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 wpalMutexRelease(&pWDICtx->wptMutex);
22143
22144 /*Notify that the Control Channel is closed */
22145 wpalEventSet(&pWDICtx->wctsActionEvent);
22146 }
22147
22148}/*WDI_NotifyMsgCTSCB*/
22149
22150
22151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 when it wishes to send up a packet received over the
22154 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022155
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022157
22158 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 pMsg: the packet
22160 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 wctsRxMsgCBData: the callback data of the user
22162
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022164
22165 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022166*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022167void
22168WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022169(
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 void* pMsg,
22172 wpt_uint32 uLen,
22173 void* wctsRxMsgCBData
22174)
22175{
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 tHalMsgHeader *pHalMsgHeader;
22177 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22180
22181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 ( uLen < sizeof(tHalMsgHeader)))
22186 {
22187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 }
22192
22193 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22194 {
22195 /* callback presumably occurred after close */
22196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022197 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 }
22200
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 context - so no serialization is necessary here
22203 ! - revisit this assumption */
22204
22205 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22206
22207 if ( uLen != pHalMsgHeader->msgLen )
22208 {
22209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22210 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022212 wpalWlanReload();
22213
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 }
22216
22217 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22218
22219 /*The message itself starts after the header*/
22220 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22221 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22222 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22223 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22224
22225
22226 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22227 {
22228 /*Stop the timer as the response was received */
22229 /*!UT - check for potential race conditions between stop and response */
22230 wpalTimerStop(&pWDICtx->wptResponseTimer);
22231 }
22232 /* Check if we receive a response message which is not expected */
22233 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22234 {
22235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22236 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22237 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22240 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022241
22242 if (gWDICb.bEnableSSR == false)
22243 {
22244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22245 "SSR is not enabled on WDI timeout");
22246 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22247 return;
22248 }
22249 wpalWcnssResetIntr();
22250 /* if this timer fires, it means Riva did not receive the FIQ */
22251 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22252
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 return;
22254 }
22255
22256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22257 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22258
22259 /*Post response event to the state machine*/
22260 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22261
22262}/*WDI_RXMsgCTSCB*/
22263
22264
22265/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022267========================================================================*/
22268
22269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022272
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 @param pWDICtx - pointer to the control block
22274
22275 @return Result of the function call
22276*/
22277WPT_INLINE WDI_Status
22278WDI_CleanCB
22279(
22280 WDI_ControlBlockType* pWDICtx
22281)
22282{
22283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22284
22285 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022287
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22290 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22291
22292 WDI_ResetAssocSessions( pWDICtx );
22293
22294 return WDI_STATUS_SUCCESS;
22295}/*WDI_CleanCB*/
22296
22297
22298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022300
Jeff Johnsone7245742012-09-05 17:12:55 -070022301
22302 @param pWDICtx: pointer to the WLAN DAL context
22303 pEventData: pointer to the event information structure
22304
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 @see
22306 @return Result of the function call
22307*/
22308WPT_INLINE WDI_Status
22309WDI_ProcessRequest
22310(
22311 WDI_ControlBlockType* pWDICtx,
22312 WDI_EventInfoType* pEventData
22313)
22314{
22315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22316
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 already checked these pointers*/
22319
22320 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22321 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022322 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022324 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 WDI_getReqMsgString(pEventData->wdiRequest),
22326 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22327 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22328 }
22329 else
22330 {
22331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 pEventData->wdiRequest);
22334 return WDI_STATUS_E_NOT_IMPLEMENT;
22335 }
22336}/*WDI_ProcessRequest*/
22337
22338
22339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022342 prefixes it with a send message header
22343
22344 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 wdiReqType: type of the request being sent
22346 uBufferLen: message buffer len
22347 pMsgBuffer: resulting allocated buffer
22348 pusDataOffset: offset in the buffer where the caller
22349 can start copying its message data
22350 puBufferSize: the resulting buffer size (offset+buff
22351 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022352
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 @see
22354 @return Result of the function call
22355*/
22356WDI_Status
22357WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022358(
22359 WDI_ControlBlockType* pWDICtx,
22360 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 wpt_uint8** pMsgBuffer,
22363 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 wpt_uint16* pusBufferSize
22365)
22366{
22367 tHalMsgHeader halMsgHeader;
22368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22369
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022371 again*/
22372
22373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22378 if ( NULL == *pMsgBuffer )
22379 {
22380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22381 "Unable to allocate message buffer for req %s (%d)",
22382 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022383 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 }
22387
22388 /*-------------------------------------------------------------------------
22389 Fill in the message header
22390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22392 /* Fill msgVersion */
22393#ifdef WLAN_FEATURE_11AC
22394 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022395 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022396 else
22397#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022398 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022399
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22401 *pusDataOffset = sizeof(halMsgHeader);
22402 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22403
22404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022405}/*WDI_GetMessageBuffer*/
22406
22407
22408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 the CB
22412
22413 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022415
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 usSendSize size of the buffer to be sent
22417 pRspCb: response callback - save in the WDI
22418 CB
22419 pUserData: user data associated with the
22420 callback
22421 wdiExpectedResponse: the code of the response that is
22422 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022423
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 @see
22425 @return Result of the function call
22426*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022427WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022428WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022429(
22430 WDI_ControlBlockType* pWDICtx,
22431 wpt_uint8* pSendBuffer,
22432 wpt_uint32 usSendSize,
22433 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 void* pUserData,
22435 WDI_ResponseEnumType wdiExpectedResponse
22436)
22437{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022438 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022439 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22441
22442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 ------------------------------------------------------------------------*/
22445 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 pWDICtx->pfncRspCB = pRspCb;
22447 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448
22449 /*-----------------------------------------------------------------------
22450 Call the CTS to send this message over - free message afterwards
22451 - notify transport failure
22452 Note: CTS is reponsible for freeing the message buffer.
22453 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022454 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22455 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22456 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022459 "Failed to send message with expected response %s (%d)"
22460 " over the bus - catastrophic failure",
22461 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22462 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022463
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022464 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22465 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022467 else
22468 {
22469 /* even when message was placed in CTS deferred Q, we will treat it
22470 success but log this info
22471 */
22472 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22473 {
22474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22475 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22476 "response %s (%d)",
22477 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22478 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022479 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022480 }
22481 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022482
Jeff Johnsond13512a2012-07-17 11:42:19 -070022483 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 if ( NULL != pWDICtx->wdiReqStatusCB )
22485 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022486 /*Inform originator whether request went through or not*/
22487 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22488 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 pWDICtx->wdiReqStatusCB = NULL;
22490 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022491 callback(wdiStatus, callbackContext);
22492
22493 /*For WDI requests which have registered a request callback,
22494 inform the WDA caller of the same via setting the return value
22495 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22496 end up repeating the functonality in the req callback for the
22497 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022498 if (wdiStatus != WDI_STATUS_SUCCESS)
22499 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022500 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022501 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 }
22503
Jeff Johnsond13512a2012-07-17 11:42:19 -070022504 if ( wdiStatus == WDI_STATUS_SUCCESS )
22505 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 /*Start timer for the expected response */
22507 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022508
22509 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022510 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022511 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022512 }
22513 else
22514 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022515 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022516 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22517 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022518
Jeff Johnsond13512a2012-07-17 11:42:19 -070022519 return wdiStatus;
22520
Jeff Johnson295189b2012-06-20 16:38:30 -070022521}/*WDI_SendMsg*/
22522
22523
22524
22525/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 the bus using the control transport and saves some info
22528 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022529
22530 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022531 pSendBuffer: buffer to be sent
22532 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022533
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 @see
22535 @return Result of the function call
22536*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022537WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022538WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022539(
22540 WDI_ControlBlockType* pWDICtx,
22541 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 wpt_uint32 usSendSize
22543)
22544{
22545 wpt_uint32 uStatus ;
22546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22547
22548 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 Note: CTS is reponsible for freeing the message buffer.
22551 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 (void*)pSendBuffer, usSendSize );
22554
22555 /*Inform Upper MAC about the outcome of the request*/
22556 if ( NULL != pWDICtx->wdiReqStatusCB )
22557 {
22558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22559 "Send indication status : %d", uStatus);
22560
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022561 /* even if CTS placed indication into its deferred Q, we treat it
22562 * as success and let CTS drain its queue as per smd interrupt to CTS
22563 */
22564 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 -070022565 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 }
22567
22568 /*If sending of the message failed - it is considered catastrophic and
22569 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022570 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22571 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22572
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 {
22574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022576
22577 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22578 return WDI_STATUS_E_FAILURE;
22579 }
22580
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022582}/*WDI_SendIndication*/
22583
22584
22585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 @brief WDI_DetectedDeviceError - called internally by DAL when
22587 it has detected a failure in the device
22588
22589 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 usErrorCode: error code detected by WDI or received
22591 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022592
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022595*/
22596void
22597WDI_DetectedDeviceError
22598(
22599 WDI_ControlBlockType* pWDICtx,
22600 wpt_uint16 usErrorCode
22601)
22602{
22603 WDI_LowLevelIndType wdiInd;
22604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22605
22606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22607 "Device Error detected code: %d - transitioning to stopped state",
22608 usErrorCode);
22609
Katya Nigamf02ad012014-05-05 16:12:49 +053022610 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22611
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 wpalMutexAcquire(&pWDICtx->wptMutex);
22613
22614 WDI_STATableStop(pWDICtx);
22615
22616 WDI_ResetAssocSessions(pWDICtx);
22617
22618 /*Set the expected state transition to stopped - because the device
22619 experienced a failure*/
22620 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22621
22622 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022624
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022626
22627 /*TO DO: - there should be an attempt to reset the device here*/
22628
22629 wpalMutexRelease(&pWDICtx->wptMutex);
22630
22631 /*------------------------------------------------------------------------
22632 Notify UMAC if a handler is registered
22633 ------------------------------------------------------------------------*/
22634 if (pWDICtx->wdiLowLevelIndCB)
22635 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022636 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22637 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022638
22639 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22640 }
22641}/*WDI_DetectedDeviceError*/
22642
22643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 we started on send message has expire - this should
22646 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 reply - trigger catastrophic failure
22648 @param
22649
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022651
22652 @see
22653 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022654*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022655void
Jeff Johnson295189b2012-06-20 16:38:30 -070022656WDI_ResponseTimerCB
22657(
22658 void *pUserData
22659)
22660{
22661 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22663
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022664 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 }
22671
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022672 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022673 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022674 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022675
22676 /* If response timer is running at this time that means this timer
22677 * event is not for the last request but rather last-to-last request and
22678 * this timer event has come after we recevied respone for last-to-last
22679 * message
22680 */
22681 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22682 {
22683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22684 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022685 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022686 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22688 "uArchTimeStampTmrStart: %llu seconds, "
22689 "uArchTimeStampTmrExp: %llu seconds",
22690 pWDICtx->uArchTimeStampRspTmrStart,
22691 pWDICtx->uArchTimeStampRspTmrExp);
22692
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022693 return;
22694 }
22695
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022696 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 {
22698
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022701 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022703 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22704 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22706 "uArchTimeStampTmrStart: %llu seconds, "
22707 "uArchTimeStampTmrExp: %llu seconds",
22708 pWDICtx->uArchTimeStampRspTmrStart,
22709 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022710
22711 /* WDI timeout means Riva is not responding or SMD communication to Riva
22712 * is not happening. The only possible way to recover from this error
22713 * is to initiate SSR from APPS.
22714 * There is also an option to re-enable wifi, which will eventually
22715 * trigger SSR
22716 */
22717 if (gWDICb.bEnableSSR == false)
22718 {
22719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22720 "SSR is not enabled on WDI timeout");
22721 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22722 return;
22723 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022724#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022725 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022726 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022727 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022728 if(wpalIsSsrPanicOnFailure())
22729 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022730 } else {
22731 /* if this timer fires, it means Riva did not receive the FIQ */
22732 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022733 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022734#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022735 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22736 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022737#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 }
22739 else
22740 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022742 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022743 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022744 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22745 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22747 "uArchTimeStampTmrStart: %llu seconds, "
22748 "uArchTimeStampTmrExp: %llu seconds",
22749 pWDICtx->uArchTimeStampRspTmrStart,
22750 pWDICtx->uArchTimeStampRspTmrExp);
22751
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 }
22753
22754 return;
22755
22756}/*WDI_ResponseTimerCB*/
22757
22758
22759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022761
Jeff Johnsone7245742012-09-05 17:12:55 -070022762
22763 @param pWDICtx: pointer to the WLAN DAL context
22764 pEventData: pointer to the event information structure
22765
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 @see
22767 @return Result of the function call
22768*/
22769WPT_INLINE WDI_Status
22770WDI_ProcessResponse
22771(
22772 WDI_ControlBlockType* pWDICtx,
22773 WDI_EventInfoType* pEventData
22774)
22775{
22776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22777
Jeff Johnsone7245742012-09-05 17:12:55 -070022778 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022779 already checked these pointers
22780 ! - revisit this assumption */
22781 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22782 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022785 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 WDI_getRespMsgString(pEventData->wdiResponse),
22787 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22788 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22789 }
22790 else
22791 {
22792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 pEventData->wdiResponse);
22795 return WDI_STATUS_E_NOT_IMPLEMENT;
22796 }
22797}/*WDI_ProcessResponse*/
22798
22799
22800/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022801 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022802=========================================================================*/
22803
22804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 @brief Utility function used by the DAL Core to help queue a
22806 request that cannot be processed right away.
22807 @param
22808
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 pWDICtx: - pointer to the WDI control block
22810 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 queued
22812
22813 @see
22814 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022815*/
22816WDI_Status
22817WDI_QueuePendingReq
22818(
22819 WDI_ControlBlockType* pWDICtx,
22820 WDI_EventInfoType* pEventData
22821)
22822{
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22827
22828 if ( NULL == pEventDataQueue )
22829 {
22830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 WDI_ASSERT(0);
22833 return WDI_STATUS_MEM_FAILURE;
22834 }
22835
22836 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22837 pEventDataQueue->pUserData = pEventData->pUserData;
22838 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22839 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841
22842 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22843 {
22844 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022845
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 if ( NULL == pEventInfo )
22847 {
22848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 WDI_ASSERT(0);
22851 wpalMemoryFree(pEventDataQueue);
22852 return WDI_STATUS_MEM_FAILURE;
22853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022854
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22856
22857 }
22858 pEventDataQueue->pEventData = pEventInfo;
22859
22860 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022863 if (eWLAN_PAL_STATUS_E_FAILURE ==
22864 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22865 {
22866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22867 "pEventDataQueue wpal_list_insert_back failed");
22868 WDI_ASSERT(0);
22869 wpalMemoryFree(pEventDataQueue);
22870 wpalMemoryFree(pEventInfo);
22871 return WDI_STATUS_MEM_FAILURE;
22872 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022873
22874 return WDI_STATUS_SUCCESS;
22875}/*WDI_QueuePendingReq*/
22876
22877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022878 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022880 @param
22881
22882 pMsg - pointer to the message
22883
22884 @see
22885 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022886*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022887void
Jeff Johnson295189b2012-06-20 16:38:30 -070022888WDI_PALCtrlMsgCB
22889(
22890 wpt_msg *pMsg
22891)
22892{
22893 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022894 WDI_ControlBlockType* pWDICtx = NULL;
22895 WDI_Status wdiStatus;
22896 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 void* pUserData;
22898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22899
22900 if (( NULL == pMsg )||
22901 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22902 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22903 {
22904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 }
22909
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022910 /*Access to the global state must be locked */
22911 wpalMutexAcquire(&pWDICtx->wptMutex);
22912
Jeff Johnson295189b2012-06-20 16:38:30 -070022913 /*Transition back to the state that we had before serialization
22914 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022915 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022918
22919 /*-----------------------------------------------------------------------
22920 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022921 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 -----------------------------------------------------------------------*/
22923 switch ( pEventData->wdiRequest )
22924 {
22925
Jeff Johnsone7245742012-09-05 17:12:55 -070022926 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22928 break;
22929
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 case WDI_NV_DOWNLOAD_REQ:
22931 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22932 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22933 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22934 {
22935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022936 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22938 }
22939 else
22940 {
22941 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22942 }
22943
22944 break;
22945
22946 default:
22947 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22948 break;
22949 }/*switch ( pEventData->wdiRequest )*/
22950
22951 if ( WDI_STATUS_SUCCESS != wdiStatus )
22952 {
22953 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22954
22955 if ( NULL != pfnReqStatusCB )
22956 {
22957 /*Fail the request*/
22958 pfnReqStatusCB( wdiStatus, pUserData);
22959 }
22960 }
22961
22962 /* Free data - that was allocated when queueing*/
22963 if( pEventData != NULL )
22964 {
22965 if( pEventData->pEventData != NULL )
22966 {
22967 wpalMemoryFree(pEventData->pEventData);
22968 }
22969 wpalMemoryFree(pEventData);
22970 }
22971
22972 if( pMsg != NULL )
22973 {
22974 wpalMemoryFree(pMsg);
22975 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022976
Jeff Johnson295189b2012-06-20 16:38:30 -070022977}/*WDI_PALCtrlMsgCB*/
22978
22979/**
22980 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 and schedule for execution a pending request
22982 @param
22983
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 pWDICtx: - pointer to the WDI control block
22985 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022986 queued
22987
22988 @see
22989 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022990*/
22991WDI_Status
22992WDI_DequeuePendingReq
22993(
22994 WDI_ControlBlockType* pWDICtx
22995)
22996{
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23001
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023003
23004 if ( NULL == pNode )
23005 {
23006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 return WDI_STATUS_SUCCESS;
23009 }
23010
23011 /*The node actually points to the 1st element inside the Event Data struct -
23012 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014
23015 /*Serialize processing in the control thread
23016 !TO DO: - check to see if these are all the messages params that need
23017 to be filled in*/
23018 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23019
23020 if ( NULL == palMsg )
23021 {
23022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023023 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023027 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023028 palMsg->callback = WDI_PALCtrlMsgCB;
23029 palMsg->ptr = pEventData;
23030
23031 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023033 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023034
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 /*Transition back to BUSY as we need to handle a queued request*/
23036 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023037
Jeff Johnson295189b2012-06-20 16:38:30 -070023038 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23039
23040 return WDI_STATUS_PENDING;
23041}/*WDI_DequeuePendingReq*/
23042
23043
23044/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 away.- The assoc requests will be queued by BSSID
23048 @param
23049
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 pWDICtx: - pointer to the WDI control block
23051 pEventData: pointer to the evnt info that needs to be queued
23052 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023053
23054 @see
23055 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023056*/
23057WDI_Status
23058WDI_QueueNewAssocRequest
23059(
23060 WDI_ControlBlockType* pWDICtx,
23061 WDI_EventInfoType* pEventData,
23062 wpt_macAddr macBSSID
23063)
23064{
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 wpt_uint8 i;
23066 WDI_BSSSessionType* pSession = NULL;
23067 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 void* pEventInfo;
23070 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023072
Jeff Johnsone7245742012-09-05 17:12:55 -070023073
23074 /*------------------------------------------------------------------------
23075 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 ------------------------------------------------------------------------*/
23077 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23078 {
23079 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23080 {
23081 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 pSession = &pWDICtx->aBSSSessions[i];
23083 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 }
23085 }
23086
23087 if ( i >= WDI_MAX_BSS_SESSIONS )
23088 {
23089 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023092
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 /*------------------------------------------------------------------------
23094 Fill in the BSSID for this session and set the usage flag
23095 ------------------------------------------------------------------------*/
23096 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023098
23099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 ------------------------------------------------------------------------*/
23102 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23103 if ( NULL == pEventDataQueue )
23104 {
23105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023106 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 WDI_ASSERT(0);
23108 return WDI_STATUS_MEM_FAILURE;
23109 }
23110
23111 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23112 if ( NULL == pSessionIdElement )
23113 {
23114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023115 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 WDI_ASSERT(0);
23117 wpalMemoryFree(pEventDataQueue);
23118 return WDI_STATUS_MEM_FAILURE;
23119 }
23120
23121 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23122 if ( NULL == pEventInfo )
23123 {
23124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023125 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 WDI_ASSERT(0);
23127 wpalMemoryFree(pSessionIdElement);
23128 wpalMemoryFree(pEventDataQueue);
23129 return WDI_STATUS_MEM_FAILURE;
23130 }
23131
23132 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23133 pEventDataQueue->pUserData = pEventData->pUserData;
23134 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23135 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023136 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023137
23138 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23139 pEventDataQueue->pEventData = pEventInfo;
23140
23141 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023143
23144 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023147 if (eWLAN_PAL_STATUS_E_FAILURE ==
23148 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23149 {
23150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23151 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23152 WDI_ASSERT(0);
23153 wpalMemoryFree(pSessionIdElement);
23154 wpalMemoryFree(pEventDataQueue);
23155 wpalMemoryFree(pEventInfo);
23156 return WDI_STATUS_MEM_FAILURE;
23157 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023158
23159 /*We need to maintain a separate list that keeps track of the order in which
23160 the new assoc requests are being queued such that we can start processing
23161 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023162 pSessionIdElement->ucIndex = i;
23163 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023164
23165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23166 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023167 if (eWLAN_PAL_STATUS_E_FAILURE ==
23168 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23169 {
23170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23171 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23172 WDI_ASSERT(0);
23173 wpalMemoryFree(pSessionIdElement);
23174 wpalMemoryFree(pEventDataQueue);
23175 wpalMemoryFree(pEventInfo);
23176 return WDI_STATUS_MEM_FAILURE;
23177 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023178
23179 /*Return pending as this is what the status of the request is since it has
23180 been queued*/
23181 return WDI_STATUS_PENDING;
23182}/*WDI_QueueNewAssocRequest*/
23183
23184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 away.- The assoc requests will be queued by BSSID
23188 @param
23189
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 pWDICtx: - pointer to the WDI control block
23191 pSession: - session in which to queue
23192 pEventData: pointer to the event info that needs to be
23193 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023194
23195 @see
23196 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023197*/
23198WDI_Status
23199WDI_QueueAssocRequest
23200(
23201 WDI_ControlBlockType* pWDICtx,
23202 WDI_BSSSessionType* pSession,
23203 WDI_EventInfoType* pEventData
23204)
23205{
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023210
23211 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 Sanity check
23213 ------------------------------------------------------------------------*/
23214 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23215 {
23216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023218
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 }
23221
23222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 ------------------------------------------------------------------------*/
23225 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23226 if ( NULL == pEventDataQueue )
23227 {
23228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023229 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 WDI_ASSERT(0);
23231 return WDI_STATUS_MEM_FAILURE;
23232 }
23233
23234 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23235 if ( NULL == pEventInfo )
23236 {
23237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23238 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023239 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 WDI_ASSERT(0);
23241 wpalMemoryFree(pEventDataQueue);
23242 return WDI_STATUS_MEM_FAILURE;
23243 }
23244
23245 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23246 pEventDataQueue->pUserData = pEventData->pUserData;
23247 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23248 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 pEventDataQueue->pEventData = pEventInfo;
23251
23252 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23253
23254 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256
23257 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023260 if (eWLAN_PAL_STATUS_E_FAILURE ==
23261 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23262 {
23263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23264 "%s: Cannot allocate memory for queueing event data info",
23265 __func__);
23266 WDI_ASSERT(0);
23267 wpalMemoryFree(pEventDataQueue);
23268 wpalMemoryFree(pEventInfo);
23269 return WDI_STATUS_MEM_FAILURE;
23270 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023271
23272 /*The result of this operation is pending because the request has been
23273 queued and it will be processed at a later moment in time */
23274 return WDI_STATUS_PENDING;
23275}/*WDI_QueueAssocRequest*/
23276
23277/**
23278 @brief Utility function used by the DAL Core to help dequeue
23279 an association request that was pending
23280 The request will be queued up in front of the main
23281 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023282 @param
23283
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023285
23286
23287 @see
23288 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023289*/
23290WDI_Status
23291WDI_DequeueAssocRequest
23292(
23293 WDI_ControlBlockType* pWDICtx
23294)
23295{
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 wpt_list_node* pNode = NULL;
23297 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 WDI_BSSSessionType* pSession;
23299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023300
23301 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 Sanity check
23303 ------------------------------------------------------------------------*/
23304 if ( NULL == pWDICtx )
23305 {
23306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023308
Jeff Johnsone7245742012-09-05 17:12:55 -070023309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 }
23311
23312 /*------------------------------------------------------------------------
23313 An association has been completed => a new association can occur
23314 Check to see if there are any pending associations ->
23315 If so , transfer all the pending requests into the busy queue for
23316 processing
23317 These requests have arrived prior to the requests in the busy queue
23318 (bc they needed to be processed in order to be placed in this queue)
23319 => they will be placed at the front of the busy queue
23320 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023322
23323 if ( NULL == pNode )
23324 {
23325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 return WDI_STATUS_SUCCESS;
23328 }
23329
23330 /*The node actually points to the 1st element inside the Session Id struct -
23331 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333
23334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23335 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23336
23337 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23338 {
23339 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023340
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 the front of the main waiting queue for subsequent execution*/
23343 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 while ( NULL != pNode )
23345 {
23346 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23348 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 }
23352 else
23353 {
23354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 WPAL_ASSERT(0);
23357 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023360
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23362 wpalMemoryFree(pSessionIdElement);
23363 return WDI_STATUS_SUCCESS;
23364}/*WDI_DequeueAssocRequest*/
23365
23366/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 pending requests - all req cb will be called with
23369 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 @param
23371
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023373
23374 @see
23375 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023376*/
23377WDI_Status
23378WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023379(
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 WDI_ControlBlockType* pWDICtx
23381)
23382{
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 void* pUserData;
23387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23388
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023390
23391 /*------------------------------------------------------------------------
23392 Go through all the requests and fail them - this will only be called
23393 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 ------------------------------------------------------------------------*/
23396 while( pNode )
23397 {
23398 /*The node actually points to the 1st element inside the Event Data struct -
23399 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 pEventDataQueue = (WDI_EventInfoType*)pNode;
23401
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23403 if ( NULL != pfnReqStatusCB )
23404 {
23405 /*Fail the request*/
23406 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23407 }
23408 /* Free data - that was allocated when queueing */
23409 if ( pEventDataQueue->pEventData != NULL )
23410 {
23411 wpalMemoryFree(pEventDataQueue->pEventData);
23412 }
23413 wpalMemoryFree(pEventDataQueue);
23414
23415 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23416 {
23417 break;
23418 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 }
23420
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 return WDI_STATUS_SUCCESS;
23422}/*WDI_ClearPendingRequests*/
23423
23424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 @brief Helper routine used to init the BSS Sessions in the WDI control block
23426
23427
23428 @param pWDICtx: pointer to the WLAN DAL context
23429
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 @see
23431*/
23432void
23433WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023434(
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 WDI_ControlBlockType* pWDICtx
23436)
23437{
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23440
23441 /*-------------------------------------------------------------------------
23442 No Sanity check
23443 -------------------------------------------------------------------------*/
23444 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23445 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23448 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23449 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23450 }
23451}/*WDI_ResetAssocSessions*/
23452
23453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 @brief Helper routine used to find a session based on the BSSID
23455
23456
23457 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 pSession: pointer to the session (if found)
23460
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023463*/
23464wpt_uint8
23465WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023466(
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 WDI_ControlBlockType* pWDICtx,
23468 wpt_macAddr macBSSID,
23469 WDI_BSSSessionType** ppSession
23470)
23471{
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23474
23475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 -------------------------------------------------------------------------*/
23478 if ( NULL == ppSession )
23479 {
23480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023481 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 }
23484
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 /*------------------------------------------------------------------------
23488 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 ------------------------------------------------------------------------*/
23490 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23491 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023492 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23493 (eWLAN_PAL_TRUE ==
23494 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23495 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 {
23497 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 return i;
23500 }
23501 }
23502
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023504}/*WDI_FindAssocSession*/
23505
23506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023507 @brief Helper routine used to find a session based on the BSSID
23508
23509
23510 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 ucBSSIdx: BSS Index of the session
23512 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023513
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023515 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023516*/
23517wpt_uint8
23518WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023519(
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 WDI_ControlBlockType* pWDICtx,
23521 wpt_uint16 ucBSSIdx,
23522 WDI_BSSSessionType** ppSession
23523)
23524{
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23527
23528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 -------------------------------------------------------------------------*/
23531 if ( NULL == ppSession )
23532 {
23533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023534 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023536 }
23537
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539
Jeff Johnsone7245742012-09-05 17:12:55 -070023540 /*------------------------------------------------------------------------
23541 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 ------------------------------------------------------------------------*/
23543 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23544 {
23545 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23546 {
23547 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 return i;
23550 }
23551 }
23552
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023554}/*WDI_FindAssocSessionByBSSIdx*/
23555
23556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023557 @brief Helper routine used to find a session based on the BSSID
23558
23559
23560 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 ucBSSIdx: BSS Index of the session
23562 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023563
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023566*/
23567wpt_uint8
23568WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023569(
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 WDI_ControlBlockType* pWDICtx,
23571 wpt_uint16 usIdx,
23572 WDI_BSSSessionType** ppSession
23573)
23574{
23575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23576
23577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 -------------------------------------------------------------------------*/
23580 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23581 {
23582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023583 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023584 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 }
23586
23587 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023589
23590 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023591
Jeff Johnson295189b2012-06-20 16:38:30 -070023592}/*WDI_FindAssocSessionByBSSIdx*/
23593
23594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023597
23598
23599 @param pWDICtx: pointer to the WLAN DAL context
23600 pSession: pointer to the session (if found)
23601
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023604*/
23605wpt_uint8
23606WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023607(
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 WDI_ControlBlockType* pWDICtx,
23609 WDI_BSSSessionType** ppSession
23610)
23611{
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 -------------------------------------------------------------------------*/
23617 if ( NULL == ppSession )
23618 {
23619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023620 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 }
23623
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023625
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 /*------------------------------------------------------------------------
23627 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 ------------------------------------------------------------------------*/
23629 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23630 {
23631 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23632 {
23633 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 return i;
23636 }
23637 }
23638
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640}/*WDI_FindEmptySession*/
23641
23642
23643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023646
23647
23648 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023649 macBSSID: pointer to BSSID. If NULL, get all the session.
23650 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23651 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23652 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 @see
23654 @return Number of sessions in use
23655*/
23656wpt_uint8
23657WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023658(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023659 WDI_ControlBlockType* pWDICtx,
23660 wpt_macAddr macBSSID,
23661 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023662)
23663{
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023666
23667 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 Count all sessions in use
23669 ------------------------------------------------------------------------*/
23670 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23671 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023672 if ( macBSSID && skipBSSID &&
23673 (eWLAN_PAL_TRUE ==
23674 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23675 WDI_MAC_ADDR_LEN)))
23676 {
23677 continue;
23678 }
23679 else if ( pWDICtx->aBSSSessions[i].bInUse )
23680 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023682 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 }
23684
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023686}/*WDI_GetActiveSessionsCount*/
23687
23688/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023690 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023691
23692
23693 @param pWDICtx: pointer to the WLAN DAL context
23694 pSession: pointer to the session (if found)
23695
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023697 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023698*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023699void
Jeff Johnson295189b2012-06-20 16:38:30 -070023700WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023701(
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 WDI_ControlBlockType* pWDICtx,
23703 WDI_BSSSessionType* ppSession
23704)
23705{
23706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 -------------------------------------------------------------------------*/
23709 if ( NULL == ppSession )
23710 {
23711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023712 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 }
23715
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 /*------------------------------------------------------------------------
23717 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 ------------------------------------------------------------------------*/
23719 wpal_list_destroy(&ppSession->wptPendingQueue);
23720 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23722 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23724 wpal_list_init(&ppSession->wptPendingQueue);
23725
23726}/*WDI_DeleteSession*/
23727
23728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023730 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 @param
23732
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 WDI_AddStaParams: - pointer to the WDI Add STA params
23734 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023735
23736 @see
23737 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023738*/
23739void
23740WDI_AddBcastSTAtoSTATable
23741(
23742 WDI_ControlBlockType* pWDICtx,
23743 WDI_AddStaParams * staParams,
23744 wpt_uint16 usBcastStaIdx
23745)
23746{
23747 WDI_AddStaParams wdiAddSTAParam = {0};
23748 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23750
23751 /*---------------------------------------------------------------------
23752 Sanity check
23753 ---------------------------------------------------------------------*/
23754 if ( NULL == staParams )
23755 {
23756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023758
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 }
23761
23762 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23763 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23764 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23765 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23766 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23767 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23768 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23769 WDI_MAC_ADDR_LEN );
23770 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23771 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23772 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23773 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23774 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23775 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23776 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023777
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23779}
23780
23781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 @brief NV blob will be divided into fragments of size 4kb and
23783 Sent to HAL
23784
23785 @param pWDICtx: pointer to the WLAN DAL context
23786 pEventData: pointer to the event information structure
23787
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 @see
23789 @return Result of the function call
23790 */
23791
23792WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023793(
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 WDI_ControlBlockType* pWDICtx,
23795 WDI_EventInfoType* pEventData
23796)
23797{
23798
23799 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23800 wpt_uint8* pSendBuffer = NULL;
23801 wpt_uint16 usDataOffset = 0;
23802 wpt_uint16 usSendSize = 0;
23803 wpt_uint16 usCurrentFragmentSize =0;
23804 wpt_uint8* pSrcBuffer = NULL;
23805 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23806 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23807
23808 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23809 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23810 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23811
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23814
23815 /* Update the current Fragment Number */
23816 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23817
23818 /*Update the HAL REQ structure */
23819 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23820 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23821 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23822
23823 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 image will be sent to HAL*/
23826
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23833 usCurrentFragmentSize = FRAGMENT_SIZE;
23834
23835 /*Update the HAL REQ structure */
23836 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23837 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23838
23839 }
23840 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 usCurrentFragmentSize = FRAGMENT_SIZE;
23843
23844 /*Update the HAL REQ structure */
23845 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23846 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23847 }
23848
23849 /*-----------------------------------------------------------------------
23850 Get message buffer
23851 -----------------------------------------------------------------------*/
23852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23853 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23854 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23857 {
23858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023859 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 pEventData, pwdiNvDownloadReqParams);
23861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 }
23864
23865 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23868
23869 /* Appending the NV image fragment */
23870 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23871 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23872 usCurrentFragmentSize);
23873
23874 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023876
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23878 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 WDI_NV_DOWNLOAD_RESP);
23880
23881}
Jeff Johnsone7245742012-09-05 17:12:55 -070023882/*============================================================================
23883 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 ============================================================================*/
23885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 @brief Helper routine used to find a session based on the BSSID
23887 @param pContext: pointer to the WLAN DAL context
23888 @param pDPContext: pointer to the Datapath context
23889
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023892*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023893WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023894WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23895{
23896 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23897
23898 pCB->pDPContext = pDPContext;
23899 return;
23900}
23901
23902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 @brief Helper routine used to find a session based on the BSSID
23904
23905
23906 @param pContext: pointer to the WLAN DAL context
23907
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 @see
23909 @return pointer to Datapath context
23910*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023911WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023912WDI_DS_GetDatapathContext (void *pContext)
23913{
23914 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23915 return pCB->pDPContext;
23916}
23917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 @brief Helper routine used to find a session based on the BSSID
23919
23920
23921 @param pContext: pointer to the WLAN DAL context
23922 @param pDTDriverContext: pointer to the Transport Driver context
23923
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 @see
23925 @return void
23926*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023927WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023928WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23929{
23930 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23931
23932 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934}
23935
23936/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 @brief Helper routine used to find a session based on the BSSID
23938
23939
23940 @param pWDICtx: pointer to the WLAN DAL context
23941
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023944*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023945WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023946WDT_GetTransportDriverContext (void *pContext)
23947{
23948 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023950}
23951
Jeff Johnsone7245742012-09-05 17:12:55 -070023952/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 Helper inline converters
23954 ============================================================================*/
23955/*Convert WDI driver type into HAL driver type*/
23956WPT_STATIC WPT_INLINE WDI_Status
23957WDI_HAL_2_WDI_STATUS
23958(
23959 eHalStatus halStatus
23960)
23961{
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 the chances of getting inlined*/
23964 switch( halStatus )
23965 {
23966 case eHAL_STATUS_SUCCESS:
23967 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23968 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23969 return WDI_STATUS_SUCCESS;
23970 case eHAL_STATUS_FAILURE:
23971 return WDI_STATUS_E_FAILURE;
23972 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 return WDI_STATUS_MEM_FAILURE;
23974 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 default:
23977 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23978 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023979
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981}/*WDI_HAL_2_WDI_STATUS*/
23982
23983/*Convert WDI request type into HAL request type*/
23984WPT_STATIC WPT_INLINE tHalHostMsgType
23985WDI_2_HAL_REQ_TYPE
23986(
23987 WDI_RequestEnumType wdiReqType
23988)
23989{
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 the chances of getting inlined*/
23992 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024019 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024020 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 return WLAN_HAL_RMV_STAKEY_REQ;
24029 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 case WDI_DEL_BA_REQ:
24038 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024039#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 case WDI_TSM_STATS_REQ:
24041 return WLAN_HAL_TSM_STATS_REQ;
24042#endif
24043 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024044 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 case WDI_ADD_BA_SESSION_REQ:
24054 return WLAN_HAL_ADD_BA_SESSION_REQ;
24055 case WDI_TRIGGER_BA_REQ:
24056 return WLAN_HAL_TRIGGER_BA_REQ;
24057 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024060 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024061 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24062 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24063 case WDI_SET_MAX_TX_POWER_REQ:
24064 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024065 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24066 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024067 case WDI_SET_TX_POWER_REQ:
24068 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24070 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024071#ifdef FEATURE_WLAN_TDLS
24072 case WDI_TDLS_LINK_ESTABLISH_REQ:
24073 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024074 case WDI_TDLS_CHAN_SWITCH_REQ:
24075 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024096 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 case WDI_REM_BEACON_FILTER_REQ:
24098 return WLAN_HAL_REM_BCN_FILTER_REQ;
24099 case WDI_SET_RSSI_THRESHOLDS_REQ:
24100 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24101 case WDI_HOST_OFFLOAD_REQ:
24102 return WLAN_HAL_HOST_OFFLOAD_REQ;
24103 case WDI_WOWL_ADD_BC_PTRN_REQ:
24104 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24105 case WDI_WOWL_DEL_BC_PTRN_REQ:
24106 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24107 case WDI_WOWL_ENTER_REQ:
24108 return WLAN_HAL_ENTER_WOWL_REQ;
24109 case WDI_WOWL_EXIT_REQ:
24110 return WLAN_HAL_EXIT_WOWL_REQ;
24111 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24112 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24113 case WDI_NV_DOWNLOAD_REQ:
24114 return WLAN_HAL_DOWNLOAD_NV_REQ;
24115 case WDI_FLUSH_AC_REQ:
24116 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24117 case WDI_BTAMP_EVENT_REQ:
24118 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24119#ifdef WLAN_FEATURE_VOWIFI_11R
24120 case WDI_AGGR_ADD_TS_REQ:
24121 return WLAN_HAL_AGGR_ADD_TS_REQ;
24122#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 case WDI_FTM_CMD_REQ:
24124 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 case WDI_ADD_STA_SELF_REQ:
24126 return WLAN_HAL_ADD_STA_SELF_REQ;
24127 case WDI_DEL_STA_SELF_REQ:
24128 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024129#ifdef FEATURE_OEM_DATA_SUPPORT
24130 case WDI_START_OEM_DATA_REQ:
24131 return WLAN_HAL_START_OEM_DATA_REQ;
24132#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 case WDI_HOST_RESUME_REQ:
24134 return WLAN_HAL_HOST_RESUME_REQ;
24135 case WDI_HOST_SUSPEND_IND:
24136 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024137 case WDI_TRAFFIC_STATS_IND:
24138 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024139#ifdef WLAN_FEATURE_11W
24140 case WDI_EXCLUDE_UNENCRYPTED_IND:
24141 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24142#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 case WDI_KEEP_ALIVE_REQ:
24144 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024145#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024146 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24147 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024148#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024149#ifdef FEATURE_WLAN_SCAN_PNO
24150 case WDI_SET_PREF_NETWORK_REQ:
24151 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24152 case WDI_SET_RSSI_FILTER_REQ:
24153 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24154 case WDI_UPDATE_SCAN_PARAMS_REQ:
24155 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24156#endif // FEATURE_WLAN_SCAN_PNO
24157 case WDI_SET_TX_PER_TRACKING_REQ:
24158 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24159#ifdef WLAN_FEATURE_PACKET_FILTERING
24160 case WDI_8023_MULTICAST_LIST_REQ:
24161 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24162 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24165 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24166 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24167 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24168#endif // WLAN_FEATURE_PACKET_FILTERING
24169 case WDI_HAL_DUMP_CMD_REQ:
24170 return WLAN_HAL_DUMP_COMMAND_REQ;
24171#ifdef WLAN_FEATURE_GTK_OFFLOAD
24172 case WDI_GTK_OFFLOAD_REQ:
24173 return WLAN_HAL_GTK_OFFLOAD_REQ;
24174 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24175 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24176#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24177
24178 case WDI_INIT_SCAN_CON_REQ:
24179 return WLAN_HAL_INIT_SCAN_CON_REQ;
24180 case WDI_SET_POWER_PARAMS_REQ:
24181 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24182 case WDI_SET_TM_LEVEL_REQ:
24183 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24184 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24185 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024186#ifdef WLAN_FEATURE_11AC
24187 case WDI_UPDATE_VHT_OP_MODE_REQ:
24188 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24189#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024190 case WDI_GET_ROAM_RSSI_REQ:
24191 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024192 case WDI_DHCP_START_IND:
24193 return WLAN_HAL_DHCP_START_IND;
24194 case WDI_DHCP_STOP_IND:
24195 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024196#ifdef FEATURE_WLAN_LPHB
24197 case WDI_LPHB_CFG_REQ:
24198 return WLAN_HAL_LPHB_CFG_REQ;
24199#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024200 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24201 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24202 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24203 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24204
Rajeev79dbe4c2013-10-05 11:03:42 +053024205#ifdef FEATURE_WLAN_BATCH_SCAN
24206 case WDI_SET_BATCH_SCAN_REQ:
24207 return WLAN_HAL_BATCHSCAN_SET_REQ;
24208 case WDI_STOP_BATCH_SCAN_IND:
24209 return WLAN_HAL_BATCHSCAN_STOP_IND;
24210 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24211 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24212#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024213 case WDI_RATE_UPDATE_IND:
24214 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024215 case WDI_START_HT40_OBSS_SCAN_IND:
24216 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24217 case WDI_STOP_HT40_OBSS_SCAN_IND:
24218 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024219 case WDI_UPDATE_CHAN_REQ:
24220 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024221 case WDI_CH_SWITCH_REQ_V1:
24222 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024223 case WDI_GET_BCN_MISS_RATE_REQ:
24224 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024225
24226#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24227 case WDI_LL_STATS_SET_REQ:
24228 return WLAN_HAL_LL_SET_STATS_REQ;
24229 case WDI_LL_STATS_GET_REQ:
24230 return WLAN_HAL_LL_GET_STATS_REQ;
24231 case WDI_LL_STATS_CLEAR_REQ:
24232 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24233#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024234#ifdef WLAN_FEATURE_EXTSCAN
24235 case WDI_EXTSCAN_START_REQ:
24236 return WLAN_HAL_EXT_SCAN_START_REQ;
24237 case WDI_EXTSCAN_STOP_REQ:
24238 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24239 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24240 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24241 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24242 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24243 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24244 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24245 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24246 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24247 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24248 return WLAN_HAL_SIG_RSSI_SET_REQ;
24249 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24250 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24251#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024252 case WDI_SPOOF_MAC_ADDR_REQ:
24253 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024254 case WDI_GET_FW_STATS_REQ:
24255 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024256 case WDI_ENCRYPT_MSG_REQ:
24257 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024258 case WDI_FW_LOGGING_INIT_REQ:
24259 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024260 case WDI_GET_FRAME_LOG_REQ:
24261 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024262 case WDI_NAN_REQUEST:
24263 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024264 case WDI_SET_RTS_CTS_HTVHT_IND:
24265 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024266 case WDI_MON_START_REQ:
24267 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24268 case WDI_MON_STOP_REQ:
24269 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024270 case WDI_FW_LOGGING_DXE_DONE_IND:
24271 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024272 case WDI_FATAL_EVENT_LOGGING_REQ:
24273 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
24274
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024278
Jeff Johnson295189b2012-06-20 16:38:30 -070024279}/*WDI_2_HAL_REQ_TYPE*/
24280
24281/*Convert WDI response type into HAL response type*/
24282WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24283HAL_2_WDI_RSP_TYPE
24284(
24285 tHalHostMsgType halMsg
24286)
24287{
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 the chances of getting inlined*/
24290 switch( halMsg )
24291 {
24292 case WLAN_HAL_START_RSP:
24293 return WDI_START_RESP;
24294 case WLAN_HAL_STOP_RSP:
24295 return WDI_STOP_RESP;
24296 case WLAN_HAL_INIT_SCAN_RSP:
24297 return WDI_INIT_SCAN_RESP;
24298 case WLAN_HAL_START_SCAN_RSP:
24299 return WDI_START_SCAN_RESP;
24300 case WLAN_HAL_END_SCAN_RSP:
24301 return WDI_END_SCAN_RESP;
24302 case WLAN_HAL_FINISH_SCAN_RSP:
24303 return WDI_FINISH_SCAN_RESP;
24304 case WLAN_HAL_CONFIG_STA_RSP:
24305 return WDI_CONFIG_STA_RESP;
24306 case WLAN_HAL_DELETE_STA_RSP:
24307 return WDI_DEL_STA_RESP;
24308 case WLAN_HAL_CONFIG_BSS_RSP:
24309 return WDI_CONFIG_BSS_RESP;
24310 case WLAN_HAL_DELETE_BSS_RSP:
24311 return WDI_DEL_BSS_RESP;
24312 case WLAN_HAL_JOIN_RSP:
24313 return WDI_JOIN_RESP;
24314 case WLAN_HAL_POST_ASSOC_RSP:
24315 return WDI_POST_ASSOC_RESP;
24316 case WLAN_HAL_SET_BSSKEY_RSP:
24317 return WDI_SET_BSS_KEY_RESP;
24318 case WLAN_HAL_SET_STAKEY_RSP:
24319 return WDI_SET_STA_KEY_RESP;
24320 case WLAN_HAL_RMV_BSSKEY_RSP:
24321 return WDI_RMV_BSS_KEY_RESP;
24322 case WLAN_HAL_RMV_STAKEY_RSP:
24323 return WDI_RMV_STA_KEY_RESP;
24324 case WLAN_HAL_SET_BCASTKEY_RSP:
24325 return WDI_SET_STA_BCAST_KEY_RESP;
24326 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24327 // return WDI_RMV_STA_BCAST_KEY_RESP;
24328 case WLAN_HAL_ADD_TS_RSP:
24329 return WDI_ADD_TS_RESP;
24330 case WLAN_HAL_DEL_TS_RSP:
24331 return WDI_DEL_TS_RESP;
24332 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24333 return WDI_UPD_EDCA_PRMS_RESP;
24334 case WLAN_HAL_ADD_BA_RSP:
24335 return WDI_ADD_BA_RESP;
24336 case WLAN_HAL_DEL_BA_RSP:
24337 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024338#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 case WLAN_HAL_TSM_STATS_RSP:
24340 return WDI_TSM_STATS_RESP;
24341#endif
24342 case WLAN_HAL_CH_SWITCH_RSP:
24343 return WDI_CH_SWITCH_RESP;
24344 case WLAN_HAL_SET_LINK_ST_RSP:
24345 return WDI_SET_LINK_ST_RESP;
24346 case WLAN_HAL_GET_STATS_RSP:
24347 return WDI_GET_STATS_RESP;
24348 case WLAN_HAL_UPDATE_CFG_RSP:
24349 return WDI_UPDATE_CFG_RESP;
24350 case WLAN_HAL_ADD_BA_SESSION_RSP:
24351 return WDI_ADD_BA_SESSION_RESP;
24352 case WLAN_HAL_TRIGGER_BA_RSP:
24353 return WDI_TRIGGER_BA_RESP;
24354 case WLAN_HAL_UPDATE_BEACON_RSP:
24355 return WDI_UPD_BCON_PRMS_RESP;
24356 case WLAN_HAL_SEND_BEACON_RSP:
24357 return WDI_SND_BCON_RESP;
24358 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24359 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24360 /*Indications*/
24361 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24362 return WDI_HAL_RSSI_NOTIFICATION_IND;
24363 case WLAN_HAL_MISSED_BEACON_IND:
24364 return WDI_HAL_MISSED_BEACON_IND;
24365 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24366 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24367 case WLAN_HAL_MIC_FAILURE_IND:
24368 return WDI_HAL_MIC_FAILURE_IND;
24369 case WLAN_HAL_FATAL_ERROR_IND:
24370 return WDI_HAL_FATAL_ERROR_IND;
24371 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24372 return WDI_HAL_DEL_STA_IND;
24373 case WLAN_HAL_COEX_IND:
24374 return WDI_HAL_COEX_IND;
24375 case WLAN_HAL_OTA_TX_COMPL_IND:
24376 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 case WLAN_HAL_P2P_NOA_ATTR_IND:
24378 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024379 case WLAN_HAL_P2P_NOA_START_IND:
24380 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024381 case WLAN_HAL_DEL_BA_IND:
24382 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 case WLAN_HAL_TX_PER_HIT_IND:
24384 return WDI_HAL_TX_PER_HIT_IND;
24385 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24386 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024387 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24388 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024389 case WLAN_HAL_SET_TX_POWER_RSP:
24390 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 case WLAN_HAL_SET_P2P_GONOA_RSP:
24392 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024393#ifdef FEATURE_WLAN_TDLS
24394 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24395 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024396 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24397 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024398 case WLAN_HAL_TDLS_IND:
24399 return WDI_HAL_TDLS_IND;
24400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24420 return WDI_SET_BEACON_FILTER_RESP;
24421 case WLAN_HAL_REM_BCN_FILTER_RSP:
24422 return WDI_REM_BEACON_FILTER_RESP;
24423 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24424 return WDI_SET_RSSI_THRESHOLDS_RESP;
24425 case WLAN_HAL_HOST_OFFLOAD_RSP:
24426 return WDI_HOST_OFFLOAD_RESP;
24427 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24428 return WDI_WOWL_ADD_BC_PTRN_RESP;
24429 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24430 return WDI_WOWL_DEL_BC_PTRN_RESP;
24431 case WLAN_HAL_ENTER_WOWL_RSP:
24432 return WDI_WOWL_ENTER_RESP;
24433 case WLAN_HAL_EXIT_WOWL_RSP:
24434 return WDI_WOWL_EXIT_RESP;
24435 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24436 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24437 case WLAN_HAL_DOWNLOAD_NV_RSP:
24438 return WDI_NV_DOWNLOAD_RESP;
24439 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24440 return WDI_FLUSH_AC_RESP;
24441 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24442 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 case WLAN_HAL_PROCESS_PTT_RSP:
24444 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 case WLAN_HAL_ADD_STA_SELF_RSP:
24446 return WDI_ADD_STA_SELF_RESP;
24447case WLAN_HAL_DEL_STA_SELF_RSP:
24448 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024449#ifdef FEATURE_OEM_DATA_SUPPORT
24450 case WLAN_HAL_START_OEM_DATA_RSP:
24451 return WDI_START_OEM_DATA_RESP;
24452#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024453 case WLAN_HAL_HOST_RESUME_RSP:
24454 return WDI_HOST_RESUME_RESP;
24455 case WLAN_HAL_KEEP_ALIVE_RSP:
24456 return WDI_KEEP_ALIVE_RESP;
24457#ifdef FEATURE_WLAN_SCAN_PNO
24458 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24459 return WDI_SET_PREF_NETWORK_RESP;
24460 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24463 return WDI_UPDATE_SCAN_PARAMS_RESP;
24464 case WLAN_HAL_PREF_NETW_FOUND_IND:
24465 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24466#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024467#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024468 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24469 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024470#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24472 return WDI_SET_TX_PER_TRACKING_RESP;
24473#ifdef WLAN_FEATURE_PACKET_FILTERING
24474 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24475 return WDI_8023_MULTICAST_LIST_RESP;
24476 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24477 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24478 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24479 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24480 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24481 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24482#endif // WLAN_FEATURE_PACKET_FILTERING
24483
24484 case WLAN_HAL_DUMP_COMMAND_RSP:
24485 return WDI_HAL_DUMP_CMD_RESP;
24486 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24487 return WDI_SET_POWER_PARAMS_RESP;
24488#ifdef WLAN_FEATURE_VOWIFI_11R
24489 case WLAN_HAL_AGGR_ADD_TS_RSP:
24490 return WDI_AGGR_ADD_TS_RESP;
24491#endif
24492
24493#ifdef WLAN_FEATURE_GTK_OFFLOAD
24494 case WLAN_HAL_GTK_OFFLOAD_RSP:
24495 return WDI_GTK_OFFLOAD_RESP;
24496 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24497 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24498#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24499#ifdef WLAN_WAKEUP_EVENTS
24500 case WLAN_HAL_WAKE_REASON_IND:
24501 return WDI_HAL_WAKE_REASON_IND;
24502#endif // WLAN_WAKEUP_EVENTS
24503
24504 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24505 return WDI_SET_TM_LEVEL_RESP;
24506 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24507 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024508#ifdef WLAN_FEATURE_11AC
24509 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24510 return WDI_UPDATE_VHT_OP_MODE_RESP;
24511#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024512#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024513 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24514 return WDI_GET_ROAM_RSSI_RESP;
24515#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024516
Leo Chang9056f462013-08-01 19:21:11 -070024517#ifdef FEATURE_WLAN_LPHB
24518 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024519 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024520 case WLAN_HAL_LPHB_CFG_RSP:
24521 return WDI_LPHB_CFG_RESP;
24522#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024523
24524 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24525 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024526 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24527 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024528
Rajeev79dbe4c2013-10-05 11:03:42 +053024529#ifdef FEATURE_WLAN_BATCH_SCAN
24530 case WLAN_HAL_BATCHSCAN_SET_RSP:
24531 return WDI_SET_BATCH_SCAN_RESP;
24532 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24533 return WDI_BATCHSCAN_RESULT_IND;
24534#endif // FEATURE_WLAN_BATCH_SCAN
24535
Leo Chang0b0e45a2013-12-15 15:18:55 -080024536#ifdef FEATURE_WLAN_CH_AVOID
24537 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24538 return WDI_HAL_CH_AVOID_IND;
24539#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024540 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24541 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024542 case WLAN_HAL_PRINT_REG_INFO_IND:
24543 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024544 case WLAN_HAL_CH_SWITCH_V1_RSP:
24545 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024546 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24547 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024548#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24549 case WLAN_HAL_LL_SET_STATS_RSP:
24550 return WDI_LL_STATS_SET_RSP;
24551 case WLAN_HAL_LL_GET_STATS_RSP:
24552 return WDI_LL_STATS_GET_RSP;
24553 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24554 return WDI_LL_STATS_CLEAR_RSP;
24555 case WLAN_HAL_LL_NOTIFY_STATS:
24556 return WDI_HAL_LL_STATS_RESULTS_IND;
24557#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024558#ifdef WLAN_FEATURE_EXTSCAN
24559 case WLAN_HAL_EXT_SCAN_START_RSP:
24560 return WDI_EXTSCAN_START_RSP;
24561 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24562 return WDI_EXTSCAN_STOP_RSP;
24563 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24564 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24565 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24566 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24567 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24568 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24569 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24570 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24571 case WLAN_HAL_SIG_RSSI_SET_RSP:
24572 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24573 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24574 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24575 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24576 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24577 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24578 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24579 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24580 return WDI_HAL_EXTSCAN_RESULT_IND;
24581 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24582 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24583 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24584 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24585#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024586 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24587 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024588 case WLAN_HAL_FW_STATS_RSP:
24589 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024590 case WLAN_HAL_ENCRYPT_DATA_RSP:
24591 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024592 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24593 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024594 case WLAN_HAL_GET_FRAME_LOG_RSP:
24595 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024596 case WLAN_HAL_NAN_RSP:
24597 return WDI_NAN_RESPONSE;
24598 case WLAN_HAL_NAN_EVT:
24599 return WDI_HAL_NAN_EVENT;
Katya Nigamf0511f62015-05-05 16:40:57 +053024600 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24601 return WDI_MON_START_RSP;
24602 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24603 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024604 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24605 return WDI_FATAL_EVENT_LOGGING_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 }
24609
24610}/*HAL_2_WDI_RSP_TYPE*/
24611
24612
24613/*Convert WDI driver type into HAL driver type*/
24614WPT_STATIC WPT_INLINE tDriverType
24615WDI_2_HAL_DRV_TYPE
24616(
24617 WDI_DriverType wdiDriverType
24618)
24619{
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 the chances of getting inlined*/
24622 switch( wdiDriverType )
24623 {
24624 case WDI_DRIVER_TYPE_PRODUCTION:
24625 return eDRIVER_TYPE_PRODUCTION;
24626 case WDI_DRIVER_TYPE_MFG:
24627 return eDRIVER_TYPE_MFG;
24628 case WDI_DRIVER_TYPE_DVT:
24629 return eDRIVER_TYPE_DVT;
24630 }
24631
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024633}/*WDI_2_HAL_DRV_TYPE*/
24634
24635
24636/*Convert WDI stop reason into HAL stop reason*/
24637WPT_STATIC WPT_INLINE tHalStopType
24638WDI_2_HAL_STOP_REASON
24639(
24640 WDI_StopType wdiDriverType
24641)
24642{
Jeff Johnsone7245742012-09-05 17:12:55 -070024643 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024644 the chances of getting inlined*/
24645 switch( wdiDriverType )
24646 {
24647 case WDI_STOP_TYPE_SYS_RESET:
24648 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024649 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24650 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 case WDI_STOP_TYPE_RF_KILL:
24652 return HAL_STOP_TYPE_RF_KILL;
24653 }
24654
Jeff Johnsone7245742012-09-05 17:12:55 -070024655 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024656}/*WDI_2_HAL_STOP_REASON*/
24657
24658
24659/*Convert WDI scan mode type into HAL scan mode type*/
24660WPT_STATIC WPT_INLINE eHalSysMode
24661WDI_2_HAL_SCAN_MODE
24662(
24663 WDI_ScanMode wdiScanMode
24664)
24665{
Jeff Johnsone7245742012-09-05 17:12:55 -070024666 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 the chances of getting inlined*/
24668 switch( wdiScanMode )
24669 {
24670 case WDI_SCAN_MODE_NORMAL:
24671 return eHAL_SYS_MODE_NORMAL;
24672 case WDI_SCAN_MODE_LEARN:
24673 return eHAL_SYS_MODE_LEARN;
24674 case WDI_SCAN_MODE_SCAN:
24675 return eHAL_SYS_MODE_SCAN;
24676 case WDI_SCAN_MODE_PROMISC:
24677 return eHAL_SYS_MODE_PROMISC;
24678 case WDI_SCAN_MODE_SUSPEND_LINK:
24679 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024680 case WDI_SCAN_MODE_ROAM_SCAN:
24681 return eHAL_SYS_MODE_ROAM_SCAN;
24682 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24683 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 }
24685
Jeff Johnsone7245742012-09-05 17:12:55 -070024686 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024687}/*WDI_2_HAL_SCAN_MODE*/
24688
24689/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024690WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024691WDI_2_HAL_SEC_CH_OFFSET
24692(
24693 WDI_HTSecondaryChannelOffset wdiSecChOffset
24694)
24695{
Jeff Johnsone7245742012-09-05 17:12:55 -070024696 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 the chances of getting inlined*/
24698 switch( wdiSecChOffset )
24699 {
24700 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24706#ifdef WLAN_FEATURE_11AC
24707 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24708 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24709 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24710 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24711 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24712 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24713 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24714 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24715 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24716 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24717 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24718 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24719 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24720 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24721#endif
24722 default:
24723 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 }
24725
Jeff Johnsone7245742012-09-05 17:12:55 -070024726 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024727}/*WDI_2_HAL_SEC_CH_OFFSET*/
24728
24729/*Convert WDI BSS type into HAL BSS type*/
24730WPT_STATIC WPT_INLINE tSirBssType
24731WDI_2_HAL_BSS_TYPE
24732(
24733 WDI_BssType wdiBSSType
24734)
24735{
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 the chances of getting inlined*/
24738 switch( wdiBSSType )
24739 {
24740 case WDI_INFRASTRUCTURE_MODE:
24741 return eSIR_INFRASTRUCTURE_MODE;
24742 case WDI_INFRA_AP_MODE:
24743 return eSIR_INFRA_AP_MODE;
24744 case WDI_IBSS_MODE:
24745 return eSIR_IBSS_MODE;
24746 case WDI_BTAMP_STA_MODE:
24747 return eSIR_BTAMP_STA_MODE;
24748 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 case WDI_BSS_AUTO_MODE:
24751 return eSIR_AUTO_MODE;
24752 }
24753
Jeff Johnsone7245742012-09-05 17:12:55 -070024754 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024755}/*WDI_2_HAL_BSS_TYPE*/
24756
24757/*Convert WDI NW type into HAL NW type*/
24758WPT_STATIC WPT_INLINE tSirNwType
24759WDI_2_HAL_NW_TYPE
24760(
24761 WDI_NwType wdiNWType
24762)
24763{
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 the chances of getting inlined*/
24766 switch( wdiNWType )
24767 {
24768 case WDI_11A_NW_TYPE:
24769 return eSIR_11A_NW_TYPE;
24770 case WDI_11B_NW_TYPE:
24771 return eSIR_11B_NW_TYPE;
24772 case WDI_11G_NW_TYPE:
24773 return eSIR_11G_NW_TYPE;
24774 case WDI_11N_NW_TYPE:
24775 return eSIR_11N_NW_TYPE;
24776 }
24777
Jeff Johnsone7245742012-09-05 17:12:55 -070024778 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024779}/*WDI_2_HAL_NW_TYPE*/
24780
24781/*Convert WDI chanel bonding type into HAL cb type*/
24782WPT_STATIC WPT_INLINE ePhyChanBondState
24783WDI_2_HAL_CB_STATE
24784(
24785 WDI_PhyChanBondState wdiCbState
24786)
24787{
Jeff Johnsone7245742012-09-05 17:12:55 -070024788 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 the chances of getting inlined*/
24790 switch ( wdiCbState )
24791 {
24792 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24793 return PHY_SINGLE_CHANNEL_CENTERED;
24794 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24795 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24796 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24797 return PHY_DOUBLE_CHANNEL_CENTERED;
24798 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24799 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024800#ifdef WLAN_FEATURE_11AC
24801 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24802 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24803 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24804 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24805 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24806 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24807 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24808 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24809 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24810 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24811 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24812 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24813 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24814 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24815#endif
24816 case WDI_MAX_CB_STATE:
24817 default:
24818 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024820
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 return PHY_CHANNEL_BONDING_STATE_MAX;
24822}/*WDI_2_HAL_CB_STATE*/
24823
24824/*Convert WDI chanel bonding type into HAL cb type*/
24825WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24826WDI_2_HAL_HT_OPER_MODE
24827(
24828 WDI_HTOperatingMode wdiHTOperMode
24829)
24830{
Jeff Johnsone7245742012-09-05 17:12:55 -070024831 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024832 the chances of getting inlined*/
24833 switch ( wdiHTOperMode )
24834 {
24835 case WDI_HT_OP_MODE_PURE:
24836 return eSIR_HT_OP_MODE_PURE;
24837 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24838 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24839 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24840 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24841 case WDI_HT_OP_MODE_MIXED:
24842 return eSIR_HT_OP_MODE_MIXED;
24843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024844
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 return eSIR_HT_OP_MODE_MAX;
24846}/*WDI_2_HAL_HT_OPER_MODE*/
24847
24848/*Convert WDI mimo PS type into HAL mimo PS type*/
24849WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24850WDI_2_HAL_MIMO_PS
24851(
24852 WDI_HTMIMOPowerSaveState wdiHTOperMode
24853)
24854{
Jeff Johnsone7245742012-09-05 17:12:55 -070024855 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 the chances of getting inlined*/
24857 switch ( wdiHTOperMode )
24858 {
24859 case WDI_HT_MIMO_PS_STATIC:
24860 return eSIR_HT_MIMO_PS_STATIC;
24861 case WDI_HT_MIMO_PS_DYNAMIC:
24862 return eSIR_HT_MIMO_PS_DYNAMIC;
24863 case WDI_HT_MIMO_PS_NA:
24864 return eSIR_HT_MIMO_PS_NA;
24865 case WDI_HT_MIMO_PS_NO_LIMIT:
24866 return eSIR_HT_MIMO_PS_NO_LIMIT;
24867 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024868
Jeff Johnson295189b2012-06-20 16:38:30 -070024869 return eSIR_HT_MIMO_PS_MAX;
24870}/*WDI_2_HAL_MIMO_PS*/
24871
24872/*Convert WDI ENC type into HAL ENC type*/
24873WPT_STATIC WPT_INLINE tAniEdType
24874WDI_2_HAL_ENC_TYPE
24875(
24876 WDI_EncryptType wdiEncType
24877)
24878{
Jeff Johnsone7245742012-09-05 17:12:55 -070024879 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024880 the chances of getting inlined*/
24881 switch ( wdiEncType )
24882 {
24883 case WDI_ENCR_NONE:
24884 return eSIR_ED_NONE;
24885
24886 case WDI_ENCR_WEP40:
24887 return eSIR_ED_WEP40;
24888
24889 case WDI_ENCR_WEP104:
24890 return eSIR_ED_WEP104;
24891
24892 case WDI_ENCR_TKIP:
24893 return eSIR_ED_TKIP;
24894
24895 case WDI_ENCR_CCMP:
24896 return eSIR_ED_CCMP;
24897
24898 case WDI_ENCR_AES_128_CMAC:
24899 return eSIR_ED_AES_128_CMAC;
24900#if defined(FEATURE_WLAN_WAPI)
24901 case WDI_ENCR_WPI:
24902 return eSIR_ED_WPI;
24903#endif
24904 default:
24905 return eSIR_ED_NOT_IMPLEMENTED;
24906 }
24907
24908}/*WDI_2_HAL_ENC_TYPE*/
24909
24910/*Convert WDI WEP type into HAL WEP type*/
24911WPT_STATIC WPT_INLINE tAniWepType
24912WDI_2_HAL_WEP_TYPE
24913(
24914 WDI_WepType wdiWEPType
24915)
24916{
Jeff Johnsone7245742012-09-05 17:12:55 -070024917 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024918 the chances of getting inlined*/
24919 switch ( wdiWEPType )
24920 {
24921 case WDI_WEP_STATIC:
24922 return eSIR_WEP_STATIC;
24923
24924 case WDI_WEP_DYNAMIC:
24925 return eSIR_WEP_DYNAMIC;
24926 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024927
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 return eSIR_WEP_MAX;
24929}/*WDI_2_HAL_WEP_TYPE*/
24930
24931WPT_STATIC WPT_INLINE tSirLinkState
24932WDI_2_HAL_LINK_STATE
24933(
24934 WDI_LinkStateType wdiLinkState
24935)
24936{
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 the chances of getting inlined*/
24939 switch ( wdiLinkState )
24940 {
24941 case WDI_LINK_IDLE_STATE:
24942 return eSIR_LINK_IDLE_STATE;
24943
24944 case WDI_LINK_PREASSOC_STATE:
24945 return eSIR_LINK_PREASSOC_STATE;
24946
24947 case WDI_LINK_POSTASSOC_STATE:
24948 return eSIR_LINK_POSTASSOC_STATE;
24949
24950 case WDI_LINK_AP_STATE:
24951 return eSIR_LINK_AP_STATE;
24952
24953 case WDI_LINK_IBSS_STATE:
24954 return eSIR_LINK_IBSS_STATE;
24955
24956 case WDI_LINK_BTAMP_PREASSOC_STATE:
24957 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24958
24959 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24960 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24961
24962 case WDI_LINK_BTAMP_AP_STATE:
24963 return eSIR_LINK_BTAMP_AP_STATE;
24964
24965 case WDI_LINK_BTAMP_STA_STATE:
24966 return eSIR_LINK_BTAMP_STA_STATE;
24967
24968 case WDI_LINK_LEARN_STATE:
24969 return eSIR_LINK_LEARN_STATE;
24970
24971 case WDI_LINK_SCAN_STATE:
24972 return eSIR_LINK_SCAN_STATE;
24973
24974 case WDI_LINK_FINISH_SCAN_STATE:
24975 return eSIR_LINK_FINISH_SCAN_STATE;
24976
24977 case WDI_LINK_INIT_CAL_STATE:
24978 return eSIR_LINK_INIT_CAL_STATE;
24979
24980 case WDI_LINK_FINISH_CAL_STATE:
24981 return eSIR_LINK_FINISH_CAL_STATE;
24982
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 case WDI_LINK_LISTEN_STATE:
24984 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024985
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024986 case WDI_LINK_SEND_ACTION_STATE:
24987 return eSIR_LINK_SEND_ACTION_STATE;
24988
Jeff Johnson295189b2012-06-20 16:38:30 -070024989 default:
24990 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024992}
24993
Jeff Johnsone7245742012-09-05 17:12:55 -070024994/*Translate a STA Context from WDI into HAL*/
24995WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024996void
24997WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024998(
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 tConfigStaParams* phalConfigSta,
25000 WDI_ConfigStaReqInfoType* pwdiConfigSta
25001)
25002{
25003 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025004#ifdef WLAN_FEATURE_11AC
25005 /* Get the Version 1 Handler */
25006 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25007 if (WDI_getFwWlanFeatCaps(DOT11AC))
25008 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025009 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 }
25011#endif
25012 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025014
Jeff Johnsone7245742012-09-05 17:12:55 -070025015 wpalMemoryCopy(phalConfigSta->bssId,
25016 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25017
25018 wpalMemoryCopy(phalConfigSta->staMac,
25019 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025020
25021 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25022 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25023 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25024 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25025 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25026 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25027 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25028 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25029 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25030 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25031 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25032 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25033 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25034 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25035 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25036 phalConfigSta->action = pwdiConfigSta->wdiAction;
25037 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25038 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25039 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25040 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25041 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25042 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25043 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025044
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25046
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 pwdiConfigSta->wdiSupportedRates.opRateMode;
25049 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25050 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025052 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25053 }
25054 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25058 }
25059 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25060 {
25061 phalConfigSta->supportedRates.aniLegacyRates[i] =
25062 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25066 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25067 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25070 }
25071 phalConfigSta->supportedRates.rxHighestDataRate =
25072 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25073
Jeff Johnsone7245742012-09-05 17:12:55 -070025074#ifdef WLAN_FEATURE_11AC
25075 if(phalConfigSta_V1 != NULL)
25076 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025077 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25078 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25079 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25080 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025081 }
25082#endif
25083
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025085
Jeff Johnsone7245742012-09-05 17:12:55 -070025086#ifdef WLAN_FEATURE_11AC
25087 if(phalConfigSta_V1 != NULL)
25088 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025089 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25090 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025091 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025092 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025093 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25094 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25095
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 }
25097#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025098}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025099
25100/*Translate a Rate set info from WDI into HAL*/
25101WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025102WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025103(
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 tSirMacRateSet* pHalRateSet,
25105 WDI_RateSet* pwdiRateSet
25106)
25107{
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25110
25111 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25112 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25113
25114 for ( i = 0; i < pHalRateSet->numRates; i++ )
25115 {
25116 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25117 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025118
Jeff Johnson295189b2012-06-20 16:38:30 -070025119}/*WDI_CopyWDIRateSetToHALRateSet*/
25120
25121
25122/*Translate an EDCA Parameter Record from WDI into HAL*/
25123WPT_STATIC WPT_INLINE void
25124WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025125(
Jeff Johnson295189b2012-06-20 16:38:30 -070025126 tSirMacEdcaParamRecord* phalEdcaParam,
25127 WDI_EdcaParamRecord* pWDIEdcaParam
25128)
25129{
Jeff Johnsone7245742012-09-05 17:12:55 -070025130 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 the chances of getting inlined*/
25132
25133 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25134 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25135 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25136 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25137
25138 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25139 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25140 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25141}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25142
25143
25144/*Copy a management frame header from WDI fmt into HAL fmt*/
25145WPT_STATIC WPT_INLINE void
25146WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25147(
25148 tSirMacMgmtHdr* pmacMgmtHdr,
25149 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25150)
25151{
25152 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25153 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25154 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25155 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25156 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25157 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25158 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25159 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25160 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25161 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25162 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25163
25164 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25165 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25166
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025169 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025171 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 pwdiMacMgmtHdr->bssId, 6);
25173
25174 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25175 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25176 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25177
25178}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25179
25180
25181/*Copy config bss parameters from WDI fmt into HAL fmt*/
25182WPT_STATIC WPT_INLINE void
25183WDI_CopyWDIConfigBSSToHALConfigBSS
25184(
25185 tConfigBssParams* phalConfigBSS,
25186 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25187)
25188{
25189
25190 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025191#ifdef WLAN_FEATURE_11AC
25192 /* Get the Version 1 Handler */
25193 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25194 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025195 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025196#endif
25197
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 wpalMemoryCopy( phalConfigBSS->bssId,
25199 pwdiConfigBSS->macBSSID,
25200 WDI_MAC_ADDR_LEN);
25201
25202#ifdef HAL_SELF_STA_PER_BSS
25203 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25204 pwdiConfigBSS->macSelfAddr,
25205 WDI_MAC_ADDR_LEN);
25206#endif
25207
25208 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25209
25210 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25211 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25212
Jeff Johnsone7245742012-09-05 17:12:55 -070025213 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025214 pwdiConfigBSS->ucShortSlotTimeSupported;
25215 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25216 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25217 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25218 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25219 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025220 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25222 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25223 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25224 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25225 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25226 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25227 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25228 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25229 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25230 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25231 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25232
Jeff Johnsone7245742012-09-05 17:12:55 -070025233 phalConfigBSS->htOperMode =
25234 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025235
25236 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25237 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25238 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25239 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25240
25241#ifdef WLAN_FEATURE_VOWIFI
25242 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25243#endif
25244
25245 /*! Used 32 as magic number because that is how the ssid is declared inside the
25246 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025247 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025248 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25249 pwdiConfigBSS->wdiSSID.ucLength : 32;
25250 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025251 pwdiConfigBSS->wdiSSID.sSSID,
25252 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025253
25254 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25255 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025256
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25258 &pwdiConfigBSS->wdiRateSet);
25259
25260 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25261
25262 if(phalConfigBSS->edcaParamsValid)
25263 {
25264 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25265 &pwdiConfigBSS->wdiBEEDCAParams);
25266 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25267 &pwdiConfigBSS->wdiBKEDCAParams);
25268 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25269 &pwdiConfigBSS->wdiVIEDCAParams);
25270 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25271 &pwdiConfigBSS->wdiVOEDCAParams);
25272 }
25273
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025275
25276 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25277
25278#ifdef WLAN_FEATURE_VOWIFI_11R
25279
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025282
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 if( phalConfigBSS->extSetStaKeyParamValid )
25284 {
25285 /*-----------------------------------------------------------------------
25286 Copy the STA Key parameters into the HAL message
25287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25290
Jeff Johnsone7245742012-09-05 17:12:55 -070025291 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25293
25294 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25295
25296 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25297
25298 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25299
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25301 keyIndex++)
25302 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25305 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25306 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25307 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25308 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25309 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25316 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 WDI_MAX_KEY_LENGTH);
25319 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 }
25321 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25322 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 sizeof(phalConfigBSS->extSetStaKeyParam) );
25325 }
25326
25327#endif /*WLAN_FEATURE_VOWIFI_11R*/
25328
Jeff Johnsone7245742012-09-05 17:12:55 -070025329#ifdef WLAN_FEATURE_11AC
25330 if(phalConfigBSS_V1 != NULL)
25331 {
25332 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25333 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25334 }
25335#endif
25336
Jeff Johnson295189b2012-06-20 16:38:30 -070025337}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25338
25339
Jeff Johnsone7245742012-09-05 17:12:55 -070025340/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025341 pointed to by user data */
25342WPT_STATIC WPT_INLINE void
25343WDI_ExtractRequestCBFromEvent
25344(
25345 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025346 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 void** ppUserData
25348)
25349{
25350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25351 switch ( pEvent->wdiRequest )
25352 {
25353 case WDI_START_REQ:
25354 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25355 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25356 break;
25357 case WDI_STOP_REQ:
25358 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25359 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25360 break;
25361 case WDI_INIT_SCAN_REQ:
25362 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25363 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25364 break;
25365 case WDI_START_SCAN_REQ:
25366 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25367 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25368 break;
25369 case WDI_END_SCAN_REQ:
25370 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25371 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25372 break;
25373 case WDI_FINISH_SCAN_REQ:
25374 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25375 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25376 break;
25377 case WDI_JOIN_REQ:
25378 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25379 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25380 break;
25381 case WDI_CONFIG_BSS_REQ:
25382 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25383 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25384 break;
25385 case WDI_DEL_BSS_REQ:
25386 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25387 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25388 break;
25389 case WDI_POST_ASSOC_REQ:
25390 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25391 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25392 break;
25393 case WDI_DEL_STA_REQ:
25394 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25395 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25396 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025397
25398 case WDI_ADD_STA_SELF_REQ:
25399 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25400 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25401 break;
25402
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 case WDI_DEL_STA_SELF_REQ:
25404 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25405 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25406 break;
25407
25408 case WDI_SET_BSS_KEY_REQ:
25409 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25410 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25411 break;
25412 case WDI_RMV_BSS_KEY_REQ:
25413 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25414 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25415 break;
25416 case WDI_SET_STA_KEY_REQ:
25417 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25418 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25419 break;
25420 case WDI_RMV_STA_KEY_REQ:
25421 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25422 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25423 break;
25424 case WDI_ADD_TS_REQ:
25425 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25426 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25427 break;
25428 case WDI_DEL_TS_REQ:
25429 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25430 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25431 break;
25432 case WDI_UPD_EDCA_PRMS_REQ:
25433 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25434 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25435 break;
25436 case WDI_ADD_BA_SESSION_REQ:
25437 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25438 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25439 break;
25440 case WDI_DEL_BA_REQ:
25441 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25442 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25443 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025444#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 case WDI_TSM_STATS_REQ:
25446 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25447 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25448 break;
25449#endif
25450 case WDI_CH_SWITCH_REQ:
25451 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25452 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25453 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025454 case WDI_CH_SWITCH_REQ_V1:
25455 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25456 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25457 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025458 case WDI_CONFIG_STA_REQ:
25459 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25460 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25461 break;
25462 case WDI_SET_LINK_ST_REQ:
25463 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25464 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25465 break;
25466 case WDI_GET_STATS_REQ:
25467 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25468 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25469 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025470#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025471 case WDI_GET_ROAM_RSSI_REQ:
25472 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25473 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25474 break;
25475#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 case WDI_UPDATE_CFG_REQ:
25477 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25478 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25479 break;
25480 case WDI_ADD_BA_REQ:
25481 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25482 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25483 break;
25484 case WDI_TRIGGER_BA_REQ:
25485 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25486 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25487 break;
25488 case WDI_UPD_BCON_PRMS_REQ:
25489 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25490 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25491 break;
25492 case WDI_SND_BCON_REQ:
25493 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25494 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25495 break;
25496 case WDI_ENTER_BMPS_REQ:
25497 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25498 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25499 break;
25500 case WDI_EXIT_BMPS_REQ:
25501 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25502 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25503 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025504 case WDI_ENTER_IMPS_REQ:
25505 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25506 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25507 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 case WDI_ENTER_UAPSD_REQ:
25509 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25510 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25511 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025512 case WDI_EXIT_UAPSD_REQ:
25513 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25514 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25515 break;
25516 case WDI_SET_UAPSD_PARAM_REQ:
25517 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25518 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25519 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 case WDI_UPDATE_UAPSD_PARAM_REQ:
25521 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25522 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25523 break;
25524 case WDI_CONFIGURE_RXP_FILTER_REQ:
25525 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25526 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25527 break;
25528 case WDI_SET_BEACON_FILTER_REQ:
25529 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25530 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25531 break;
25532 case WDI_REM_BEACON_FILTER_REQ:
25533 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25534 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025535 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 case WDI_SET_RSSI_THRESHOLDS_REQ:
25537 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25538 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25539 break;
25540 case WDI_HOST_OFFLOAD_REQ:
25541 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25542 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25543 break;
25544 case WDI_WOWL_ADD_BC_PTRN_REQ:
25545 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25546 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25547 break;
25548 case WDI_WOWL_DEL_BC_PTRN_REQ:
25549 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25550 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25551 break;
25552 case WDI_WOWL_ENTER_REQ:
25553 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25554 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25555 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025556 case WDI_WOWL_EXIT_REQ:
25557 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25558 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25559 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25561 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25562 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25563 break;
25564 case WDI_FLUSH_AC_REQ:
25565 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25566 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25567 break;
25568 case WDI_BTAMP_EVENT_REQ:
25569 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25570 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25571 break;
25572 case WDI_KEEP_ALIVE_REQ:
25573 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25574 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25575 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025576#if defined FEATURE_WLAN_SCAN_PNO
25577 case WDI_SET_PREF_NETWORK_REQ:
25578 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25579 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25580 break;
25581 case WDI_SET_RSSI_FILTER_REQ:
25582 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25583 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25584 break;
25585 case WDI_UPDATE_SCAN_PARAMS_REQ:
25586 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25587 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25588 break;
25589#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 case WDI_SET_TX_PER_TRACKING_REQ:
25591 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25592 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025593 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025594#if defined WLAN_FEATURE_PACKET_FILTERING
25595 case WDI_8023_MULTICAST_LIST_REQ:
25596 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25597 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25598 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025599 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25600 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25601 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25602 break;
25603 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25604 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25605 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25606 break;
25607 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25608 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25609 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25610 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025611#endif
25612 case WDI_SET_POWER_PARAMS_REQ:
25613 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25614 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25615 break;
25616#if defined WLAN_FEATURE_GTK_OFFLOAD
25617 case WDI_GTK_OFFLOAD_REQ:
25618 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25619 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25620 break;
25621 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25622 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25623 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25624 break;
25625#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025626
Jeff Johnson295189b2012-06-20 16:38:30 -070025627 default:
25628 *ppfnReqCB = NULL;
25629 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025630 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 }
25632}/*WDI_ExtractRequestCBFromEvent*/
25633
25634
25635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 frame xtl is enabled for a particular STA.
25638
25639 WDI_PostAssocReq must have been called.
25640
Jeff Johnsone7245742012-09-05 17:12:55 -070025641 @param uSTAIdx: STA index
25642
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 @see WDI_PostAssocReq
25644 @return Result of the function call
25645*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025646wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025647WDI_IsHwFrameTxTranslationCapable
25648(
25649 wpt_uint8 uSTAIdx
25650)
25651{
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 uma value*/
25654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 ------------------------------------------------------------------------*/
25657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25658 {
25659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25660 "WDI API call before module is initialized - Fail request");
25661
Jeff Johnsone7245742012-09-05 17:12:55 -070025662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 }
25664
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025665#ifdef WLAN_SOFTAP_VSTA_FEATURE
25666 if (IS_VSTA_IDX(uSTAIdx))
25667 {
25668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25669 "STA %d is a Virtual STA, "
25670 "HW frame translation disabled", uSTAIdx);
25671 return eWLAN_PAL_FALSE;
25672 }
25673#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025674
Jeff Johnson295189b2012-06-20 16:38:30 -070025675 return gWDICb.bFrameTransEnabled;
25676}/*WDI_IsHwFrameTxTranslationCapable*/
25677
Katya Nigam6201c3e2014-05-27 17:51:42 +053025678
25679/**
25680 @brief WDI_IsSelfSTA - check if staid is self sta index
25681
25682
25683 @param pWDICtx: pointer to the WLAN DAL context
25684 ucSTAIdx: station index
25685
25686 @return Result of the function call
25687*/
25688wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25689{
25690 wpt_uint8 ucSTAType;
25691
25692 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25693 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25694 {
25695 if( ucSTAType == WDI_STA_ENTRY_SELF )
25696 return eWLAN_PAL_TRUE;
25697 }
25698
25699 return eWLAN_PAL_FALSE;
25700}
25701
25702
25703
Jeff Johnson295189b2012-06-20 16:38:30 -070025704#ifdef FEATURE_WLAN_SCAN_PNO
25705/**
25706 @brief WDI_SetPreferredNetworkList
25707
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025710
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 wdiPNOScanCb: callback for passing back the response
25712 of the Set PNO operation received from the
25713 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025714
Jeff Johnson295189b2012-06-20 16:38:30 -070025715 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 callback
25717
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 @return Result of the function call
25719*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025721WDI_SetPreferredNetworkReq
25722(
25723 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25724 WDI_PNOScanCb wdiPNOScanCb,
25725 void* pUserData
25726)
25727{
25728 WDI_EventInfoType wdiEventData = {{0}};
25729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25730
25731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 ------------------------------------------------------------------------*/
25734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25735 {
25736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25737 "WDI API call before module is initialized - Fail request");
25738
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 }
25741
25742 /*------------------------------------------------------------------------
25743 Fill in Event data and post to the Main FSM
25744 ------------------------------------------------------------------------*/
25745 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025746 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 wdiEventData.pUserData = pUserData;
25750
25751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25752}
25753
25754
25755/**
25756 @brief WDI_SetRssiFilterReq
25757
Jeff Johnsone7245742012-09-05 17:12:55 -070025758 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025759 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025760
Jeff Johnson295189b2012-06-20 16:38:30 -070025761 wdiRssiFilterCb: callback for passing back the response
25762 of the Set RSSI Filter operation received from the
25763 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025764
Jeff Johnson295189b2012-06-20 16:38:30 -070025765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 callback
25767
Jeff Johnson295189b2012-06-20 16:38:30 -070025768 @return Result of the function call
25769*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025771WDI_SetRssiFilterReq
25772(
25773 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25774 WDI_RssiFilterCb wdiRssiFilterCb,
25775 void* pUserData
25776)
25777{
25778 WDI_EventInfoType wdiEventData = {{0}};
25779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25780
25781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 ------------------------------------------------------------------------*/
25784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25785 {
25786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25787 "WDI API call before module is initialized - Fail request");
25788
Jeff Johnsone7245742012-09-05 17:12:55 -070025789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 }
25791
25792 /*------------------------------------------------------------------------
25793 Fill in Event data and post to the Main FSM
25794 ------------------------------------------------------------------------*/
25795 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025796 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 wdiEventData.pUserData = pUserData;
25800
25801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25802}/*WDI_SetRssiFilterReq*/
25803
25804/**
25805 @brief WDI_UpdateScanParamsReq
25806
Jeff Johnsone7245742012-09-05 17:12:55 -070025807 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025809
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 wdiUpdateScanParamsCb: callback for passing back the response
25811 of the Set PNO operation received from the
25812 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025813
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 callback
25816
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 @return Result of the function call
25818*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025820WDI_UpdateScanParamsReq
25821(
25822 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25823 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25824 void* pUserData
25825)
25826{
25827 WDI_EventInfoType wdiEventData = {{0}};
25828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25829
25830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 ------------------------------------------------------------------------*/
25833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25834 {
25835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25836 "WDI API call before module is initialized - Fail request");
25837
Jeff Johnsone7245742012-09-05 17:12:55 -070025838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 }
25840
25841 /*------------------------------------------------------------------------
25842 Fill in Event data and post to the Main FSM
25843 ------------------------------------------------------------------------*/
25844 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025845 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 wdiEventData.pUserData = pUserData;
25849
25850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25851}
25852
25853/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025854 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025856
25857 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 pwdiPNOScanReqParams: pointer to the info received
25859 from upper layers
25860 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025861 and its size
25862
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 @return Result of the function call
25864*/
25865
25866WDI_Status
25867WDI_PackPreferredNetworkList
25868(
25869 WDI_ControlBlockType* pWDICtx,
25870 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25871 wpt_uint8** ppSendBuffer,
25872 wpt_uint16* pSize
25873)
25874{
Jeff Johnsone7245742012-09-05 17:12:55 -070025875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025876 wpt_uint16 usDataOffset = 0;
25877 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025878 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 /*-----------------------------------------------------------------------
25881 Get message buffer
25882 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025884 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025886 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 {
25888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025889 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 pwdiPNOScanReqParams);
25891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 }
25894
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025895 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25896
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 /*-------------------------------------------------------------------------
25898 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25899 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025900 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025902 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25904
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025908 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25910
25911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25914 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25915 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25916
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025917 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 {
25919 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025920 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25922
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025923 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025924 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025925 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025926
25927 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025928 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025929 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025930
25931 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025932 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025934
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025937 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025938 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25939 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25940 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25941 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025942
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025945 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025946
25947 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025948 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25950
25951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025953 pPrefNetwListParams->aNetworks[i].ssId.length,
25954 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 }
25956
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025957 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25960 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25961 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25962
25963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025965 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25967 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25968
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025969 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025971 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025973 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25975 }
25976
25977 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025978 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25980 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25981 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025984 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025986 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025987
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025988 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25990 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25991 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025993
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025996 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025997
25998 /*Set the output values*/
25999 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001
26002 return WDI_STATUS_SUCCESS;
26003}/*WDI_PackPreferredNetworkList*/
26004
26005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026006 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026007 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026008
26009 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 pwdiPNOScanReqParams: pointer to the info received
26011 from upper layers
26012 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 and its size
26014
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 @return Result of the function call
26016*/
26017
26018WDI_Status
26019WDI_PackPreferredNetworkListNew
26020(
26021 WDI_ControlBlockType* pWDICtx,
26022 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26023 wpt_uint8** ppSendBuffer,
26024 wpt_uint16* pSize
26025)
26026{
Jeff Johnsone7245742012-09-05 17:12:55 -070026027 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 wpt_uint16 usDataOffset = 0;
26029 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026030 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026032
26033 /*-----------------------------------------------------------------------
26034 Get message buffer
26035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026037 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026039 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 {
26041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026042 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 pwdiPNOScanReqParams);
26044 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
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026048 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26049
Jeff Johnson295189b2012-06-20 16:38:30 -070026050 /*-------------------------------------------------------------------------
26051 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26052 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026053 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026055 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26057
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026058 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026059 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26063
26064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26067 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26068 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26069
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026070 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 {
26072 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026073 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26075
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026076 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026078 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026079
26080 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026081 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026083
26084 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026085 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026086 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026087
26088 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026089 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026090 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026091
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026094 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026095 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26096
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026097 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026098 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026099 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026100
26101 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026102 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026103 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26104
26105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026106 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026107 pPrefNetwListParams->aNetworks[i].ssId.length,
26108 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 }
26110
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026111 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026112 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26114 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26115 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26116
26117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026119 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26121 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26122
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026123 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026125 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026127 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26129 }
26130
26131 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026132 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26134 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26135 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026137
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026138 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026139 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026140 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026141
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026142 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26144 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26145 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026146 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026147
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026148 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026150 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026151
Jeff Johnson295189b2012-06-20 16:38:30 -070026152
26153 /*Set the output values*/
26154 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026156
26157 return WDI_STATUS_SUCCESS;
26158}/*WDI_PackPreferredNetworkListNew*/
26159
26160/**
26161 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026162
26163 @param pWDICtx: pointer to the WLAN DAL context
26164 pEventData: pointer to the event information structure
26165
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 @return Result of the function call
26167*/
26168WDI_Status
26169WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026170(
Jeff Johnson295189b2012-06-20 16:38:30 -070026171 WDI_ControlBlockType* pWDICtx,
26172 WDI_EventInfoType* pEventData
26173)
26174{
26175 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26176 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026180
26181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 -------------------------------------------------------------------------*/
26184 if (( NULL == pEventData ) ||
26185 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26186 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26187 {
26188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026192 }
26193
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026194 /*----------------------------------------------------------------------
26195 Avoid Enable PNO during any active session or an ongoing session
26196 ----------------------------------------------------------------------*/
26197 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26198 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26199 {
26200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26201 "%s:(Active/Ongoing Session) - Fail request", __func__);
26202
26203 return WDI_STATUS_E_FAILURE;
26204 }
26205
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 /*-------------------------------------------------------------------------
26207 Pack the PNO request structure based on version
26208 -------------------------------------------------------------------------*/
26209 if ( pWDICtx->wdiPNOVersion > 0 )
26210 {
26211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026212 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026213 pWDICtx->wdiPNOVersion);
26214
26215 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26216 &pSendBuffer, &usSendSize);
26217 }
26218 else
26219 {
26220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026221 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 pWDICtx->wdiPNOVersion);
26223
26224 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26225 &pSendBuffer, &usSendSize);
26226 }
26227
26228 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26229 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26230 {
26231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026232 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026234 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026235 }
26236
26237 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026238 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
26240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26244 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026245}
26246
26247/**
26248 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026249
26250 @param pWDICtx: pointer to the WLAN DAL context
26251 pEventData: pointer to the event information structure
26252
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 @see
26254 @return Result of the function call
26255*/
26256WDI_Status
26257WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026258(
Jeff Johnson295189b2012-06-20 16:38:30 -070026259 WDI_ControlBlockType* pWDICtx,
26260 WDI_EventInfoType* pEventData
26261)
26262{
26263 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26264 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 wpt_uint16 usDataOffset = 0;
26267 wpt_uint16 usSendSize = 0;
26268 wpt_uint8 ucRssiThreshold;
26269
26270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 -------------------------------------------------------------------------*/
26273 if (( NULL == pEventData ) ||
26274 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26275 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26276 {
26277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026281 }
26282
26283 /*-----------------------------------------------------------------------
26284 Get message buffer
26285 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026287 sizeof(ucRssiThreshold),
26288 &pSendBuffer, &usDataOffset, &usSendSize))||
26289 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26290 {
26291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026292 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 }
26297
26298 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26299
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 wpalMemoryCopy( pSendBuffer+usDataOffset,
26301 &ucRssiThreshold,
26302 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026303
26304 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026305 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026306
26307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26311 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026312}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026313#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26314/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026315 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026316
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026317 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026318 by the Device Interface
26319
26320 wdiRoamOffloadScancb: callback for passing back the response
26321 of the Roam Candidate Lookup Req operation received from the
26322 device
26323
26324 pUserData: user data will be passed back with the
26325 callback
26326 @return Result of the function call
26327*/
26328WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026329WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026330(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026331 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026332 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26333 void* pUserData
26334)
26335{
26336 WDI_EventInfoType wdiEventData = {{0}};
26337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26338
26339 /*------------------------------------------------------------------------
26340 Sanity Check
26341 ------------------------------------------------------------------------*/
26342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26343 {
26344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26345 "WDI API call before module is initialized - Fail request");
26346
26347 return WDI_STATUS_E_NOT_ALLOWED;
26348 }
26349
26350 /*------------------------------------------------------------------------
26351 Fill in Event data and post to the Main FSM
26352 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026353 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26354 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26355 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026356 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26357 wdiEventData.pUserData = pUserData;
26358
26359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26360}
26361
26362void
26363WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26364{
26365 switch (wdiEdType)
26366 {
26367 case WDI_ED_NONE:
26368 *EdType = eED_NONE;
26369 break;
26370 case WDI_ED_WEP40:
26371 case WDI_ED_WEP104:
26372 *EdType = eED_WEP;
26373 break;
26374 case WDI_ED_TKIP:
26375 *EdType = eED_TKIP;
26376 break;
26377 case WDI_ED_CCMP:
26378#ifdef WLAN_FEATURE_11W
26379 case WDI_ED_AES_128_CMAC:
26380#endif
26381 *EdType = eED_CCMP;
26382 break;
26383#ifdef FEATURE_WLAN_WAPI
26384 case WDI_ED_WPI:
26385 *EdType = eED_WPI;
26386 break;
26387#endif
26388 case WDI_ED_ANY:
26389 *EdType = eED_ANY;
26390 break;
26391
26392 default:
26393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26394 "%s: Unknown Encryption Type", __func__);
26395 break;
26396 }
26397}
26398
26399/**
26400 @brief Helper function to pack Start Roam Candidate Lookup
26401 Request parameters
26402
26403 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026404 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026405 from upper layers
26406 ppSendBuffer, pSize - out pointers of the packed buffer
26407 and its size
26408
26409 @return Result of the function call
26410*/
26411
26412WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026413WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026414(
26415 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026416 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026417 wpt_uint8** ppSendBuffer,
26418 wpt_uint16* pSize
26419)
26420{
26421 wpt_uint8* pSendBuffer = NULL;
26422 wpt_uint16 usDataOffset = 0;
26423 wpt_uint16 usSendSize = 0;
26424 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26425 wpt_uint8 i;
26426 /*-----------------------------------------------------------------------
26427 Get message buffer
26428 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026430 sizeof(tRoamCandidateListParams),
26431 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026432 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026433 {
26434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026435 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026436 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026437 WDI_ASSERT(0);
26438 return WDI_STATUS_E_FAILURE;
26439 }
26440 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026441 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026442 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026443 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026444 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026445 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026446 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026447 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026448 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026449 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026450 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026451
26452 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026453 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026454 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026455 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026456 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26457 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026458 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26459 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26460 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26461 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26462 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026463 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026464 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026465 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026466 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26467 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26468 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26469 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26470 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26471 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26472 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026473 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026474 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026475 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26476 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26477 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026478
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26480 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26481 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26482 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26483 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26484 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026485 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026486 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26487 pRoamCandidateListParams->RoamScanOffloadEnabled,
26488 pRoamCandidateListParams->Command,
26489 pRoamCandidateListParams->StartScanReason,
26490 pRoamCandidateListParams->NeighborScanTimerPeriod,
26491 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26492 pRoamCandidateListParams->NeighborScanChannelMinTime,
26493 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26494 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26495 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26496 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26497 pRoamCandidateListParams->ConnectedNetwork.authentication,
26498 pRoamCandidateListParams->ConnectedNetwork.encryption,
26499 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26500 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26501 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026502 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026503 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026504 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026505 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026506 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26507 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026508 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026509 pRoamCandidateListParams->us24GProbeSize);
26510 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026513 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026514 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26515 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026516 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026517 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026518 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26519 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26520 pRoamCandidateListParams->nProbes =
26521 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26522 pRoamCandidateListParams->HomeAwayTime =
26523 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026525 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26526 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026528 }
26529
26530
26531 /*Set the output values*/
26532 *ppSendBuffer = pSendBuffer;
26533 *pSize = usSendSize;
26534 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026535}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026536
26537/**
26538 @brief Process Start Roam Candidate Lookup Request function
26539
26540 @param pWDICtx: pointer to the WLAN DAL context
26541 pEventData: pointer to the event information structure
26542
26543 @return Result of the function call
26544*/
26545WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026546WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026547(
26548 WDI_ControlBlockType* pWDICtx,
26549 WDI_EventInfoType* pEventData
26550)
26551{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026552 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026553 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26554 wpt_uint8* pSendBuffer = NULL;
26555 wpt_uint16 usSendSize = 0;
26556 WDI_Status wdiStatus;
26557 /*-------------------------------------------------------------------------
26558 Sanity check
26559 -------------------------------------------------------------------------*/
26560 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026561 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026562 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26563 {
26564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26565 "%s: Invalid parameters", __func__);
26566 WDI_ASSERT(0);
26567 return WDI_STATUS_E_FAILURE;
26568 }
26569
26570 /*-------------------------------------------------------------------------
26571 Pack the Start Roam Candidate Lookup request structure based on version
26572 -------------------------------------------------------------------------*/
26573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26574 "%s: Packing Roam Candidate Lookup request ", __func__);
26575
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026576 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026577 &pSendBuffer, &usSendSize);
26578
26579 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26580 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26581 {
26582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26583 "%s: failed to pack request parameters", __func__);
26584 WDI_ASSERT(0);
26585 return wdiStatus;
26586 }
26587
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026588 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26589 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026590
26591 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026592 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026593 -------------------------------------------------------------------------*/
26594 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026595 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026596}
26597
26598/**
26599 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26600 response is being received over the bus from HAL)
26601
26602 @param pWDICtx: pointer to the WLAN DAL context
26603 pEventData: pointer to the event information structure
26604
26605 @see
26606 @return Result of the function call
26607*/
26608WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026609WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026610(
26611 WDI_ControlBlockType* pWDICtx,
26612 WDI_EventInfoType* pEventData
26613)
26614{
26615 WDI_Status wdiStatus;
26616 eHalStatus halStatus;
26617 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26618
26619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26620
26621 /*-------------------------------------------------------------------------
26622 Sanity check
26623 -------------------------------------------------------------------------*/
26624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26625 ( NULL == pEventData->pEventData ))
26626 {
26627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26628 "%s: Invalid parameters", __func__);
26629 WDI_ASSERT(0);
26630 return WDI_STATUS_E_FAILURE;
26631 }
26632
26633 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26634
26635 /*-------------------------------------------------------------------------
26636 Extract response and send it to UMAC
26637 -------------------------------------------------------------------------*/
26638 halStatus = *((eHalStatus*)pEventData->pEventData);
26639 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26640
26641 /*Notify UMAC*/
26642 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26643
26644 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026645}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026646#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026647
26648/**
26649 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026650
26651 @param pWDICtx: pointer to the WLAN DAL context
26652 pEventData: pointer to the event information structure
26653
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 @see
26655 @return Result of the function call
26656*/
26657WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026658WDI_PackUpdateScanParamsReq
26659(
26660 WDI_ControlBlockType* pWDICtx,
26661 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26662 wpt_uint8** ppSendBuffer,
26663 wpt_uint16* pSize
26664)
26665{
26666 wpt_uint8* pSendBuffer = NULL;
26667 wpt_uint16 usDataOffset = 0;
26668 wpt_uint16 usSendSize = 0;
26669 tUpdateScanParams updateScanParams = {0};
26670
26671
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026673 "Begin WDI Update Scan Parameters Old Style Params");
26674 /*-----------------------------------------------------------------------
26675 Get message buffer
26676 -----------------------------------------------------------------------*/
26677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26678 sizeof(updateScanParams),
26679 &pSendBuffer, &usDataOffset, &usSendSize))||
26680 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26681 {
26682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026683 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026684 pwdiUpdateScanParams);
26685 WDI_ASSERT(0);
26686 return WDI_STATUS_E_FAILURE;
26687 }
26688
26689 //
26690 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26691 //
26692
26693 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26694 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26695
26696 updateScanParams.ucChannelCount =
26697 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26698 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26699 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26700 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26701
26702 wpalMemoryCopy( updateScanParams.aChannels,
26703 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26704 updateScanParams.ucChannelCount);
26705
26706
26707 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26708 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26709 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26710 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26711 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26712
26713 wpalMemoryCopy( pSendBuffer+usDataOffset,
26714 &updateScanParams,
26715 sizeof(updateScanParams));
26716
26717 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26718 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26719
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026721 "End Update Scan Parameters Old Style");
26722
26723 /*Set the output values*/
26724 *ppSendBuffer = pSendBuffer;
26725 *pSize = usSendSize;
26726
26727 return WDI_STATUS_SUCCESS;
26728}
26729
26730/**
26731 @brief Process Update Scan Params function
26732
26733 @param pWDICtx: pointer to the WLAN DAL context
26734 pEventData: pointer to the event information structure
26735
26736 @see
26737 @return Result of the function call
26738*/
26739WDI_Status
26740WDI_PackUpdateScanParamsReqEx
26741(
26742 WDI_ControlBlockType* pWDICtx,
26743 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26744 wpt_uint8** ppSendBuffer,
26745 wpt_uint16* pSize
26746)
26747{
26748 wpt_uint8* pSendBuffer = NULL;
26749 wpt_uint16 usDataOffset = 0;
26750 wpt_uint16 usSendSize = 0;
26751 tUpdateScanParamsEx updateScanParams = {0};
26752
26753
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026754 /*-----------------------------------------------------------------------
26755 Get message buffer
26756 -----------------------------------------------------------------------*/
26757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26758 sizeof(updateScanParams),
26759 &pSendBuffer, &usDataOffset, &usSendSize))||
26760 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26761 {
26762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026763 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026764 pwdiUpdateScanParams);
26765 WDI_ASSERT(0);
26766 return WDI_STATUS_E_FAILURE;
26767 }
26768
26769 //
26770 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26771 //
26772
26773 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26774 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26775
26776 updateScanParams.ucChannelCount =
26777 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26778 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26779 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26780 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26781
26782 wpalMemoryCopy( updateScanParams.aChannels,
26783 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26784 updateScanParams.ucChannelCount);
26785
26786
26787 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26788 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26789 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26790 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26791 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26792
26793 wpalMemoryCopy( pSendBuffer+usDataOffset,
26794 &updateScanParams,
26795 sizeof(updateScanParams));
26796
26797 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26798 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26799
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026800 /*Set the output values*/
26801 *ppSendBuffer = pSendBuffer;
26802 *pSize = usSendSize;
26803
26804 return WDI_STATUS_SUCCESS;
26805}
26806
26807/**
26808 @brief Process Update Scan Params function
26809
26810 @param pWDICtx: pointer to the WLAN DAL context
26811 pEventData: pointer to the event information structure
26812
26813 @see
26814 @return Result of the function call
26815*/
26816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026817WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026818(
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 WDI_ControlBlockType* pWDICtx,
26820 WDI_EventInfoType* pEventData
26821)
26822{
26823 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26824 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026825 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026826 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026827 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026828
26829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026831 -------------------------------------------------------------------------*/
26832 if (( NULL == pEventData ) ||
26833 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26834 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26835 {
26836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026840 }
26841
26842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26843 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026844
26845 //
26846 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26847 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026848 if ( pWDICtx->wlanVersion.revision < 1 )
26849 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026850 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026851 &pSendBuffer, &usSendSize);
26852 }
26853 else
26854 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026855 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26856 &pSendBuffer, &usSendSize);
26857 }
26858
26859 if(WDI_STATUS_SUCCESS != wdiStatus)
26860 {
26861 //memory allocation failed
26862 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026863 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026864
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026869 wdiUpdateScanParamsCb, pEventData->pUserData,
26870 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026871}
26872
26873/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026874 @brief Process Update Channel Params function
26875
26876 @param pWDICtx: pointer to the WLAN DAL context
26877 pEventData: pointer to the event information structure
26878
26879 @see
26880 @return Result of the function call
26881*/
26882WDI_Status
26883WDI_ProcessUpdateChannelParamsReq
26884(
26885 WDI_ControlBlockType* pWDICtx,
26886 WDI_EventInfoType* pEventData
26887)
26888{
26889 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26890 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26891 wpt_uint8* pSendBuffer = NULL;
26892 wpt_uint16 usDataOffset = 0;
26893 wpt_uint16 usSendSize = 0;
26894 tUpdateChannelReqType *updateChannelParams;
26895 wpt_uint32 usUpdateChanParamSize;
26896 wpt_uint8 num_channels = 0;
26897
26898 /*-------------------------------------------------------------------------
26899 Sanity check
26900 -------------------------------------------------------------------------*/
26901 if (( NULL == pEventData ) ||
26902 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26903 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26904 {
26905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26906 "%s: Invalid parameters", __func__);
26907 WDI_ASSERT(0);
26908 return WDI_STATUS_E_FAILURE;
26909 }
26910 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026911 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026912
26913 /*-----------------------------------------------------------------------
26914 Get message buffer
26915 -----------------------------------------------------------------------*/
26916 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26917 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26918 &pSendBuffer, &usDataOffset, &usSendSize))||
26919 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26920 {
26921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26922 "Unable to get send buffer in Update Channel Params req %p",
26923 pwdiUpdateChanListParams);
26924 WDI_ASSERT(0);
26925 return WDI_STATUS_E_FAILURE;
26926 }
26927 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26928
26929 updateChannelParams->numChan = num_channels;
26930 wpalMemoryCopy(&updateChannelParams->chanParam,
26931 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26932 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26933
26934 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26935 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26936
26937 /*-------------------------------------------------------------------------
26938 Send Update channel request to fw
26939 -------------------------------------------------------------------------*/
26940 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26941 wdiUpdateChanParamsCb, pEventData->pUserData,
26942 WDI_UPDATE_CHAN_RESP);
26943}
26944
26945/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026946 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026947
26948 @param pWDICtx: pointer to the WLAN DAL context
26949 pEventData: pointer to the event information structure
26950
Jeff Johnson295189b2012-06-20 16:38:30 -070026951 @see
26952 @return Result of the function call
26953*/
26954WDI_Status
26955WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026956(
Jeff Johnson295189b2012-06-20 16:38:30 -070026957 WDI_ControlBlockType* pWDICtx,
26958 WDI_EventInfoType* pEventData
26959)
26960{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026961 WDI_LowLevelIndType wdiInd;
26962 tpPrefNetwFoundParams pNetwFoundParams;
26963 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026964
26965
26966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026968 -------------------------------------------------------------------------*/
26969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26970 ( NULL == pEventData->pEventData ))
26971 {
26972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026974 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 }
26977
26978 /*-------------------------------------------------------------------------
26979 Extract indication and send it to UMAC
26980 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026981 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26982
26983 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26984 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26985 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26986
26987 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26988 {
26989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26990 "%s: fail to allocate memory", __func__);
26991 return WDI_STATUS_MEM_FAILURE;
26992 }
26993
26994 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26995 (pNetwFoundParams->ssId.length < 32 )?
26996 pNetwFoundParams->ssId.length : 32;
26997 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26998 pNetwFoundParams->ssId.ssId,
26999 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27000 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27001 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27002 pNetwFoundParams->frameLength;
27003 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27004 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27005 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027006
27007 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027008 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027009
Jeff Johnson295189b2012-06-20 16:38:30 -070027010 // DEBUG
27011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027012 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027014 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027016 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027017 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27018
ltimariub77f24b2013-01-24 18:54:33 -080027019 if ( pWDICtx->wdiLowLevelIndCB )
27020 {
27021 /*Notify UMAC*/
27022 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27023 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027024
27025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027026}
27027
27028/**
27029 @brief Process PNO Rsp function (called when a
27030 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027031
27032 @param pWDICtx: pointer to the WLAN DAL context
27033 pEventData: pointer to the event information structure
27034
Jeff Johnson295189b2012-06-20 16:38:30 -070027035 @see
27036 @return Result of the function call
27037*/
27038WDI_Status
27039WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027040(
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 WDI_ControlBlockType* pWDICtx,
27042 WDI_EventInfoType* pEventData
27043)
27044{
27045 WDI_Status wdiStatus;
27046 eHalStatus halStatus;
27047 WDI_PNOScanCb wdiPNOScanCb = NULL;
27048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27049
27050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027052 -------------------------------------------------------------------------*/
27053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27054 ( NULL == pEventData->pEventData ))
27055 {
27056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027060 }
27061
27062
Jeff Johnsone7245742012-09-05 17:12:55 -070027063 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027064
27065 /*-------------------------------------------------------------------------
27066 Extract response and send it to UMAC
27067 -------------------------------------------------------------------------*/
27068 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027069 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027070
27071 /*Notify UMAC*/
27072 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27073
Jeff Johnsone7245742012-09-05 17:12:55 -070027074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027075}/*WDI_ProcessSetPreferredNetworkRsp*/
27076
27077/**
27078 @brief Process RSSI Filter Rsp function (called when a
27079 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027080
27081 @param pWDICtx: pointer to the WLAN DAL context
27082 pEventData: pointer to the event information structure
27083
Jeff Johnson295189b2012-06-20 16:38:30 -070027084 @see
27085 @return Result of the function call
27086*/
27087WDI_Status
27088WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027089(
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 WDI_ControlBlockType* pWDICtx,
27091 WDI_EventInfoType* pEventData
27092)
27093{
27094 WDI_Status wdiStatus;
27095 eHalStatus halStatus;
27096 WDI_RssiFilterCb wdiRssiFilterCb;
27097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27098
27099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027101 -------------------------------------------------------------------------*/
27102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27103 ( NULL == pEventData->pEventData ))
27104 {
27105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 }
27110
Jeff Johnsone7245742012-09-05 17:12:55 -070027111 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027112
27113 /*-------------------------------------------------------------------------
27114 Extract response and send it to UMAC
27115 -------------------------------------------------------------------------*/
27116 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027117 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027118
27119 /*Notify UMAC*/
27120 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27121
Jeff Johnsone7245742012-09-05 17:12:55 -070027122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027123}/*WDI_ProcessSetRssiFilterRsp*/
27124
27125/**
27126 @brief Process Update Scan Params Rsp function (called when a
27127 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027128
27129 @param pWDICtx: pointer to the WLAN DAL context
27130 pEventData: pointer to the event information structure
27131
Jeff Johnson295189b2012-06-20 16:38:30 -070027132 @see
27133 @return Result of the function call
27134*/
27135WDI_Status
27136WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027137(
Jeff Johnson295189b2012-06-20 16:38:30 -070027138 WDI_ControlBlockType* pWDICtx,
27139 WDI_EventInfoType* pEventData
27140)
27141{
27142 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027143 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27147
27148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 -------------------------------------------------------------------------*/
27151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27152 ( NULL == pEventData->pEventData ))
27153 {
27154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027158 }
27159
27160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027161 "%s: Process UPD scan params ptr : %p",
27162 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027163
Jeff Johnsone7245742012-09-05 17:12:55 -070027164 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027165
27166 /*-------------------------------------------------------------------------
27167 Extract response and send it to UMAC
27168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027169 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27170 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 sizeof(halUpdScanParams.status));
27172
27173 uStatus = halUpdScanParams.status;
27174
27175 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027176 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
27178 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027180
Jeff Johnsone7245742012-09-05 17:12:55 -070027181 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027182
27183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027185 halUpdScanParams.status);
27186
27187 /*Notify UMAC*/
27188 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27189
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027191}
27192#endif // FEATURE_WLAN_SCAN_PNO
27193
27194#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027196WDI_8023MulticastListReq
27197(
27198 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27199 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27200 void* pUserData
27201)
27202{
27203 WDI_EventInfoType wdiEventData;
27204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27205
27206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027207 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027208
27209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027211 ------------------------------------------------------------------------*/
27212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27213 {
27214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27215 "WDI API call before module is initialized - Fail request");
27216
Jeff Johnsone7245742012-09-05 17:12:55 -070027217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027218 }
27219
27220 /*------------------------------------------------------------------------
27221 Fill in Event data and post to the Main FSM
27222 ------------------------------------------------------------------------*/
27223 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027226 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027227 wdiEventData.pUserData = pUserData;
27228
27229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27230}
27231
Jeff Johnsone7245742012-09-05 17:12:55 -070027232WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027233WDI_ReceiveFilterSetFilterReq
27234(
27235 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27236 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27237 void* pUserData
27238)
27239{
27240 WDI_EventInfoType wdiEventData;
27241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27242
27243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027244 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027245
27246 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027247 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027248 ------------------------------------------------------------------------*/
27249 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27250 {
27251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27252 "WDI API call before module is initialized - Fail request");
27253
Jeff Johnsone7245742012-09-05 17:12:55 -070027254 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027255 }
27256
27257 /*------------------------------------------------------------------------
27258 Fill in Event data and post to the Main FSM
27259 ------------------------------------------------------------------------*/
27260 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027261 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27262 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027263 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27264 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027265 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027266 wdiEventData.pUserData = pUserData;
27267
27268
27269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27270}
27271
Jeff Johnsone7245742012-09-05 17:12:55 -070027272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027273WDI_FilterMatchCountReq
27274(
27275 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27276 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27277 void* pUserData
27278)
27279{
27280 WDI_EventInfoType wdiEventData;
27281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27282
27283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027284 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027285
27286 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027287 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 ------------------------------------------------------------------------*/
27289 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27290 {
27291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27292 "WDI API call before module is initialized - Fail request");
27293
Jeff Johnsone7245742012-09-05 17:12:55 -070027294 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027295 }
27296
27297 /*------------------------------------------------------------------------
27298 Fill in Event data and post to the Main FSM
27299 ------------------------------------------------------------------------*/
27300 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027301 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027302 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027303 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027304 wdiEventData.pUserData = pUserData;
27305
27306
27307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27308}
27309
Jeff Johnsone7245742012-09-05 17:12:55 -070027310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027311WDI_ReceiveFilterClearFilterReq
27312(
27313 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27314 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27315 void* pUserData
27316)
27317{
27318 WDI_EventInfoType wdiEventData;
27319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27320
27321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027322 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027323
27324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027326 ------------------------------------------------------------------------*/
27327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27328 {
27329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27330 "WDI API call before module is initialized - Fail request");
27331
Jeff Johnsone7245742012-09-05 17:12:55 -070027332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 }
27334
27335 /*------------------------------------------------------------------------
27336 Fill in Event data and post to the Main FSM
27337 ------------------------------------------------------------------------*/
27338 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027339 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027341 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 wdiEventData.pUserData = pUserData;
27343
27344
27345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27346}
27347
27348/**
27349 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027350
27351 @param pWDICtx: pointer to the WLAN DAL context
27352 pEventData: pointer to the event information structure
27353
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 @see
27355 @return Result of the function call
27356*/
27357WDI_Status
27358WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027359(
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 WDI_ControlBlockType* pWDICtx,
27361 WDI_EventInfoType* pEventData
27362)
27363{
27364 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27365 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027367 wpt_uint16 usDataOffset = 0;
27368 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027369 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027371 wpt_uint8 ucCurrentBSSSesIdx = 0;
27372 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373
27374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027375 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027376
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027377 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27378 if( NULL == pRcvFltMcAddrListType )
27379 {
27380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27381 "Failed to alloc in WDI_Process8023MulticastListReq");
27382 return WDI_STATUS_E_FAILURE;
27383 }
27384
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027387 -------------------------------------------------------------------------*/
27388 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027389 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027391 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027392 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27393 {
27394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027395 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027396 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027398 return WDI_STATUS_E_FAILURE;
27399 }
27400
27401 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27402 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27403 &pBSSSes);
27404 if ( NULL == pBSSSes )
27405 {
27406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027407 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027408 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 }
27411
27412 /*-----------------------------------------------------------------------
27413 Get message buffer
27414 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027415 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27416 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027417 sizeof(tHalRcvFltMcAddrListType),
27418 &pSendBuffer, &usDataOffset, &usSendSize))||
27419 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27420 {
27421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27422 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027423 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 pEventData, pwdiFltPktSetMcListReqParamsType,
27425 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027426 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027429 }
27430
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027431 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027432 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027433 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027435 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27437 sizeof(tSirMacAddr));
27438 }
27439
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027440 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027441 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027442 pRcvFltMcAddrListType,
27443 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027444
27445 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027446 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027447
27448
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027449 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027451 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027453 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027454 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027455 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027456}
27457
27458/**
27459 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027460
27461 @param pWDICtx: pointer to the WLAN DAL context
27462 pEventData: pointer to the event information structure
27463
Jeff Johnson295189b2012-06-20 16:38:30 -070027464 @see
27465 @return Result of the function call
27466*/
27467WDI_Status
27468WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027469(
Jeff Johnson295189b2012-06-20 16:38:30 -070027470 WDI_ControlBlockType* pWDICtx,
27471 WDI_EventInfoType* pEventData
27472)
27473{
27474 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27475 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027476 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027477 wpt_uint16 usDataOffset = 0;
27478 wpt_uint16 usSendSize = 0;
27479 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027480 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027482 wpt_uint8 ucCurrentBSSSesIdx = 0;
27483 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027484 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27485 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027486
27487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027488 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027489
27490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027492 -------------------------------------------------------------------------*/
27493 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027496 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027497 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27498 {
27499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 return WDI_STATUS_E_FAILURE;
27503 }
27504
27505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27506 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27507 &pBSSSes);
27508 if ( NULL == pBSSSes )
27509 {
27510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027511 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 }
27514
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027515 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27516 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027517
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027518 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27519 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27520 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27521
27522 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27523 usSessRcvPktFilterCfgSize);
27524
27525 if(NULL == pSessRcvPktFilterCfg)
27526 {
27527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27528 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027529 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027530 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027531 WDI_ASSERT(0);
27532 return WDI_STATUS_E_FAILURE;
27533 }
27534
27535 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27536
27537 /*-----------------------------------------------------------------------
27538 Get message buffer
27539 -----------------------------------------------------------------------*/
27540
27541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27542 usSessRcvPktFilterCfgSize,
27543 &pSendBuffer, &usDataOffset, &usSendSize))||
27544 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27545 {
27546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27547 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027548 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027549 pEventData, pwdiSetRcvPktFilterReqInfo,
27550 wdiReceiveFilterSetFilterCb);
27551 WDI_ASSERT(0);
27552 wpalMemoryFree(pSessRcvPktFilterCfg);
27553 return WDI_STATUS_E_FAILURE;
27554 }
27555
27556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027557 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027558 usSendSize,pSessRcvPktFilterCfg);
27559
27560 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27561 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27562 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27563 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27564
27565 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27566
27567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27568 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27569 pSessRcvPktFilterCfg->filterType);
27570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27571 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27572 pSessRcvPktFilterCfg->coleasceTime);
27573
27574 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27575 {
27576 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27577 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27578 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27579 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27580 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27581 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27582 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27583 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27584
27585 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27586 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27587 8);
27588 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27589 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27590 8);
27591
27592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027593 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027594 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27595 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27596
27597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027598 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027599 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27600 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27601
27602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027603 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027604 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27605 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27606 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27607 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27608 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27609 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27610
27611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027612 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027613 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27614 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27615 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27616 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27617 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27618 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27619 }
27620
27621 wpalMemoryCopy( pSendBuffer+usDataOffset,
27622 pSessRcvPktFilterCfg,
27623 usSessRcvPktFilterCfgSize);
27624
27625
27626 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27627 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27628
27629 wpalMemoryFree(pSessRcvPktFilterCfg);
27630
27631 }
27632 /*If SLM_SESSIONIZATION is not supported then do this */
27633 else
27634 {
27635 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27636 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27637 * sizeof(tHalRcvPktFilterParams));
27638
27639 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027640 usRcvPktFilterCfgSize);
27641
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027642 if(NULL == pRcvPktFilterCfg)
27643 {
27644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27645 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027646 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027647 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 WDI_ASSERT(0);
27649 return WDI_STATUS_E_FAILURE;
27650 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027651
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027652 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027654 /*-----------------------------------------------------------------------
27655 Get message buffer
27656 -----------------------------------------------------------------------*/
27657 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027658 usRcvPktFilterCfgSize,
27659 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027660 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27661 {
27662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027663 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027664 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027665 pEventData, pwdiSetRcvPktFilterReqInfo,
27666 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027667 WDI_ASSERT(0);
27668 wpalMemoryFree(pRcvPktFilterCfg);
27669 return WDI_STATUS_E_FAILURE;
27670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027671
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027673 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027674 usSendSize,usRcvPktFilterCfgSize);
27675
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027676 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27677 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27678 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27679 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027680
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027682 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027685 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027686 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027687
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027688 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27689 {
27690 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27691 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27692 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27693 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27694 pRcvPktFilterCfg->paramsData[i].dataOffset =
27695 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27696 pRcvPktFilterCfg->paramsData[i].dataLength =
27697 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027698
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027699 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027700 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27701 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027702 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027703 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27704 8);
27705
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027707 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027708 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27710
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027712 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027713 pRcvPktFilterCfg->paramsData[i].dataOffset,
27714 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027715
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027717 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027718 pRcvPktFilterCfg->paramsData[i].compareData[0],
27719 pRcvPktFilterCfg->paramsData[i].compareData[1],
27720 pRcvPktFilterCfg->paramsData[i].compareData[2],
27721 pRcvPktFilterCfg->paramsData[i].compareData[3],
27722 pRcvPktFilterCfg->paramsData[i].compareData[4],
27723 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027724
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027726 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027727 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27728 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27729 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27730 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27731 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27732 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27733 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027734
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027735 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027736 pRcvPktFilterCfg,
27737 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027738
27739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027740 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27741 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027744 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027745 wpalMemoryFree(pRcvPktFilterCfg);
27746 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027748 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027751 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027752 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027753}
27754
27755/**
27756 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027757
27758 @param pWDICtx: pointer to the WLAN DAL context
27759 pEventData: pointer to the event information structure
27760
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 @see
27762 @return Result of the function call
27763*/
27764WDI_Status
27765WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027766(
Jeff Johnson295189b2012-06-20 16:38:30 -070027767 WDI_ControlBlockType* pWDICtx,
27768 WDI_EventInfoType* pEventData
27769)
27770{
27771 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27772 NULL;
27773 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27774 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 wpt_uint16 usDataOffset = 0;
27777 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027778 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27779 wpt_uint8 ucCurrentBSSSesIdx = 0;
27780 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027781
27782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027783 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
27785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027787 -------------------------------------------------------------------------*/
27788 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027789 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027791 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027792 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27793 {
27794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 }
27799
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027800 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27801 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27802 &pBSSSes);
27803 if ( NULL == pBSSSes )
27804 {
27805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027806 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027807 return WDI_STATUS_E_FAILURE;
27808 }
27809
Jeff Johnson295189b2012-06-20 16:38:30 -070027810 /*-----------------------------------------------------------------------
27811 Get message buffer
27812 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27814 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027815 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027816 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027817 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027818 {
27819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27820 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027821 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27823 wdiFilterMatchCountCb);
27824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 }
27827
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027828 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27829 wpalMemoryCopy( pSendBuffer+usDataOffset,
27830 &rcvFltPktMatchCntReqParam,
27831 sizeof(rcvFltPktMatchCntReqParam));
27832
Jeff Johnson295189b2012-06-20 16:38:30 -070027833 //
27834 // Don't need to fill send buffer other than header
27835 //
27836 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027837 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027838
27839
27840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027841 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27844 wdiFilterMatchCountCb,
27845 pEventData->pUserData,
27846 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027847}
27848
27849/**
27850 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027851
27852 @param pWDICtx: pointer to the WLAN DAL context
27853 pEventData: pointer to the event information structure
27854
Jeff Johnson295189b2012-06-20 16:38:30 -070027855 @see
27856 @return Result of the function call
27857*/
27858WDI_Status
27859WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027860(
Jeff Johnson295189b2012-06-20 16:38:30 -070027861 WDI_ControlBlockType* pWDICtx,
27862 WDI_EventInfoType* pEventData
27863)
Jeff Johnsone7245742012-09-05 17:12:55 -070027864{
Jeff Johnson295189b2012-06-20 16:38:30 -070027865 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27866 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027868 wpt_uint16 usDataOffset = 0;
27869 wpt_uint16 usSendSize = 0;
27870 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027871 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027872 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027873
27874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027875 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027876
27877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027879 -------------------------------------------------------------------------*/
27880 if (( NULL == pEventData ) ||
27881 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27882 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027883 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027884 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27885 {
27886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027889 return WDI_STATUS_E_FAILURE;
27890 }
27891
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027892 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027893 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27894 &pBSSSes);
27895 if ( NULL == pBSSSes )
27896 {
27897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027898 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027900 }
27901
27902 /*-----------------------------------------------------------------------
27903 Get message buffer
27904 -----------------------------------------------------------------------*/
27905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027906 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027907 sizeof(tHalRcvFltPktClearParam),
27908 &pSendBuffer, &usDataOffset, &usSendSize))||
27909 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27910 {
27911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27912 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027913 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027914 pEventData, pwdiRcvFltPktClearReqParamsType,
27915 wdiRcvFltPktClearFilterCb);
27916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027918 }
27919
27920
27921 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027922 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027923 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027924 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027925
Jeff Johnsone7245742012-09-05 17:12:55 -070027926 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27927 wpalMemoryCopy( pSendBuffer+usDataOffset,
27928 &rcvFltPktClearParam,
27929 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027930
27931 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027932 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027933
27934
27935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027936 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027939 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027940 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027941}
27942
27943/**
27944 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027945
27946 @param pWDICtx: pointer to the WLAN DAL context
27947 pEventData: pointer to the event information structure
27948
Jeff Johnson295189b2012-06-20 16:38:30 -070027949 @see
27950 @return Result of the function call
27951*/
27952WDI_Status
27953WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027954(
Jeff Johnson295189b2012-06-20 16:38:30 -070027955 WDI_ControlBlockType* pWDICtx,
27956 WDI_EventInfoType* pEventData
27957)
27958{
Jeff Johnson295189b2012-06-20 16:38:30 -070027959 eHalStatus halStatus;
27960 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027961 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27962 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27964
27965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027966 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027967
27968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027970 -------------------------------------------------------------------------*/
27971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27972 ( NULL == pEventData->pEventData ))
27973 {
27974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027978 }
27979
Jeff Johnsone7245742012-09-05 17:12:55 -070027980 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027981
27982 /*-------------------------------------------------------------------------
27983 Extract response and send it to UMAC
27984 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027985 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27986 {
27987 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27988 pEventData->pEventData,
27989 sizeof(halRcvFltPktSetMcListRsp));
27990
27991 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27992 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27993 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27994 halRcvFltPktSetMcListRsp.bssIdx;
27995 }
27996 else
27997 {
27998 halStatus = *((eHalStatus*)pEventData->pEventData);
27999 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028001
28002 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028003 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028004
Jeff Johnsone7245742012-09-05 17:12:55 -070028005 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028006}
28007
28008/**
28009 @brief Process Set Rsp function (called when a
28010 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028011
28012 @param pWDICtx: pointer to the WLAN DAL context
28013 pEventData: pointer to the event information structure
28014
Jeff Johnson295189b2012-06-20 16:38:30 -070028015 @see
28016 @return Result of the function call
28017*/
28018WDI_Status
28019WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028020(
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 WDI_ControlBlockType* pWDICtx,
28022 WDI_EventInfoType* pEventData
28023)
28024{
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 eHalStatus halStatus;
28026 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028027 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28028 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28030
28031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028032 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028033
28034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028036 -------------------------------------------------------------------------*/
28037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28038 ( NULL == pEventData->pEventData ))
28039 {
28040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028044 }
28045
28046 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028047 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028048
28049 /*-------------------------------------------------------------------------
28050 Extract response and send it to UMAC
28051 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028052 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28053 {
28054 wpalMemoryCopy( &halSetPktFilterRspParams,
28055 pEventData->pEventData,
28056 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028057
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028058 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28059 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28060 }
28061 else
28062 {
28063 halStatus = *((eHalStatus*)pEventData->pEventData);
28064 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28065 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028066 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028067 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028068
Jeff Johnsone7245742012-09-05 17:12:55 -070028069 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028070}
28071
28072/**
28073 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028074
28075 @param pWDICtx: pointer to the WLAN DAL context
28076 pEventData: pointer to the event information structure
28077
Jeff Johnson295189b2012-06-20 16:38:30 -070028078 @see
28079 @return Result of the function call
28080*/
28081WDI_Status
28082WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028083(
Jeff Johnson295189b2012-06-20 16:38:30 -070028084 WDI_ControlBlockType* pWDICtx,
28085 WDI_EventInfoType* pEventData
28086)
28087{
Jeff Johnson295189b2012-06-20 16:38:30 -070028088 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028089 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028090 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28091 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028092
28093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28094
28095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028096 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028097
28098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028100 -------------------------------------------------------------------------*/
28101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28102 ( NULL == pEventData->pEventData ))
28103 {
28104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 }
28109
Jeff Johnsone7245742012-09-05 17:12:55 -070028110 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028111
28112 /*-------------------------------------------------------------------------
28113 Extract response and send it to UMAC
28114 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028115 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28116 {
28117 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28118 pEventData->pEventData,
28119 sizeof(halRcvFltrPktMatachRsp));
28120
28121 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28122 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28123 }
28124 else
28125 {
28126 halStatus = *((eHalStatus*)pEventData->pEventData);
28127 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28128 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028129
28130 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028131 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028132
Jeff Johnsone7245742012-09-05 17:12:55 -070028133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028134}
28135
28136/**
28137 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028138
28139 @param pWDICtx: pointer to the WLAN DAL context
28140 pEventData: pointer to the event information structure
28141
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 @see
28143 @return Result of the function call
28144*/
28145WDI_Status
28146WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028147(
Jeff Johnson295189b2012-06-20 16:38:30 -070028148 WDI_ControlBlockType* pWDICtx,
28149 WDI_EventInfoType* pEventData
28150)
28151{
Jeff Johnson295189b2012-06-20 16:38:30 -070028152 eHalStatus halStatus;
28153 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028154 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28155 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28157
28158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028159 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028160
28161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028163 -------------------------------------------------------------------------*/
28164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28165 ( NULL == pEventData->pEventData ))
28166 {
28167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028171 }
28172
28173 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028174 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028175
28176 /*-------------------------------------------------------------------------
28177 Extract response and send it to UMAC
28178 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028179 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28180 {
28181 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28182 pEventData->pEventData,
28183 sizeof(halRcvFltPktClearRspMsg));
28184
28185 wdiRcvFltPktClearRspParamsType.wdiStatus =
28186 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28187 wdiRcvFltPktClearRspParamsType.bssIdx =
28188 halRcvFltPktClearRspMsg.bssIdx;
28189 }
28190 else
28191 {
28192 halStatus = *((eHalStatus*)pEventData->pEventData);
28193 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028195
28196 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028197 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028198
Jeff Johnsone7245742012-09-05 17:12:55 -070028199 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028200}
28201#endif // WLAN_FEATURE_PACKET_FILTERING
28202
28203/**
28204 @brief Process Shutdown Rsp function
28205 There is no shutdown response comming from HAL
28206 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028207
Jeff Johnson295189b2012-06-20 16:38:30 -070028208 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028209 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028210
28211 @see
28212 @return Result of the function call
28213*/
28214WDI_Status
28215WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028216(
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 WDI_ControlBlockType* pWDICtx,
28218 WDI_EventInfoType* pEventData
28219)
28220{
28221 /*There is no shutdown response comming from HAL - function just kept for
28222 simmetry */
28223 WDI_ASSERT(0);
28224 return WDI_STATUS_SUCCESS;
28225}/*WDI_ProcessShutdownRsp*/
28226
28227/**
28228 @brief WDI_SetPowerParamsReq
28229
Jeff Johnsone7245742012-09-05 17:12:55 -070028230 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028231 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028232
Jeff Johnson295189b2012-06-20 16:38:30 -070028233 wdiPowerParamsCb: callback for passing back the response
28234 of the Set Power Params operation received from the
28235 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028236
Jeff Johnson295189b2012-06-20 16:38:30 -070028237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028238 callback
28239
Jeff Johnson295189b2012-06-20 16:38:30 -070028240 @return Result of the function call
28241*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028242WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028243WDI_SetPowerParamsReq
28244(
28245 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28246 WDI_SetPowerParamsCb wdiPowerParamsCb,
28247 void* pUserData
28248)
28249{
28250 WDI_EventInfoType wdiEventData;
28251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28252
28253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028255 ------------------------------------------------------------------------*/
28256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28257 {
28258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28259 "WDI API call before module is initialized - Fail request");
28260
Jeff Johnsone7245742012-09-05 17:12:55 -070028261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028262 }
28263
28264 /*------------------------------------------------------------------------
28265 Fill in Event data and post to the Main FSM
28266 ------------------------------------------------------------------------*/
28267 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028268 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028269 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028270 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028271 wdiEventData.pUserData = pUserData;
28272
28273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28274}/*WDI_SetPowerParamsReq*/
28275
28276/**
28277 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028278
28279 @param pWDICtx: pointer to the WLAN DAL context
28280 pEventData: pointer to the event information structure
28281
Jeff Johnson295189b2012-06-20 16:38:30 -070028282 @see
28283 @return Result of the function call
28284*/
28285WDI_Status
28286WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028287(
Jeff Johnson295189b2012-06-20 16:38:30 -070028288 WDI_ControlBlockType* pWDICtx,
28289 WDI_EventInfoType* pEventData
28290)
28291{
28292 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28293 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028295 wpt_uint16 usDataOffset = 0;
28296 wpt_uint16 usSendSize = 0;
28297 tSetPowerParamsType powerParams;
28298
28299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 -------------------------------------------------------------------------*/
28302 if (( NULL == pEventData ) ||
28303 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28304 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28305 {
28306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028310 }
28311
28312 /*-----------------------------------------------------------------------
28313 Get message buffer
28314 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 sizeof(powerParams),
28317 &pSendBuffer, &usDataOffset, &usSendSize))||
28318 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28319 {
28320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028321 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028322 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028325 }
28326
28327 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028328 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028329 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28330
28331 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028332 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028333 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28334
28335 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028336 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028337 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28338
28339 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028340 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028341 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28342
28343 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028344 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028345 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28346
28347 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028348 powerParams.uBETInterval =
28349 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028350
Yue Mac24062f2013-05-13 17:01:29 -070028351 /* MAX LI for modulated DTIM */
28352 powerParams.uMaxLIModulatedDTIM =
28353 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028354
28355 wpalMemoryCopy( pSendBuffer+usDataOffset,
28356 &powerParams,
28357 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028358
28359 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028360 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028361
28362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28366 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028367}
28368
28369/**
28370 @brief Process Power Params Rsp function (called when a
28371 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028372
28373 @param pWDICtx: pointer to the WLAN DAL context
28374 pEventData: pointer to the event information structure
28375
Jeff Johnson295189b2012-06-20 16:38:30 -070028376 @see
28377 @return Result of the function call
28378*/
28379WDI_Status
28380WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028381(
Jeff Johnson295189b2012-06-20 16:38:30 -070028382 WDI_ControlBlockType* pWDICtx,
28383 WDI_EventInfoType* pEventData
28384)
28385{
28386 WDI_Status wdiStatus;
28387 eHalStatus halStatus;
28388 WDI_SetPowerParamsCb wdiPowerParamsCb;
28389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28390
28391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028393 -------------------------------------------------------------------------*/
28394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28395 ( NULL == pEventData->pEventData ))
28396 {
28397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028401 }
28402
Jeff Johnsone7245742012-09-05 17:12:55 -070028403 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028404
28405 /*-------------------------------------------------------------------------
28406 Extract response and send it to UMAC
28407 -------------------------------------------------------------------------*/
28408 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028410
28411 /*Notify UMAC*/
28412 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28413
Jeff Johnsone7245742012-09-05 17:12:55 -070028414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028415}/*WDI_ProcessSetPowerParamsRsp*/
28416
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028417/**
28418 @brief WDI_dhcpStartInd
28419 Host will send an event to the FW when DHCP is initiated
28420
28421 @param
28422 WDI_DHCPInd: DHCP Indication
28423 @see
28424 @return Result of the function call
28425*/
28426WDI_Status
28427WDI_dhcpStartInd
28428(
28429 WDI_DHCPInd *wdiDHCPInd
28430)
28431{
28432 WDI_EventInfoType wdiEventData;
28433
28434 /*------------------------------------------------------------------------
28435 Sanity Check
28436 ------------------------------------------------------------------------*/
28437 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28438 {
28439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28440 "WDI API call before module is initialized - Fail request");
28441
28442 return WDI_STATUS_E_NOT_ALLOWED;
28443 }
28444
28445 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28446 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028447 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028448 wdiEventData.pCBfnc = NULL;
28449 wdiEventData.pUserData = NULL;
28450
28451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28452}
28453
28454
28455/**
28456 @brief WDI_dhcpStopInd
28457 Host will send an event to the FW when DHCP is completed
28458
28459 @param
28460 WDI_DHCPInd: DHCP Indication
28461 @see
28462 @return Result of the function call
28463*/
28464WDI_Status
28465WDI_dhcpStopInd
28466(
28467 WDI_DHCPInd *wdiDHCPInd
28468)
28469{
28470 WDI_EventInfoType wdiEventData;
28471
28472 /*------------------------------------------------------------------------
28473 Sanity Check
28474 ------------------------------------------------------------------------*/
28475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28476 {
28477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28478 "WDI API call before module is initialized - Fail request");
28479
28480 return WDI_STATUS_E_NOT_ALLOWED;
28481 }
28482
28483 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28484 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028485 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028486 wdiEventData.pCBfnc = NULL;
28487 wdiEventData.pUserData = NULL;
28488
28489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28490}
28491
28492
28493/**
28494 @brief Process DHCP Start Indication message and post it to HAL
28495
28496 @param pWDICtx: pointer to the WLAN DAL context
28497 pEventData: pointer to the event information structure
28498
28499 @see
28500 @return Result of the function call
28501*/
28502WDI_Status
28503WDI_ProcessDHCPStartInd
28504(
28505 WDI_ControlBlockType* pWDICtx,
28506 WDI_EventInfoType* pEventData
28507)
28508{
28509 wpt_uint8* pSendBuffer = NULL;
28510 wpt_uint16 usDataOffset = 0;
28511 wpt_uint16 usSendSize = 0;
28512 wpt_uint16 usLen = 0;
28513 WDI_DHCPInd* pwdiDHCPInd = NULL;
28514 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028515 WDI_Status wdiStatus;
28516
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028517
28518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28519
28520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28521 "%s", __func__);
28522
28523 /*-------------------------------------------------------------------------
28524 Sanity check
28525 -------------------------------------------------------------------------*/
28526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28527 {
28528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28529 "%s: Invalid parameters", __func__);
28530 WDI_ASSERT(0);
28531 return WDI_STATUS_E_FAILURE;
28532 }
28533 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28534 /*-----------------------------------------------------------------------
28535 Get message buffer
28536 -----------------------------------------------------------------------*/
28537
28538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28539 WDI_DHCP_START_IND,
28540 sizeof(tDHCPInfo),
28541 &pSendBuffer, &usDataOffset, &usSendSize))||
28542 ( usSendSize < (usDataOffset + usLen )))
28543 {
28544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28545 "Unable to get send buffer in DHCP Start req %p ",
28546 pEventData);
28547 WDI_ASSERT(0);
28548 return WDI_STATUS_E_FAILURE;
28549 }
28550
Sandeep Puligillaee789512014-02-13 19:14:52 +053028551 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028552 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28553 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28554 WDI_MAC_ADDR_LEN);
28555
28556 pWDICtx->pReqStatusUserData = NULL;
28557 pWDICtx->pfncRspCB = NULL;
28558
28559 /*-------------------------------------------------------------------------
28560 Send DHCP Start Indication to HAL
28561 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028562 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28563 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028564}/*WDI_ProcessDHCPStartInd*/
28565
28566/**
28567 @brief Process DHCP Stop indication message and post it to HAL
28568
28569 @param pWDICtx: pointer to the WLAN DAL context
28570 pEventData: pointer to the event information structure
28571
28572 @see
28573 @return Result of the function call
28574*/
28575WDI_Status
28576WDI_ProcessDHCPStopInd
28577(
28578 WDI_ControlBlockType* pWDICtx,
28579 WDI_EventInfoType* pEventData
28580)
28581{
28582 wpt_uint8* pSendBuffer = NULL;
28583 wpt_uint16 usDataOffset = 0;
28584 wpt_uint16 usSendSize = 0;
28585 wpt_uint16 usLen = 0;
28586 WDI_DHCPInd* pwdiDHCPInd = NULL;
28587 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028588 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028589
28590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28591
28592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28593 "%s", __func__);
28594
28595 /*-------------------------------------------------------------------------
28596 Sanity check
28597 -------------------------------------------------------------------------*/
28598
28599 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28600 {
28601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28602 "%s: Invalid parameters", __func__);
28603 WDI_ASSERT(0);
28604 return WDI_STATUS_E_FAILURE;
28605 }
28606 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28607 /*-----------------------------------------------------------------------
28608 Get message buffer
28609 -----------------------------------------------------------------------*/
28610
28611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28612 WDI_DHCP_STOP_IND,
28613 sizeof(tDHCPInfo),
28614 &pSendBuffer, &usDataOffset, &usSendSize))||
28615 ( usSendSize < (usDataOffset + usLen )))
28616 {
28617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28618 "Unable to get send buffer in DHCP Start req %p ",
28619 pEventData);
28620 WDI_ASSERT(0);
28621 return WDI_STATUS_E_FAILURE;
28622 }
28623
Sandeep Puligillaee789512014-02-13 19:14:52 +053028624 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028625 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28626 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28627 WDI_MAC_ADDR_LEN);
28628
28629 pWDICtx->pReqStatusUserData = NULL;
28630 pWDICtx->pfncRspCB = NULL;
28631 /*-------------------------------------------------------------------------
28632 Send DHCP Stop indication to HAL
28633 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028634 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28635 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028636
28637}/*WDI_ProcessDHCPStopInd*/
28638
28639
Jeff Johnson295189b2012-06-20 16:38:30 -070028640#ifdef WLAN_FEATURE_GTK_OFFLOAD
28641/**
28642 @brief WDI_GTKOffloadReq will be called when the upper MAC
28643 wants to set GTK Rekey Counter while in power save. Upon
28644 the call of this API the WLAN DAL will pack and send a
28645 HAL GTK offload request message to the lower RIVA
28646 sub-system if DAL is in state STARTED.
28647
28648 In state BUSY this request will be queued. Request won't
28649 be allowed in any other state.
28650
28651 WDI_PostAssocReq must have been called.
28652
28653 @param pwdiGtkOffloadParams: the GTK offload as specified
28654 by the Device Interface
28655
28656 wdiGtkOffloadCb: callback for passing back the response
28657 of the GTK offload operation received from the device
28658
28659 pUserData: user data will be passed back with the
28660 callback
28661
28662 @see WDI_PostAssocReq
28663 @return Result of the function call
28664*/
28665WDI_Status
28666WDI_GTKOffloadReq
28667(
28668 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28669 WDI_GtkOffloadCb wdiGtkOffloadCb,
28670 void* pUserData
28671)
28672{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028673 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28675
28676 /*------------------------------------------------------------------------
28677 Sanity Check
28678 ------------------------------------------------------------------------*/
28679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28680 {
28681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28682 "WDI API call before module is initialized - Fail request");
28683
28684 return WDI_STATUS_E_NOT_ALLOWED;
28685 }
28686
28687 /*------------------------------------------------------------------------
28688 Fill in Event data and post to the Main FSM
28689 ------------------------------------------------------------------------*/
28690 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28691 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028692 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028693 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28694 wdiEventData.pUserData = pUserData;
28695
28696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28697}
28698
28699
28700/**
28701 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28702 MAC wants to get GTK Rekey Counter while in power save.
28703 Upon the call of this API the WLAN DAL will pack and
28704 send a HAL GTK offload request message to the lower RIVA
28705 sub-system if DAL is in state STARTED.
28706
28707 In state BUSY this request will be queued. Request won't
28708 be allowed in any other state.
28709
28710 WDI_PostAssocReq must have been called.
28711
28712 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28713 Information Message as specified by the
28714 Device Interface
28715
28716 wdiGtkOffloadGetInfoCb: callback for passing back the
28717 response of the GTK offload operation received from the
28718 device
28719
28720 pUserData: user data will be passed back with the
28721 callback
28722
28723 @see WDI_PostAssocReq
28724 @return Result of the function call
28725*/
28726WDI_Status
28727WDI_GTKOffloadGetInfoReq
28728(
28729 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28730 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28731 void* pUserData
28732)
28733{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028734 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28736
28737 /*------------------------------------------------------------------------
28738 Sanity Check
28739 ------------------------------------------------------------------------*/
28740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28741 {
28742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28743 "WDI API call before module is initialized - Fail request");
28744
28745 return WDI_STATUS_E_NOT_ALLOWED;
28746 }
28747
28748 /*------------------------------------------------------------------------
28749 Fill in Event data and post to the Main FSM
28750 ------------------------------------------------------------------------*/
28751 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28752 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28753 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28754 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28755 wdiEventData.pUserData = pUserData;
28756
28757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28758}
28759
28760
28761/**
28762 @brief Process set GTK Offload Request function
28763
28764 @param pWDICtx: pointer to the WLAN DAL context
28765 pEventData: pointer to the event information structure
28766
28767 @see
28768 @return Result of the function call
28769*/
28770WDI_Status
28771WDI_ProcessGTKOffloadReq
28772(
28773 WDI_ControlBlockType* pWDICtx,
28774 WDI_EventInfoType* pEventData
28775)
28776{
28777 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28778 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28779 wpt_uint8* pSendBuffer = NULL;
28780 wpt_uint16 usDataOffset = 0;
28781 wpt_uint16 usSendSize = 0;
28782 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028783 wpt_uint8 ucCurrentSessionId = 0;
28784 WDI_BSSSessionType* pBSSSes = NULL;
28785
Jeff Johnson295189b2012-06-20 16:38:30 -070028786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28787
28788 /*-------------------------------------------------------------------------
28789 Sanity check
28790 -------------------------------------------------------------------------*/
28791 if (( NULL == pEventData ) ||
28792 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28793 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28794 {
28795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028797 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028798 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028799 }
28800
28801 /*-----------------------------------------------------------------------
28802 Get message buffer
28803 -----------------------------------------------------------------------*/
28804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28805 sizeof(gtkOffloadReqParams),
28806 &pSendBuffer, &usDataOffset, &usSendSize))||
28807 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28808 {
28809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028810 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028811 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28812 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028813 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028814 }
28815
28816 //
28817 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28818 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028819 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28820 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28821 &pBSSSes);
28822 if ( NULL == pBSSSes )
28823 {
28824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028825 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028826 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028827 }
28828
28829 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28830
Jeff Johnson295189b2012-06-20 16:38:30 -070028831 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28832 // Copy KCK
28833 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28834 // Copy KEK
28835 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28836 // Copy KeyReplayCounter
28837 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28838
28839 wpalMemoryCopy( pSendBuffer+usDataOffset,
28840 &gtkOffloadReqParams,
28841 sizeof(gtkOffloadReqParams));
28842
28843 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28844 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28845
28846 /*-------------------------------------------------------------------------
28847 Send Get STA Request to HAL
28848 -------------------------------------------------------------------------*/
28849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28850 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028851
28852fail:
28853 // Release the message buffer so we don't leak
28854 wpalMemoryFree(pSendBuffer);
28855
28856failRequest:
28857 //WDA should have failure check to avoid the memory leak
28858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028859}
28860
28861
28862/**
28863 @brief Process GTK Offload Get Information Request function
28864
28865 @param pWDICtx: pointer to the WLAN DAL context
28866 pEventData: pointer to the event information structure
28867
28868 @see
28869 @return Result of the function call
28870*/
28871WDI_Status
28872WDI_ProcessGTKOffloadGetInfoReq
28873(
28874 WDI_ControlBlockType* pWDICtx,
28875 WDI_EventInfoType* pEventData
28876)
28877{
28878 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28879 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28880 wpt_uint8* pSendBuffer = NULL;
28881 wpt_uint16 usDataOffset = 0;
28882 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028883 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28884 wpt_uint8 ucCurrentSessionId = 0;
28885 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028886
28887 /*-------------------------------------------------------------------------
28888 Sanity check
28889 -------------------------------------------------------------------------*/
28890 if (( NULL == pEventData ) ||
28891 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28892 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
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);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028897 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028898 }
28899
28900 /*-----------------------------------------------------------------------
28901 Get message buffer
28902 -----------------------------------------------------------------------*/
28903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028904 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028905 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028906 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028907 {
28908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028909 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028910 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28911 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028912 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028914 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28915 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28916 &pBSSSes);
28917 if ( NULL == pBSSSes )
28918 {
28919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028920 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028921 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028922 }
28923 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028924
28925 //
28926 // Don't need to fill send buffer other than header
28927 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028928 wpalMemoryCopy( pSendBuffer+usDataOffset,
28929 &halGtkOffloadGetInfoReqParams,
28930 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028931
28932 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28933 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28934
28935 /*-------------------------------------------------------------------------
28936 Send Get STA Request to HAL
28937 -------------------------------------------------------------------------*/
28938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28939 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028940fail:
28941 // Release the message buffer so we don't leak
28942 wpalMemoryFree(pSendBuffer);
28943
28944failRequest:
28945 //WDA should have failure check to avoid the memory leak
28946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028947}
28948
28949/**
28950 @brief Process host offload Rsp function (called when a
28951 response is being received over the bus from HAL)
28952
28953 @param pWDICtx: pointer to the WLAN DAL context
28954 pEventData: pointer to the event information structure
28955
28956 @see
28957 @return Result of the function call
28958*/
28959WDI_Status
28960WDI_ProcessGtkOffloadRsp
28961(
28962 WDI_ControlBlockType* pWDICtx,
28963 WDI_EventInfoType* pEventData
28964)
28965{
Jeff Johnson295189b2012-06-20 16:38:30 -070028966 eHalStatus halStatus;
28967 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028968 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28969 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028970
28971 /*-------------------------------------------------------------------------
28972 Sanity check
28973 -------------------------------------------------------------------------*/
28974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28975 ( NULL == pEventData->pEventData))
28976 {
28977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028979 WDI_ASSERT(0);
28980 return WDI_STATUS_E_FAILURE;
28981 }
28982
Wilson Yang00256342013-10-10 23:13:38 -070028983 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28984
Jeff Johnson295189b2012-06-20 16:38:30 -070028985 /*-------------------------------------------------------------------------
28986 Extract response and send it to UMAC
28987 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028988 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28989 {
28990 wpalMemoryCopy( &halGtkOffloadRspParams,
28991 pEventData->pEventData,
28992 sizeof(halGtkOffloadRspParams));
28993
28994 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028995 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028996 wdiGtkOffloadRsparams.bssIdx =
28997 halGtkOffloadRspParams.bssIdx;
28998 }
28999 else
29000 {
29001 halStatus = *((eHalStatus*)pEventData->pEventData);
29002 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29003 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029004
29005 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029006 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029007
29008 return WDI_STATUS_SUCCESS;
29009}
29010
29011/**
29012 @brief Process GTK Offload Get Information Response function
29013
29014 @param pWDICtx: pointer to the WLAN DAL context
29015 pEventData: pointer to the event information structure
29016
29017 @see
29018 @return Result of the function call
29019*/
29020WDI_Status
29021WDI_ProcessGTKOffloadGetInfoRsp
29022(
29023 WDI_ControlBlockType* pWDICtx,
29024 WDI_EventInfoType* pEventData
29025)
29026{
Jeff Johnson295189b2012-06-20 16:38:30 -070029027 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029028 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029029 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29030 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029031 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029032
Jeff Johnson295189b2012-06-20 16:38:30 -070029033
29034 /*-------------------------------------------------------------------------
29035 Sanity check
29036 -------------------------------------------------------------------------*/
29037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29038 ( NULL == pEventData->pEventData ))
29039 {
29040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029042 WDI_ASSERT(0);
29043 return WDI_STATUS_E_FAILURE;
29044 }
29045
Wilson Yang00256342013-10-10 23:13:38 -070029046 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29047
29048 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029049 Extract response and send it to UMAC
29050 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029051 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29052 {
29053 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29054 pEventData->pEventData,
29055 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029056
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029057 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029058 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029059 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29060 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29061 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29062 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29063 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29064 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29065 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29066 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029067
29068 wpalMutexAcquire(&pWDICtx->wptMutex);
29069 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29070 &pBSSSes);
29071
29072 if ( NULL == pBSSSes )
29073 {
29074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29075 "Association sequence for this BSS does not exist or "
29076 "association no longer in progress - mysterious HAL response");
29077 wpalMutexRelease(&pWDICtx->wptMutex);
29078 return WDI_STATUS_E_NOT_ALLOWED;
29079 }
29080
29081 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29082 sizeof (wpt_macAddr));
29083 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029084 }
29085 else
29086 {
29087 halStatus = *((eHalStatus*)pEventData->pEventData);
29088 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29089 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029090 /*Notify UMAC*/
29091 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29092 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029093 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029094
29095 return WDI_STATUS_SUCCESS;
29096}
29097#endif // WLAN_FEATURE_GTK_OFFLOAD
29098
29099#ifdef WLAN_WAKEUP_EVENTS
29100WDI_Status
29101WDI_ProcessWakeReasonInd
29102(
29103 WDI_ControlBlockType* pWDICtx,
29104 WDI_EventInfoType* pEventData
29105)
29106{
29107 WDI_LowLevelIndType *pWdiInd;
29108 tpWakeReasonParams pWakeReasonParams;
29109 wpt_uint32 allocSize = 0;
29110
29111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029112 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029113
29114 /*-------------------------------------------------------------------------
29115 Sanity check
29116 -------------------------------------------------------------------------*/
29117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29118 ( NULL == pEventData->pEventData ))
29119 {
29120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029122 WDI_ASSERT( 0 );
29123 return WDI_STATUS_E_FAILURE;
29124 }
29125
29126 /*-------------------------------------------------------------------------
29127 Extract indication and send it to UMAC
29128 -------------------------------------------------------------------------*/
29129 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29130
29131 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29132
29133 //Allocate memory for WDI_WakeReasonIndType structure
29134 pWdiInd = wpalMemoryAllocate(allocSize) ;
29135
29136 if(NULL == pWdiInd)
29137 {
29138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029139 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029140 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029141 WDI_ASSERT(0);
29142 return WDI_STATUS_E_FAILURE;
29143 }
29144
29145 wpalMemoryZero(pWdiInd, allocSize);
29146
29147 /* Fill in the indication parameters*/
29148 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29149 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29150 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29151 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29152 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29153 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29154 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29155 &(pWakeReasonParams->aDataStart[0]),
29156 pWakeReasonParams->ulStoredDataLen);
29157
ltimariub77f24b2013-01-24 18:54:33 -080029158
29159 if ( pWDICtx->wdiLowLevelIndCB )
29160 {
29161 /*Notify UMAC*/
29162 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29163 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029164
29165 //Free memory allocated for WDI_WakeReasonIndType structure
29166 wpalMemoryFree(pWdiInd);
29167
29168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029169 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029170
29171 return WDI_STATUS_SUCCESS;
29172}
29173#endif // WLAN_WAKEUP_EVENTS
29174
29175void WDI_GetWcnssCompiledApiVersion
29176(
29177 WDI_WlanVersionType *pWcnssApiVersion
29178)
29179{
29180 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29181 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29182 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29183 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29184}
29185
29186/**
29187 @brief Process Set TM Level Rsp function (called when a
29188 response is being received over the bus from HAL)
29189
29190 @param pWDICtx: pointer to the WLAN DAL context
29191 pEventData: pointer to the event information structure
29192
29193 @see
29194 @return Result of the function call
29195*/
29196WDI_Status
29197WDI_ProcessSetTmLevelRsp
29198(
29199 WDI_ControlBlockType* pWDICtx,
29200 WDI_EventInfoType* pEventData
29201)
29202{
29203 WDI_Status wdiStatus;
29204 eHalStatus halStatus;
29205 WDI_SetTmLevelCb wdiSetTmLevelCb;
29206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29207
29208 /*-------------------------------------------------------------------------
29209 Sanity check
29210 -------------------------------------------------------------------------*/
29211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29212 ( NULL == pEventData->pEventData ))
29213 {
29214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029216 WDI_ASSERT(0);
29217 return WDI_STATUS_E_FAILURE;
29218 }
29219
29220 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29221
29222 /*-------------------------------------------------------------------------
29223 Extract response and send it to UMAC
29224 -------------------------------------------------------------------------*/
29225 halStatus = *((eHalStatus*)pEventData->pEventData);
29226 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29227
29228 /*Notify UMAC*/
29229 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29230
29231 return WDI_STATUS_SUCCESS;
29232}/*WDI_ProcessSetTmLevelRsp*/
29233
29234/**
29235 @brief Process Set Thermal Mitigation level Changed request
29236
29237 @param pWDICtx: pointer to the WLAN DAL context
29238 pEventData: pointer to the event information structure
29239
29240 @see
29241 @return Result of the function call
29242*/
29243WDI_Status
29244WDI_ProcessSetTmLevelReq
29245(
29246 WDI_ControlBlockType* pWDICtx,
29247 WDI_EventInfoType* pEventData
29248)
29249{
29250 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29251 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29252 wpt_uint8* pSendBuffer = NULL;
29253 wpt_uint16 usDataOffset = 0;
29254 wpt_uint16 usSendSize = 0;
29255 tSetThermalMitgationType halTmMsg;
29256
29257 /*-------------------------------------------------------------------------
29258 Sanity check
29259 -------------------------------------------------------------------------*/
29260 if (( NULL == pEventData ) ||
29261 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29262 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29263 {
29264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029266 WDI_ASSERT(0);
29267 return WDI_STATUS_E_FAILURE;
29268 }
29269
29270 /*-----------------------------------------------------------------------
29271 Get message buffer
29272 -----------------------------------------------------------------------*/
29273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29274 sizeof(halTmMsg),
29275 &pSendBuffer, &usDataOffset, &usSendSize))||
29276 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29277 {
29278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029279 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029280 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29281 WDI_ASSERT(0);
29282 return WDI_STATUS_E_FAILURE;
29283 }
29284
29285 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29286 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29287
29288 wpalMemoryCopy( pSendBuffer+usDataOffset,
29289 &halTmMsg,
29290 sizeof(halTmMsg));
29291
29292 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29293 pWDICtx->pfncRspCB = NULL;
29294 /*-------------------------------------------------------------------------
29295 Send Get STA Request to HAL
29296 -------------------------------------------------------------------------*/
29297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29298 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29299}
29300
29301/* Fill the value from the global features enabled array to the global capabilities
29302 * bitmap struct
29303 */
29304static void
29305FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29306{
29307 wpt_int8 i;
29308 for (i=0; i<len; i++)
29309 {
29310 setFeatCaps(fCaps, enabledFeat[i]);
29311 }
29312}
29313
29314/**
29315 @brief WDI_featureCapsExchangeReq
29316 Post feature capability bitmap exchange event.
29317 Host will send its own capability to FW in this req and
29318 expect FW to send its capability back as a bitmap in Response
29319
29320 @param
29321
29322 wdiFeatureCapsExchangeCb: callback called on getting the response.
29323 It is kept to mantain similarity between WDI reqs and if needed, can
29324 be used in future. Currently, It is set to NULL
29325
29326 pUserData: user data will be passed back with the
29327 callback
29328
29329 @see
29330 @return Result of the function call
29331*/
29332WDI_Status
29333WDI_featureCapsExchangeReq
29334(
29335 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29336 void* pUserData
29337)
29338{
29339 WDI_EventInfoType wdiEventData;
29340 wpt_int32 fCapsStructSize;
29341
29342 /*------------------------------------------------------------------------
29343 Sanity Check
29344 ------------------------------------------------------------------------*/
29345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29346 {
29347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29348 "WDI API call before module is initialized - Fail request");
29349
29350 return WDI_STATUS_E_NOT_ALLOWED;
29351 }
29352
29353 /* Allocate memory separately for global variable carrying FW caps */
29354 fCapsStructSize = sizeof(tWlanFeatCaps);
29355 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29356 if ( NULL == gpHostWlanFeatCaps )
29357 {
29358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029359 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029360 WDI_ASSERT(0);
29361 return WDI_STATUS_MEM_FAILURE;
29362 }
29363
29364 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29365
29366 /*------------------------------------------------------------------------
29367 Fill in Event data and post to the Main FSM
29368 ------------------------------------------------------------------------*/
29369 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29370 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029372 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029373 gpHostWlanFeatCaps->featCaps[0],
29374 gpHostWlanFeatCaps->featCaps[1],
29375 gpHostWlanFeatCaps->featCaps[2],
29376 gpHostWlanFeatCaps->featCaps[3]
29377 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029379 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029380 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29381 wdiEventData.pEventData = gpHostWlanFeatCaps;
29382 wdiEventData.uEventDataSize = fCapsStructSize;
29383 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29384 wdiEventData.pUserData = pUserData;
29385
29386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29387}
29388
29389/**
Yathish9f22e662012-12-10 14:21:35 -080029390 @brief Disable Active mode offload in Host
29391
29392 @param void
29393 @see
29394 @return void
29395*/
29396void
29397WDI_disableCapablityFeature(wpt_uint8 feature_index)
29398{
29399 supportEnabledFeatures[feature_index] = 0;
29400 return;
29401}
29402
29403/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029404 @brief Process Host-FW Capability Exchange Request function
29405
29406 @param pWDICtx: pointer to the WLAN DAL context
29407 pEventData: pointer to the event information structure
29408
29409 @see
29410 @return Result of the function call
29411*/
29412WDI_Status
29413WDI_ProcessFeatureCapsExchangeReq
29414(
29415 WDI_ControlBlockType* pWDICtx,
29416 WDI_EventInfoType* pEventData
29417)
29418{
29419 wpt_uint8* pSendBuffer = NULL;
29420 wpt_uint16 usDataOffset = 0;
29421 wpt_uint16 usSendSize = 0;
29422 wpt_uint16 usLen = 0;
29423
29424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29425
29426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029427 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029428
29429 /*-------------------------------------------------------------------------
29430 Sanity check
29431 -------------------------------------------------------------------------*/
29432 /* Call back function is NULL since not required for cap exchange req */
29433 if (( NULL == pEventData ) ||
29434 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29435 {
29436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029438 WDI_ASSERT(0);
29439 return WDI_STATUS_E_FAILURE;
29440 }
29441
29442 /*-----------------------------------------------------------------------
29443 Get message buffer
29444 -----------------------------------------------------------------------*/
29445 usLen = sizeof(tWlanFeatCaps);
29446
29447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29448 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29449 usLen,
29450 &pSendBuffer, &usDataOffset, &usSendSize))||
29451 ( usSendSize < (usDataOffset + usLen )))
29452 {
29453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029454 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029455 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29456 WDI_ASSERT(0);
29457 return WDI_STATUS_E_FAILURE;
29458 }
29459
29460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029461 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029462 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29463 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29464 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29465 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29466 );
29467
29468 /* Copy host caps after the offset in the send buffer */
29469 wpalMemoryCopy( pSendBuffer+usDataOffset,
29470 (tWlanFeatCaps *)pEventData->pEventData,
29471 usLen);
29472
29473 /*-------------------------------------------------------------------------
29474 Send Start Request to HAL
29475 -------------------------------------------------------------------------*/
29476 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29477 (WDI_StartRspCb)pEventData->pCBfnc,
29478 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29479
29480}/*WDI_ProcessFeatureCapsExchangeReq*/
29481
29482/**
29483 @brief Process Host-FW Capability Exchange Response function
29484
29485 @param pWDICtx: pointer to the WLAN DAL context
29486 pEventData: pointer to the event information structure
29487
29488 @see
29489 @return Result of the function call
29490*/
29491WDI_Status
29492WDI_ProcessFeatureCapsExchangeRsp
29493(
29494 WDI_ControlBlockType* pWDICtx,
29495 WDI_EventInfoType* pEventData
29496)
29497{
29498 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29499 wpt_int32 fCapsStructSize;
29500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29501
29502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029503 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029504
29505 /*-------------------------------------------------------------------------
29506 Sanity check
29507 -------------------------------------------------------------------------*/
29508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29509 ( NULL == pEventData->pEventData ))
29510 {
29511 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029514 WDI_ASSERT(0);
29515 return WDI_STATUS_E_FAILURE;
29516 }
29517
29518 /* Allocate memory separately for global variable carrying FW caps */
29519 fCapsStructSize = sizeof(tWlanFeatCaps);
29520 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29521 if ( NULL == gpFwWlanFeatCaps )
29522 {
29523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029524 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029525 WDI_ASSERT(0);
29526 return WDI_STATUS_MEM_FAILURE;
29527 }
29528
29529 /*-------------------------------------------------------------------------
29530 Unpack HAL Response Message - the header was already extracted by the
29531 main Response Handling procedure
29532 -------------------------------------------------------------------------*/
29533 /*-------------------------------------------------------------------------
29534 Extract response and send it to UMAC
29535 -------------------------------------------------------------------------*/
29536
29537 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29538 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029540 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029541 gpFwWlanFeatCaps->featCaps[0],
29542 gpFwWlanFeatCaps->featCaps[1],
29543 gpFwWlanFeatCaps->featCaps[2],
29544 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029545 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029547 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029548 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29549
29550 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29551 if (wdiFeatureCapsExchangeCb != NULL)
29552 wdiFeatureCapsExchangeCb(NULL, NULL);
29553
29554 return WDI_STATUS_SUCCESS;
29555}
29556
Mohit Khanna4a70d262012-09-11 16:30:12 -070029557#ifdef WLAN_FEATURE_11AC
29558WDI_Status
29559WDI_ProcessUpdateVHTOpModeRsp
29560(
29561 WDI_ControlBlockType* pWDICtx,
29562 WDI_EventInfoType* pEventData
29563)
29564{
29565 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29566 WDI_Status wdiStatus;
29567 eHalStatus halStatus;
29568
29569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29570
29571 /*-------------------------------------------------------------------------
29572 Sanity check
29573 -------------------------------------------------------------------------*/
29574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29575 ( NULL == pEventData->pEventData))
29576 {
29577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029578 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029579 WDI_ASSERT(0);
29580 return WDI_STATUS_E_FAILURE;
29581 }
29582 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29583
29584 /*-------------------------------------------------------------------------
29585 Extract response and send it to UMAC
29586 -------------------------------------------------------------------------*/
29587 halStatus = *((eHalStatus*)pEventData->pEventData);
29588 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29589
29590 /*Notify UMAC*/
29591 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29592
29593 return WDI_STATUS_SUCCESS;
29594}
29595#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029596/**
29597 @brief WDI_getHostWlanFeatCaps
29598 WDI API that returns whether the feature passed to it as enum value in
29599 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29600 variable storing host capability bitmap to find this. This can be used by
29601 other moduels to decide certain things like call different APIs based on
29602 whether a particular feature is supported.
29603
29604 @param
29605
29606 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29607
29608 @see
29609 @return
29610 0 - if the feature is NOT supported in host
29611 any non-zero value - if the feature is SUPPORTED in host.
29612*/
29613wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29614{
29615 wpt_uint8 featSupported = 0;
29616 if (gpHostWlanFeatCaps != NULL)
29617 {
29618 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29619 }
29620 else
29621 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029623 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029624 }
29625 return featSupported;
29626}
29627
29628/**
29629 @brief WDI_getFwWlanFeatCaps
29630 WDI API that returns whether the feature passed to it as enum value in
29631 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29632 variable storing host capability bitmap to find this. This can be used by
29633 other moduels to decide certain things like call different APIs based on
29634 whether a particular feature is supported.
29635
29636 @param
29637
29638 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29639 in wlan_hal_msg.h.
29640
29641 @see
29642 @return
29643 0 - if the feature is NOT supported in FW
29644 any non-zero value - if the feature is SUPPORTED in FW.
29645*/
29646wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29647{
29648 wpt_uint8 featSupported = 0;
29649 if (gpFwWlanFeatCaps != NULL)
29650 {
29651 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29652 }
29653 else
29654 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029656 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029657 }
29658 return featSupported;
29659}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029660
Katya Nigamf0511f62015-05-05 16:40:57 +053029661wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29662{
29663 /* 5gHz Channel */
29664 if( channel >= 34 && channel <= 165 )
29665 {
29666 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29667 {
29668 if ( channel== 36 || channel == 52 || channel == 100 ||
29669 channel == 116 || channel == 149 )
29670 {
29671 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29672 }
29673 else if ( channel == 40 || channel == 56 || channel == 104 ||
29674 channel == 120 || channel == 153 )
29675 {
29676 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29677 }
29678 else if ( channel == 44 || channel == 60 || channel == 108 ||
29679 channel == 124 || channel == 157 )
29680 {
29681 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29682 }
29683 else if ( channel == 48 || channel == 64 || channel == 112 ||
29684 channel == 128 || channel == 144 || channel == 161 )
29685 {
29686 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29687 }
29688 else if ( channel == 165 )
29689 {
29690 return PHY_SINGLE_CHANNEL_CENTERED;
29691 }
29692 }
29693
29694 else
29695 {
29696 if ( channel== 40 || channel == 48 || channel == 56 ||
29697 channel == 64 || channel == 104 || channel == 112 ||
29698 channel == 120 || channel == 128 || channel == 136 ||
29699 channel == 144 || channel == 153 || channel == 161 )
29700 {
29701 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29702 }
29703 else if ( channel== 36 || channel == 44 || channel == 52 ||
29704 channel == 60 || channel == 100 || channel == 108 ||
29705 channel == 116 || channel == 124 || channel == 132 ||
29706 channel == 140 || channel == 149 || channel == 157 )
29707 {
29708 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29709 }
29710 else if ( channel == 165 )
29711 {
29712 return PHY_SINGLE_CHANNEL_CENTERED;
29713 }
29714 }
29715 }
29716
29717 /* 2.4Ghz Channel */
29718 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29719 {
29720 if (channel >= 1 && channel <= 7)
29721 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29722 else if (channel >= 8 && channel <= 13)
29723 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29724 else if (channel ==14)
29725 return PHY_SINGLE_CHANNEL_CENTERED;
29726 }
29727 return PHY_SINGLE_CHANNEL_CENTERED;
29728}
29729
Mohit Khanna4a70d262012-09-11 16:30:12 -070029730#ifdef WLAN_FEATURE_11AC
29731WDI_Status
29732WDI_ProcessUpdateVHTOpModeReq
29733(
29734 WDI_ControlBlockType* pWDICtx,
29735 WDI_EventInfoType* pEventData
29736)
29737{
29738 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29739 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29740 wpt_uint8* pSendBuffer = NULL;
29741 wpt_uint16 usDataOffset = 0;
29742 wpt_uint16 usSendSize = 0;
29743
29744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29745
29746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029747 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029748
29749 /*-------------------------------------------------------------------------
29750 Sanity check
29751 -------------------------------------------------------------------------*/
29752 if (( NULL == pEventData ) ||
29753 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29754 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29755 {
29756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029757 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029758 WDI_ASSERT(0);
29759 return WDI_STATUS_E_FAILURE;
29760 }
29761
29762 /*-----------------------------------------------------------------------
29763 Get message buffer
29764 -----------------------------------------------------------------------*/
29765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29766 sizeof(WDI_UpdateVHTOpMode),
29767 &pSendBuffer, &usDataOffset, &usSendSize))||
29768 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29769 {
29770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29771 "Unable to get send buffer in update vht opMode req");
29772 WDI_ASSERT(0);
29773 return WDI_STATUS_E_FAILURE;
29774 }
29775
29776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029777 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029778
29779 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29780 sizeof(WDI_UpdateVHTOpMode));
29781
29782 /*-------------------------------------------------------------------------
29783 Send Start Request to HAL
29784 -------------------------------------------------------------------------*/
29785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29786 wdiVHTOpModeCb,
29787 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29788
29789}
29790
29791WDI_Status
29792WDI_UpdateVHTOpModeReq
29793(
29794 WDI_UpdateVHTOpMode *pData,
29795 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29796 void* pUserData
29797)
29798{
29799 WDI_EventInfoType wdiEventData;
29800
29801 /*------------------------------------------------------------------------
29802 Sanity Check
29803 ------------------------------------------------------------------------*/
29804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29805 {
29806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29807 "WDI API call before module is initialized - Fail request");
29808
29809 return WDI_STATUS_E_NOT_ALLOWED;
29810 }
29811
29812 /*------------------------------------------------------------------------
29813 Fill in Event data and post to the Main FSM
29814 ------------------------------------------------------------------------*/
29815 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29816 wdiEventData.pEventData = pData;
29817 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29818 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29819 wdiEventData.pUserData = pUserData;
29820
29821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029822 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029823
29824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29825
29826}
29827#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029828
29829/**
29830 @brief WDI_TransportChannelDebug -
29831 Display DXE Channel debugging information
29832 User may request to display DXE channel snapshot
29833 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029834
Jeff Johnsonb88db982012-12-10 13:34:59 -080029835 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029836 @param debugFlags : Enable stall detect features
29837 defined by WPAL_DeviceDebugFlags
29838 These features may effect
29839 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029840 @see
29841 @return none
29842*/
29843void WDI_TransportChannelDebug
29844(
29845 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029846 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029847)
29848{
Mihir Shete40a55652014-03-02 14:14:47 +053029849 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029850 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029851}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029852/**
29853 @brief WDI_SsrTimerCB
29854 Callback function for SSR timer, if this is called then the graceful
29855 shutdown for Riva did not happen.
29856
29857 @param pUserData : user data to timer
29858
29859 @see
29860 @return none
29861*/
29862void
29863WDI_SsrTimerCB
29864(
29865 void *pUserData
29866)
29867{
29868 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29870
29871 if (NULL == pWDICtx )
29872 {
29873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029874 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029875 WDI_ASSERT(0);
29876 return;
29877 }
29878 wpalRivaSubystemRestart();
29879
29880 return;
29881
29882}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029883
29884/**
29885 @brief WDI_SetEnableSSR -
29886 This API is called to enable/disable SSR on WDI timeout.
29887
29888 @param enableSSR : enable/disable SSR
29889
29890 @see
29891 @return none
29892*/
29893void WDI_SetEnableSSR(wpt_boolean enableSSR)
29894{
29895 gWDICb.bEnableSSR = enableSSR;
29896}
Leo Chang9056f462013-08-01 19:21:11 -070029897
29898
29899#ifdef FEATURE_WLAN_LPHB
29900/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029901 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029902 This function will be invoked when FW detects low power
29903 heart beat failure
29904
29905 @param pWDICtx : wdi context
29906 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029907 @see
29908 @return Result of the function call
29909*/
29910WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029911WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029912(
29913 WDI_ControlBlockType* pWDICtx,
29914 WDI_EventInfoType* pEventData
29915)
29916{
29917 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029918 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29920
29921 /*-------------------------------------------------------------------------
29922 Sanity check
29923 -------------------------------------------------------------------------*/
29924 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29925 (NULL == pEventData->pEventData))
29926 {
29927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29928 "%s: Invalid parameters", __func__);
29929 WDI_ASSERT(0);
29930 return WDI_STATUS_E_FAILURE;
29931 }
29932
29933 /*-------------------------------------------------------------------------
29934 Extract indication and send it to UMAC
29935 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029936 wpalMemoryCopy(&lphbIndicationParam,
29937 pEventData->pEventData,
29938 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029939
Leo Changd9df8aa2013-09-26 13:32:26 -070029940 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029941 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029942 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029943 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029944 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029945 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029946 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029947 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029948 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029949 /*Notify UMAC*/
29950 if (pWDICtx->wdiLowLevelIndCB)
29951 {
29952 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29953 }
29954
29955 return WDI_STATUS_SUCCESS;
29956}
29957
29958/**
29959 @brief WDI_ProcessLphbCfgRsp -
29960 LPHB configuration response from FW
29961
29962 @param pWDICtx : wdi context
29963 pEventData : indication data
29964
29965 @see
29966 @return Result of the function call
29967*/
29968WDI_Status WDI_ProcessLphbCfgRsp
29969(
29970 WDI_ControlBlockType* pWDICtx,
29971 WDI_EventInfoType* pEventData
29972)
29973{
29974 WDI_Status wdiStatus;
29975 eHalStatus halStatus;
29976 WDI_LphbCfgCb wdiLphbCfgCb;
29977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29978
29979 /*-------------------------------------------------------------------------
29980 Sanity check
29981 -------------------------------------------------------------------------*/
29982 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29983 (NULL == pEventData->pEventData))
29984 {
29985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29986 "%s: Invalid parameters", __func__);
29987 WDI_ASSERT(0);
29988 return WDI_STATUS_E_FAILURE;
29989 }
29990
29991 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29992
29993 /*-------------------------------------------------------------------------
29994 Extract response and send it to UMAC
29995 -------------------------------------------------------------------------*/
29996 halStatus = *((eHalStatus*)pEventData->pEventData);
29997 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29998
29999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30000 "LPHB Cfg Rsp Return status %d", wdiStatus);
30001 /*Notify UMAC*/
30002 if (NULL != wdiLphbCfgCb)
30003 {
30004 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30005 }
30006
30007 return WDI_STATUS_SUCCESS;
30008}
30009
30010/**
30011 @brief WDI_ProcessLPHBConfReq -
30012 LPHB configuration request to FW
30013
30014 @param pWDICtx : wdi context
30015 pEventData : indication data
30016
30017 @see
30018 @return none
30019*/
30020WDI_Status WDI_ProcessLPHBConfReq
30021(
30022 WDI_ControlBlockType* pWDICtx,
30023 WDI_EventInfoType* pEventData
30024)
30025{
30026 WDI_LPHBReq *pLphbReqParams;
30027 WDI_Status wdiStatus;
30028 wpt_uint8* pSendBuffer = NULL;
30029 wpt_uint16 usDataOffset = 0;
30030 wpt_uint16 usSendSize = 0;
30031 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30033
30034 /*-------------------------------------------------------------------------
30035 Sanity check
30036 -------------------------------------------------------------------------*/
30037 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30038 {
30039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30040 "%s: Invalid parameters in Suspend ind",__func__);
30041 WDI_ASSERT(0);
30042 return WDI_STATUS_E_FAILURE;
30043 }
30044
30045 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30046
30047 /*-----------------------------------------------------------------------
30048 Get message buffer
30049 -----------------------------------------------------------------------*/
30050 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30051 WDI_LPHB_CFG_REQ,
30052 sizeof(tHalLowPowerHeartBeatReqMsg),
30053 &pSendBuffer, &usDataOffset, &usSendSize))||
30054 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30055 {
30056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30057 "Unable to get send buffer in LPHB Ind ");
30058 WDI_ASSERT(0);
30059 return WDI_STATUS_E_FAILURE;
30060 }
30061
30062 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30063 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30064
30065 halLphbReqRarams->lowPowerHeartBeatCmdType =
30066 (tANI_U16)(++pLphbReqParams->cmd);
30067 switch ((tANI_U16)pLphbReqParams->cmd)
30068 {
30069 case WDI_LPHB_SET_EN_PARAMS_INDID:
30070 halLphbReqRarams->sessionIdx =
30071 pLphbReqParams->params.lphbEnableReq.session;
30072 halLphbReqRarams->options.control.heartBeatEnable =
30073 pLphbReqParams->params.lphbEnableReq.enable;
30074 halLphbReqRarams->options.control.heartBeatType =
30075 pLphbReqParams->params.lphbEnableReq.item;
30076 break;
30077
30078 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30079 halLphbReqRarams->sessionIdx =
30080 pLphbReqParams->params.lphbTcpParamReq.session;
30081 halLphbReqRarams->options.tcpParams.timeOutSec =
30082 pLphbReqParams->params.lphbTcpParamReq.timeout;
30083 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30084 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30085 sizeof(v_U32_t));
30086 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30087 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30088 sizeof(v_U32_t));
30089
30090 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30091 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30092 WDI_MAC_ADDR_LEN);
30093
30094 halLphbReqRarams->options.tcpParams.hostPort =
30095 pLphbReqParams->params.lphbTcpParamReq.src_port;
30096 halLphbReqRarams->options.tcpParams.destPort =
30097 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030098 halLphbReqRarams->options.tcpParams.timePeriodSec =
30099 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30100 halLphbReqRarams->options.tcpParams.tcpSn =
30101 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030102 break;
30103
30104 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30105 halLphbReqRarams->sessionIdx =
30106 pLphbReqParams->params.lphbTcpFilterReq.session;
30107 halLphbReqRarams->options.tcpUdpFilter.offset =
30108 pLphbReqParams->params.lphbTcpFilterReq.offset;
30109 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30110 pLphbReqParams->params.lphbTcpFilterReq.length;
30111 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30112 pLphbReqParams->params.lphbTcpFilterReq.filter,
30113 WDI_LPHB_FILTER_LEN);
30114 break;
30115
30116 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30117 halLphbReqRarams->sessionIdx =
30118 pLphbReqParams->params.lphbUdpParamReq.session;
30119 halLphbReqRarams->options.udpParams.timeOutSec =
30120 pLphbReqParams->params.lphbUdpParamReq.timeout;
30121 halLphbReqRarams->options.udpParams.timePeriodSec =
30122 pLphbReqParams->params.lphbUdpParamReq.interval;
30123 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30124 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30125 sizeof(v_U32_t));
30126 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30127 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30128 sizeof(v_U32_t));
30129
30130 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30131 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30132 WDI_MAC_ADDR_LEN);
30133
30134 halLphbReqRarams->options.udpParams.hostPort =
30135 pLphbReqParams->params.lphbUdpParamReq.src_port;
30136 halLphbReqRarams->options.udpParams.destPort =
30137 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30138 break;
30139
30140 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30141 halLphbReqRarams->sessionIdx =
30142 pLphbReqParams->params.lphbUdpFilterReq.session;
30143 halLphbReqRarams->options.tcpUdpFilter.offset =
30144 pLphbReqParams->params.lphbUdpFilterReq.offset;
30145 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30146 pLphbReqParams->params.lphbUdpFilterReq.length;
30147 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30148 pLphbReqParams->params.lphbUdpFilterReq.filter,
30149 WDI_LPHB_FILTER_LEN);
30150 break;
30151
30152 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30153 /* NA */
30154 break;
30155
30156 default:
30157 break;
30158 }
30159
30160 /*-------------------------------------------------------------------------
30161 Send Suspend Request to HAL
30162 -------------------------------------------------------------------------*/
30163 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30164 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30165
30166 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30167 usSendSize, pWDICtx->pfncRspCB,
30168 pWDICtx->pReqStatusUserData,
30169 WDI_LPHB_CFG_RESP);
30170
30171 return wdiStatus;
30172}
30173
30174/**
30175 @brief WDI_LPHBConfReq -
30176 LPHB configuration request API
30177
30178 @param lphbconfParam : configuration parameter
30179 usrData : client context
30180 lphbCfgCb : callback function pointer
30181
30182 @see
30183 @return Success or fail status code
30184*/
30185WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30186 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30187{
30188 WDI_EventInfoType wdiEventData;
30189
30190 /*------------------------------------------------------------------------
30191 Sanity Check
30192 ------------------------------------------------------------------------*/
30193 if (eWLAN_PAL_FALSE == gWDIInitialized)
30194 {
30195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30196 "WDI API call before module is initialized - Fail request");
30197
30198 return WDI_STATUS_E_NOT_ALLOWED;
30199 }
30200
30201 /*------------------------------------------------------------------------
30202 Fill in Event data and post to the Main FSM
30203 ------------------------------------------------------------------------*/
30204 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30205 wdiEventData.pEventData = lphbconfParam;
30206 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30207 wdiEventData.pCBfnc = lphbCfgCb;
30208 wdiEventData.pUserData = usrData;
30209
30210 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30211}
30212#endif /* FEATURE_WLAN_LPHB */
30213
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030214/**
30215 @brief WDI_ProcessIbssPeerInactivityInd
30216 Process peer inactivity indication coming from HAL
30217
30218 @param pWDICtx: pointer to the WLAN DAL context
30219 pEventData: pointer to the event information structure
30220 @see
30221 @return Result of the function call
30222*/
30223WDI_Status
30224WDI_ProcessIbssPeerInactivityInd
30225(
30226 WDI_ControlBlockType* pWDICtx,
30227 WDI_EventInfoType* pEventData
30228)
30229{
30230 WDI_LowLevelIndType wdiInd;
30231 tIbssPeerInactivityIndMsg halIbssIndMsg;
30232
30233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30234
30235 /*-------------------------------------------------------------------------
30236 Sanity check
30237 -------------------------------------------------------------------------*/
30238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30239 ( NULL == pEventData->pEventData ))
30240 {
30241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30242 "%s: Invalid parameters", __func__);
30243 WDI_ASSERT( 0 );
30244 return WDI_STATUS_E_FAILURE;
30245 }
30246
30247 /*-------------------------------------------------------------------------
30248 Extract indication and send it to UMAC
30249 -------------------------------------------------------------------------*/
30250 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30251 pEventData->pEventData,
30252 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30253
30254 /*Fill in the indication parameters*/
30255 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30256
30257 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30258 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30259
30260 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30261 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30262
30263 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30264 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30265 sizeof(tSirMacAddr));
30266
30267 /*Notify UMAC*/
30268 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30269
30270 return WDI_STATUS_SUCCESS;
30271
30272} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030273
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030274/**
30275*@brief WDI_RateUpdateInd will be called when the upper MAC
30276 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030277
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030278
30279 @param wdiRateUpdateIndParams:
30280
30281
30282 @see
30283 @return Result of the function call
30284*/
30285WDI_Status
30286WDI_RateUpdateInd
30287(
30288 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30289)
30290{
30291 WDI_EventInfoType wdiEventData;
30292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30293
30294 /*------------------------------------------------------------------------
30295 Sanity Check
30296 ------------------------------------------------------------------------*/
30297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30298 {
30299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30300 "WDI API call before module is initialized - Fail request");
30301
30302 return WDI_STATUS_E_NOT_ALLOWED;
30303 }
30304
30305 /*------------------------------------------------------------------------
30306 Fill in Event data and post to the Main FSM
30307 ------------------------------------------------------------------------*/
30308 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30309 wdiEventData.pEventData = wdiRateUpdateIndParams;
30310 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30311 wdiEventData.pCBfnc = NULL;
30312 wdiEventData.pUserData = NULL;
30313
30314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30315
30316}/* WDI_RateUpdateInd */
30317
30318/**
30319 @brief Process Rate Update Indication and post it to HAL
30320
30321 @param pWDICtx: pointer to the WLAN DAL context
30322 pEventData: pointer to the event information structure
30323
30324 @see
30325 @return Result of the function call
30326*/
30327WDI_Status
30328WDI_ProcessRateUpdateInd
30329(
30330 WDI_ControlBlockType* pWDICtx,
30331 WDI_EventInfoType* pEventData
30332)
30333{
30334 wpt_uint8* pSendBuffer = NULL;
30335 wpt_uint16 usDataOffset = 0;
30336 wpt_uint16 usSendSize = 0;
30337 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30338 tHalRateUpdateInd *pRateUpdateInd;
30339 WDI_Status wdiStatus;
30340
30341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30342
30343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30344 "%s", __func__);
30345
30346 /*-------------------------------------------------------------------------
30347 Sanity check
30348 -------------------------------------------------------------------------*/
30349 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30350 {
30351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30352 "%s: Invalid parameters", __func__);
30353 WDI_ASSERT(0);
30354 return WDI_STATUS_E_FAILURE;
30355 }
30356 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30357 /*-----------------------------------------------------------------------
30358 Get message buffer
30359 -----------------------------------------------------------------------*/
30360
30361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30362 WDI_RATE_UPDATE_IND,
30363 sizeof(tHalRateUpdateParams),
30364 &pSendBuffer, &usDataOffset, &usSendSize))||
30365 ( usSendSize < (usDataOffset +
30366 sizeof(tHalRateUpdateParams) )))
30367 {
30368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30369 "Unable to get send buffer in Rate Update Indication %p ",
30370 pEventData);
30371 WDI_ASSERT(0);
30372 return WDI_STATUS_E_FAILURE;
30373 }
30374
30375 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30376
30377 /* Copy the bssid */
30378 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30379 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30380
30381 /* Copy the tx flags */
30382 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30383 pwdiRateUpdateInd->ucastDataRateTxFlag;
30384 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30385 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30386 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30387 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30388 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30389 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30390
30391 /* Copy the tx rates */
30392 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30393 pwdiRateUpdateInd->ucastDataRate;
30394 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30395 pwdiRateUpdateInd->reliableMcastDataRate;
30396 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30397 pwdiRateUpdateInd->mcastDataRate24GHz;
30398 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30399 pwdiRateUpdateInd->mcastDataRate5GHz;
30400
30401 /*-------------------------------------------------------------------------
30402 Send Rate Update Indication to HAL
30403 -------------------------------------------------------------------------*/
30404 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30405 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30406
30407 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30408
30409 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30410 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30411
30412} /* WDI_ProcessRateUpdateInd */
30413
30414#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030415/**
30416 @brief Process stop batch indication from WDA
30417
30418 @param pWDICtx: pointer to the WLAN DAL context
30419 pEventData: pointer to the event information structure
30420
30421 @see
30422 @return Result of the function call
30423*/
30424WDI_Status
30425WDI_ProcessStopBatchScanInd
30426(
30427 WDI_ControlBlockType* pWDICtx,
30428 WDI_EventInfoType* pEventData
30429)
30430{
30431 wpt_uint8* pSendBuffer = NULL;
30432 wpt_uint16 usDataOffset = 0;
30433 wpt_uint16 usSendSize = 0;
30434 WDI_Status wdiStatus;
30435 tHalBatchScanStopIndParam *pHalInd = NULL;
30436 WDI_StopBatchScanIndType *pWdiInd = NULL;
30437
30438
30439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30440
30441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30442 "%s", __func__);
30443
30444 /*-------------------------------------------------------------------------
30445 Sanity check
30446 -------------------------------------------------------------------------*/
30447
30448 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30449 {
30450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30451 "%s: Invalid parameters", __func__);
30452 WDI_ASSERT(0);
30453 return WDI_STATUS_E_FAILURE;
30454 }
30455 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30456 /*-----------------------------------------------------------------------
30457 Get message buffer
30458 -----------------------------------------------------------------------*/
30459
30460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30461 WDI_STOP_BATCH_SCAN_IND,
30462 sizeof(tHalBatchScanStopIndParam),
30463 &pSendBuffer, &usDataOffset, &usSendSize))||
30464 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30465 {
30466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30467 "Unable to get send buffer in stop batch scan ind %p ",
30468 pEventData);
30469 WDI_ASSERT(0);
30470 return WDI_STATUS_E_FAILURE;
30471 }
30472
30473 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30474 pHalInd->param = pWdiInd->param;
30475
30476 pWDICtx->pReqStatusUserData = NULL;
30477 pWDICtx->pfncRspCB = NULL;
30478 /*-------------------------------------------------------------------------
30479 Send Stop batch scan indication to HAL
30480 -------------------------------------------------------------------------*/
30481 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30482 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30483}
30484
30485/**
30486 @brief This API is called to trigger batch scan results from FW
30487
30488 @param pWDICtx: pointer to the WLAN DAL context
30489 pEventData: pointer to the event information structure
30490
30491 @see
30492 @return Result of the function call
30493*/
30494WDI_Status
30495WDI_ProcessTriggerBatchScanResultInd
30496(
30497 WDI_ControlBlockType* pWDICtx,
30498 WDI_EventInfoType* pEventData
30499)
30500{
30501 WDI_Status wdiStatus;
30502 wpt_uint8* pSendBuffer = NULL;
30503 wpt_uint16 usDataOffset = 0;
30504 wpt_uint16 usSendSize = 0;
30505 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30506 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30507
30508
30509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30510
30511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30512 "%s", __func__);
30513
30514 /*-------------------------------------------------------------------------
30515 Sanity check
30516 -------------------------------------------------------------------------*/
30517
30518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30519 {
30520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30521 "%s: Invalid parameters", __func__);
30522 WDI_ASSERT(0);
30523 return WDI_STATUS_E_FAILURE;
30524 }
30525 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30526 /*-----------------------------------------------------------------------
30527 Get message buffer
30528 -----------------------------------------------------------------------*/
30529
30530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30531 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30532 sizeof(tHalBatchScanTriggerResultParam),
30533 &pSendBuffer, &usDataOffset, &usSendSize))||
30534 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30535 {
30536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30537 "Unable to get send buffer in stop batch scan ind %p ",
30538 pEventData);
30539 WDI_ASSERT(0);
30540 return WDI_STATUS_E_FAILURE;
30541 }
30542
30543 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30544 pHalInd->param = pWdiInd->param;
30545
30546 pWDICtx->pReqStatusUserData = NULL;
30547 pWDICtx->pfncRspCB = NULL;
30548 /*-------------------------------------------------------------------------
30549 Send trigger batch scan result indication to HAL
30550 -------------------------------------------------------------------------*/
30551 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30552 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30553}
30554
30555
30556/**
30557 @brief Process set batch scan response from FW
30558
30559 @param pWDICtx: pointer to the WLAN DAL context
30560 pEventData: pointer to the event information structure
30561
30562 @see
30563 @return Result of the function call
30564*/
30565WDI_Status
30566WDI_ProcessSetBatchScanRsp
30567(
30568 WDI_ControlBlockType* pWDICtx,
30569 WDI_EventInfoType* pEventData
30570)
30571{
30572 WDI_SetBatchScanCb wdiSetBatchScanCb;
30573 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30574
30575 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30577
30578 /*sanity check*/
30579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30580 ( NULL == pEventData->pEventData))
30581 {
30582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30583 "%s: Invalid parameters", __func__);
30584 WDI_ASSERT(0);
30585 return WDI_STATUS_E_FAILURE;
30586 }
30587
30588 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30589 if ( NULL == wdiSetBatchScanCb)
30590 {
30591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30592 "%s: call back function is NULL", __func__);
30593 WDI_ASSERT(0);
30594 return WDI_STATUS_E_FAILURE;
30595 }
30596
30597 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30598
30599 if (NULL == pSetBatchScanRsp)
30600 {
30601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030602 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030603 pWDICtx, pEventData, pEventData->pEventData);
30604 WDI_ASSERT(0);
30605 return WDI_STATUS_E_FAILURE;
30606 }
30607
Sunil Duttbd736ed2014-05-26 21:19:41 +053030608 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030609 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30610
30611 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30612
Sunil Duttbd736ed2014-05-26 21:19:41 +053030613 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030614 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30615
30616 wpalMemoryFree(pSetBatchScanRsp);
30617
30618 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030619}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030620
30621/**
30622 @brief Process batch scan result indication from FW
30623
30624 @param pWDICtx: pointer to the WLAN DAL context
30625 pEventData: pointer to the event information structure
30626
30627 @see
30628 @return Result of the function call
30629*/
30630WDI_Status
30631WDI_ProcessBatchScanResultInd
30632(
30633 WDI_ControlBlockType* pWDICtx,
30634 WDI_EventInfoType* pEventData
30635)
30636{
30637 void *pBatchScanResultInd;
30638 WDI_LowLevelIndType wdiInd;
30639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30640
Sunil Duttbd736ed2014-05-26 21:19:41 +053030641 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30643 ( NULL == pEventData->pEventData))
30644 {
30645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30646 "%s: Invalid parameters", __func__);
30647 WDI_ASSERT(0);
30648 return WDI_STATUS_E_FAILURE;
30649 }
30650
Sunil Duttbd736ed2014-05-26 21:19:41 +053030651 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030652 pBatchScanResultInd = (void *)pEventData->pEventData;
30653
Sunil Duttbd736ed2014-05-26 21:19:41 +053030654 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030655 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30656
30657 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30658
Sunil Duttbd736ed2014-05-26 21:19:41 +053030659 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030660 if (pWDICtx->wdiLowLevelIndCB)
30661 {
30662 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30663 }
30664 else
30665 {
30666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30667 "%s: WDILowLevelIndCb is null", __func__);
30668 WDI_ASSERT(0);
30669 return WDI_STATUS_E_FAILURE;
30670 }
30671
30672 return WDI_STATUS_SUCCESS;
30673} /*End of WDI_ProcessBatchScanResultInd*/
30674
Sunil Duttbd736ed2014-05-26 21:19:41 +053030675#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30676/**
30677 @brief Process Link Layer Statistics Result indication from FW
30678
30679 @param pWDICtx: pointer to the WLAN DAL context
30680 pEventData: pointer to the event information structure
30681
30682 @see
30683 @return Result of the function call
30684*/
30685WDI_Status
30686WDI_ProcessLinkLayerStatsResultsInd
30687(
30688 WDI_ControlBlockType* pWDICtx,
30689 WDI_EventInfoType* pEventData
30690)
30691{
30692 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030693 WDI_LLstatsResultsType *halLLStatsResults;
30694 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030695 WDI_LowLevelIndType wdiInd;
30696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30697
30698 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30699 "%s: Event RESULTS Indication", __func__);
30700
30701 /* sanity check */
30702 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30703 ( NULL == pEventData->pEventData))
30704 {
30705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30706 "%s: Invalid parameters", __func__);
30707 WDI_ASSERT(0);
30708 return WDI_STATUS_E_FAILURE;
30709 }
30710
30711 /* extract response and send it to UMAC */
30712 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30713
30714 /* Fill in the indication parameters */
30715 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30716
Dino Mycled3d50022014-07-07 12:58:25 +053030717 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30718 = pLinkLayerStatsInd;
30719
30720 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30721
30722
30723 /* Need to fill in the MAC address */
30724 if ( WDI_STATUS_SUCCESS !=
30725 WDI_STATableGetStaMacAddr(pWDICtx,
30726 halLLStatsResults->iface_id,
30727 &macAddr))
30728 {
30729 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30730 " ifaceId: %u does not exist in the WDI Station Table",
30731 halLLStatsResults->iface_id);
30732
30733 return WDI_STATUS_E_FAILURE;
30734 }
30735 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30736 macAddr, WDI_MAC_ADDR_LEN);
30737
30738 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30739 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30740 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030741
30742 /* Notify UMAC */
30743 if (pWDICtx->wdiLowLevelIndCB)
30744 {
30745 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30746 }
30747 else
30748 {
30749 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30750 "%s: WDILowLevelIndCb is null", __func__);
30751 WDI_ASSERT(0);
30752 return WDI_STATUS_E_FAILURE;
30753 }
30754
30755 return WDI_STATUS_SUCCESS;
30756} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30757#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30758
Rajeev79dbe4c2013-10-05 11:03:42 +053030759/**
30760 @brief WDI_ProcessSetBatchScanReq -
30761 Set batch scan request to FW
30762
30763 @param pWDICtx : wdi context
30764 pEventData : indication data
30765
30766 @see
30767 @return none
30768*/
30769WDI_Status WDI_ProcessSetBatchScanReq
30770(
30771 WDI_ControlBlockType* pWDICtx,
30772 WDI_EventInfoType* pEventData
30773)
30774{
30775 WDI_SetBatchScanReqType *pWdiReq;
30776 WDI_Status wdiStatus;
30777 wpt_uint8* pSendBuffer = NULL;
30778 wpt_uint16 usDataOffset = 0;
30779 wpt_uint16 usSendSize = 0;
30780 tHalBatchScanSetParams *pHalReq;
30781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30782
30783 /*sanity check*/
30784 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30785 {
30786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30787 "%s: Invalid parameters in set batch scan request", __func__);
30788 WDI_ASSERT(0);
30789 return WDI_STATUS_E_FAILURE;
30790 }
30791
30792
30793 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30794
30795
30796 /*get message buffer*/
30797 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30798 WDI_SET_BATCH_SCAN_REQ,
30799 sizeof(tHalBatchScanSetParams),
30800 &pSendBuffer, &usDataOffset, &usSendSize))||
30801 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30802 {
30803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30804 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30805 WDI_ASSERT(0);
30806 return WDI_STATUS_E_FAILURE;
30807 }
30808
30809 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30810
30811 pHalReq->rtt = pWdiReq->rtt;
30812 pHalReq->rfBand = pWdiReq->rfBand;
30813 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30814 pHalReq->scanInterval = pWdiReq->scanFrequency;
30815 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30816
30817 /*send set batch scan request to fw*/
30818 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30819 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30820
30821 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30822 usSendSize, pWDICtx->pfncRspCB,
30823 pWDICtx->pReqStatusUserData,
30824 WDI_SET_BATCH_SCAN_RESP);
30825
30826 return wdiStatus;
30827}
30828
30829/**
30830 @brief WDI_SetBatchScanReq
30831 This API is called to set batch scan request in FW
30832
30833 @param pBatchScanReqParam : pointer to set batch scan re param
30834 usrData : Client context
30835 setBatchScanRspCb : set batch scan resp callback
30836 @see
30837 @return SUCCESS or FAIL
30838*/
30839WDI_Status WDI_SetBatchScanReq
30840(
30841 void *pBatchScanReqParam,
30842 void *usrData,
30843 WDI_SetBatchScanCb setBatchScanRspCb
30844)
30845{
30846 WDI_EventInfoType wdiEventData;
30847
30848 /*sanity check*/
30849 if (eWLAN_PAL_FALSE == gWDIInitialized)
30850 {
30851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30852 "WDI API call before module is initialized - Fail request");
30853
30854 return WDI_STATUS_E_NOT_ALLOWED;
30855 }
30856
30857 /* fill in event data and post to the main FSM */
30858 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30859 wdiEventData.pEventData = pBatchScanReqParam;
30860 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30861 wdiEventData.pCBfnc = setBatchScanRspCb;
30862 wdiEventData.pUserData = usrData;
30863
30864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30865}
30866
30867/**
30868 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30869
30870 @param None
30871
30872 @see
30873
30874 @return Status of the request
30875*/
30876WDI_Status
30877WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30878{
30879 WDI_EventInfoType wdiEventData;
30880
30881 /*-------------------------------------------------------------------------
30882 Sanity Check
30883 ------------------------------------------------------------------------*/
30884 if (eWLAN_PAL_FALSE == gWDIInitialized)
30885 {
30886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30887 "WDI API call before module is initialized - Fail request!");
30888
30889 return WDI_STATUS_E_NOT_ALLOWED;
30890 }
30891
30892 /*-------------------------------------------------------------------------
30893 Fill in Event data and post to the Main FSM
30894 ------------------------------------------------------------------------*/
30895 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30896 wdiEventData.pEventData = pWdiReq;
30897 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30898 wdiEventData.pCBfnc = NULL;
30899 wdiEventData.pUserData = NULL;
30900
30901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30902}
30903
30904/**
30905 @brief WDI_TriggerBatchScanResultInd
30906 This API is called to pull batch scan result from FW
30907
30908 @param pWdiReq : pointer to get batch scan ind param
30909 @see
30910 @return SUCCESS or FAIL
30911*/
30912WDI_Status WDI_TriggerBatchScanResultInd
30913(
30914 WDI_TriggerBatchScanResultIndType *pWdiReq
30915)
30916{
30917 WDI_EventInfoType wdiEventData;
30918 /*-------------------------------------------------------------------------
30919 Sanity Check
30920 ------------------------------------------------------------------------*/
30921 if (eWLAN_PAL_FALSE == gWDIInitialized)
30922 {
30923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30924 "WDI API call before module is initialized - Fail request!");
30925
30926 return WDI_STATUS_E_NOT_ALLOWED;
30927 }
30928
30929 /*-------------------------------------------------------------------------
30930 Fill in Event data and post to the Main FSM
30931 ------------------------------------------------------------------------*/
30932 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30933 wdiEventData.pEventData = pWdiReq;
30934 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30935 wdiEventData.pCBfnc = NULL;
30936 wdiEventData.pUserData = NULL;
30937
30938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30939}
Rajeev79dbe4c2013-10-05 11:03:42 +053030940#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030941
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030942/**
30943 @brief Process Update Channel Rsp function (called when a response is
30944 being received over the bus from HAL)
30945
30946 @param pWDICtx: pointer to the WLAN DAL context
30947 pEventData: pointer to the event information structure
30948
30949 @see
30950 @return Result of the function call
30951*/
30952WDI_Status
30953WDI_ProcessUpdateChanRsp
30954(
30955 WDI_ControlBlockType* pWDICtx,
30956 WDI_EventInfoType* pEventData
30957)
30958{
30959 WDI_Status wdiStatus;
30960 eHalStatus halStatus;
30961 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30963
30964 /*-------------------------------------------------------------------------
30965 Sanity check
30966 -------------------------------------------------------------------------*/
30967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30968 ( NULL == pEventData->pEventData))
30969 {
30970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30971 "%s: Invalid parameters", __func__);
30972 WDI_ASSERT(0);
30973 return WDI_STATUS_E_FAILURE;
30974 }
30975
30976 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30977
30978 /*-------------------------------------------------------------------------
30979 Extract response and send it to UMAC
30980 -------------------------------------------------------------------------*/
30981 halStatus = *((eHalStatus*)pEventData->pEventData);
30982 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30983
30984 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30985
30986 return WDI_STATUS_SUCCESS;
30987}/*WDI_ProcessUpdateChanRsp*/
30988
Leo Chang0b0e45a2013-12-15 15:18:55 -080030989#ifdef FEATURE_WLAN_CH_AVOID
30990/**
30991 @brief v -WDI_ProcessChAvoidInd
30992
30993
30994 @param pWDICtx : wdi context
30995 pEventData : indication data
30996 @see
30997 @return Result of the function call
30998*/
30999WDI_Status
31000WDI_ProcessChAvoidInd
31001(
31002 WDI_ControlBlockType* pWDICtx,
31003 WDI_EventInfoType* pEventData
31004)
31005{
31006 WDI_LowLevelIndType wdiInd;
31007 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31008 wpt_uint16 rangeLoop;
31009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31010
31011 /*-------------------------------------------------------------------------
31012 Sanity check
31013 -------------------------------------------------------------------------*/
31014 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31015 (NULL == pEventData->pEventData))
31016 {
31017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31018 "%s: Invalid parameters", __func__);
31019 WDI_ASSERT(0);
31020 return WDI_STATUS_E_FAILURE;
31021 }
31022
31023 /*-------------------------------------------------------------------------
31024 Extract indication and send it to UMAC
31025 -------------------------------------------------------------------------*/
31026 wpalMemoryCopy(&chAvoidIndicationParam,
31027 pEventData->pEventData,
31028 sizeof(tHalAvoidFreqRangeIndParams));
31029
Abhishek Singhe34eb552015-06-18 10:12:15 +053031030 /* Avoid Over flow */
31031 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31032 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31033
Leo Chang0b0e45a2013-12-15 15:18:55 -080031034 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31035 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31036 chAvoidIndicationParam.avoidCnt;
31037 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31038 (void *)chAvoidIndicationParam.avoidRange,
31039 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31040 sizeof(WDI_ChAvoidFreqType));
31041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31042 "%s: band count %d", __func__,
31043 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31044 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31045 {
31046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31047 "%s: srart freq %d, end freq %d", __func__,
31048 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31049 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31050 }
31051
31052 /*Notify UMAC*/
31053 if (pWDICtx->wdiLowLevelIndCB)
31054 {
31055 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31056 }
31057
31058 return WDI_STATUS_SUCCESS;
31059}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031060
Leo Chang0b0e45a2013-12-15 15:18:55 -080031061#endif /* FEATURE_WLAN_CH_AVOID */
31062
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031063/**
31064 @brief Process OBSS Start scan result indication
31065
31066 @param pWDICtx: pointer to the WLAN DAL context
31067 pEventData: pointer to the event information structure
31068
31069 @see
31070 @return Result of the function call
31071*/
31072WDI_Status
31073WDI_ProcessHT40OBSSScanInd
31074(
31075 WDI_ControlBlockType* pWDICtx,
31076 WDI_EventInfoType* pEventData
31077)
31078{
31079 wpt_uint8* pSendBuffer = NULL;
31080 wpt_uint16 usDataOffset = 0;
31081 wpt_uint16 usSendSize = 0;
31082 wpt_uint16 usLen = 0;
31083 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31084 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31085 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31086 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31087
31088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31089
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031091 "%s", __func__);
31092
31093 /*-------------------------------------------------------------------------
31094 Sanity check
31095 -------------------------------------------------------------------------*/
31096 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31097 {
31098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31099 "%s: Invalid parameters", __func__);
31100 WDI_ASSERT(0);
31101 return WDI_STATUS_E_FAILURE;
31102 }
31103 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31104
31105 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31106 /*-----------------------------------------------------------------------
31107 Get message buffer
31108 -----------------------------------------------------------------------*/
31109
31110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31111 WDI_START_HT40_OBSS_SCAN_IND,
31112 sizeof(tHT40ObssScanIndType),
31113 &pSendBuffer, &usDataOffset, &usSendSize))||
31114 ( usSendSize < (usDataOffset + usLen )))
31115 {
31116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31117 "Unable to get send buffer in HT40 OBSS Start req %p ",
31118 pEventData);
31119 WDI_ASSERT(0);
31120 return WDI_STATUS_E_FAILURE;
31121 }
31122 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31123 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31124 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31125 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31126 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31127 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31128 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31129 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31130 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31131 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31132 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31133 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31134 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31135 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31136 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31137 pHT40ObssScanInd->OBSSScanActivityThreshold =
31138 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31139 pHT40ObssScanInd->selfStaIdx =
31140 pwdiHT40OBSSScanInd->selfStaIdx;
31141 pHT40ObssScanInd->bssIdx =
31142 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031143 pHT40ObssScanInd->currentOperatingClass =
31144 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031145 pHT40ObssScanInd->fortyMHZIntolerent =
31146 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31147 pHT40ObssScanInd->channelCount =
31148 pwdiHT40OBSSScanInd->channelCount;
31149
31150 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31151 WDI_ROAM_SCAN_MAX_CHANNELS);
31152 pHT40ObssScanInd->ieFieldLen =
31153 pwdiHT40OBSSScanInd->ieFieldLen;
31154
31155 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31156 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31157 pWDICtx->pReqStatusUserData = NULL;
31158 pWDICtx->pfncRspCB = NULL;
31159
31160 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31161 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31162
31163 /*-------------------------------------------------------------------------
31164 Send OBSS Start Indication to HAL
31165 -------------------------------------------------------------------------*/
31166 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31167 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31168
31169} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31170
31171
31172/**
31173 @brief wdi_HT40OBSSScanInd
31174 This API is called to start OBSS scan
31175
31176 @param pWdiReq : pointer to get ind param
31177 @see
31178 @return SUCCESS or FAIL
31179*/
31180WDI_Status WDI_HT40OBSSScanInd
31181(
31182 WDI_HT40ObssScanParamsType *pWdiReq
31183)
31184{
31185 WDI_EventInfoType wdiEventData;
31186
31187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31188 "%s", __func__);
31189 /*-------------------------------------------------------------------------
31190 Sanity Check
31191 ------------------------------------------------------------------------*/
31192 if (eWLAN_PAL_FALSE == gWDIInitialized)
31193 {
31194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31195 "WDI API call before module is initialized - Fail request!");
31196
31197 return WDI_STATUS_E_NOT_ALLOWED;
31198 }
31199
31200 /*-------------------------------------------------------------------------
31201 Fill in Event data and post to the Main FSM
31202 ------------------------------------------------------------------------*/
31203 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31204 wdiEventData.pEventData = pWdiReq;
31205 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31206 wdiEventData.pCBfnc = NULL;
31207 wdiEventData.pUserData = NULL;
31208
31209
31210 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31211}
31212
31213/**
31214 @brief Process OBSS Stop scan result
31215
31216 @param pWDICtx: pointer to the WLAN DAL context
31217 pEventData: pointer to the event information structure
31218
31219 @see
31220 @return Result of the function call
31221*/
31222WDI_Status
31223WDI_ProcessHT40OBSSStopScanInd
31224(
31225 WDI_ControlBlockType* pWDICtx,
31226 WDI_EventInfoType* pEventData
31227)
31228{
31229 wpt_uint8* pSendBuffer = NULL;
31230 wpt_uint16 usDataOffset = 0;
31231 wpt_uint16 usSendSize = 0;
31232 wpt_uint16 usLen = 0;
31233 wpt_uint8 *wdiBssIdx = 0;
31234 tANI_U8 *bssIdx = 0;
31235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31236
31237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31238
31239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31240 "%s", __func__);
31241
31242 /*-------------------------------------------------------------------------
31243 Sanity check
31244 -------------------------------------------------------------------------*/
31245 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31246 {
31247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31248 "%s: Invalid parameters", __func__);
31249 WDI_ASSERT(0);
31250 return WDI_STATUS_E_FAILURE;
31251 }
31252 bssIdx = (wpt_uint8*)pEventData->pEventData;
31253 /*-----------------------------------------------------------------------
31254 Get message buffer
31255 -----------------------------------------------------------------------*/
31256
31257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31258 WDI_STOP_HT40_OBSS_SCAN_IND,
31259 sizeof(tANI_U8),
31260 &pSendBuffer, &usDataOffset, &usSendSize))||
31261 ( usSendSize < (usDataOffset + usLen )))
31262 {
31263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31264 "Unable to get send buffer in HT40 OBSS Start req %p ",
31265 pEventData);
31266 WDI_ASSERT(0);
31267 return WDI_STATUS_E_FAILURE;
31268 }
31269
31270 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31271 bssIdx = wdiBssIdx;
31272
31273 pWDICtx->pReqStatusUserData = NULL;
31274 pWDICtx->pfncRspCB = NULL;
31275
31276 /*-------------------------------------------------------------------------
31277 Send DHCP Start Indication to HAL
31278 -------------------------------------------------------------------------*/
31279 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31280 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31281} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31282
31283/**
31284 @brief WDI_HT40OBSSStopScanInd
31285 This API is called to start OBSS scan
31286 @param pWdiReq : pointer to get ind param
31287 @see
31288 @return SUCCESS or FAIL
31289*/
31290WDI_Status WDI_HT40OBSSStopScanInd
31291(
31292 wpt_uint8 bssIdx
31293)
31294{
31295 WDI_EventInfoType wdiEventData;
31296
31297 /*-------------------------------------------------------------------------
31298 Sanity Check
31299 ------------------------------------------------------------------------*/
31300 if (eWLAN_PAL_FALSE == gWDIInitialized)
31301 {
31302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31303 "WDI API call before module is initialized - Fail request!");
31304
31305 return WDI_STATUS_E_NOT_ALLOWED;
31306 }
31307
31308 /*-------------------------------------------------------------------------
31309 Fill in Event data and post to the Main FSM
31310 ------------------------------------------------------------------------*/
31311 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31312 wdiEventData.pEventData = &bssIdx;
31313 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31314 wdiEventData.pCBfnc = NULL;
31315 wdiEventData.pUserData = NULL;
31316
31317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31318}
31319
c_hpothu86041002014-04-14 19:06:51 +053031320WDI_Status
31321WDI_printRegInfo
31322(
31323 WDI_ControlBlockType* pWDICtx,
31324 WDI_EventInfoType* pEventData
31325)
31326{
31327 tHalRegDebugInfo *pRegTable;
31328 tHalRegDebugInfoParams *pRegParams;
31329 uint32 cnt=0;
31330
31331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31332 "%s: ", __func__);
31333 /*-------------------------------------------------------------------------
31334 Sanity check
31335 -------------------------------------------------------------------------*/
31336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31337 ( NULL == pEventData->pEventData))
31338 {
31339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31340 "%s: Invalid parameters", __func__);
31341 WDI_ASSERT(0);
31342 return WDI_STATUS_E_FAILURE;
31343 }
31344
31345 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31346
31347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31348 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31349 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31350
31351 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31352
31353 if (pRegParams->regCount <= 0)
31354 {
31355 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31356 "%s incorrect parameters passed", __func__);
31357 return WDI_STATUS_E_FAILURE;
31358 }
31359
31360 while(pRegParams->regCount--)
31361 {
31362 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31363 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31364 cnt++;
31365 }
31366
31367 return WDI_STATUS_SUCCESS;
31368}
c_hpothu92367912014-05-01 15:18:17 +053031369
31370/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031371 * FUNCTION: WDI_delBaInd
31372 * send the delBA to peer.
31373 */
31374
31375WDI_Status
31376WDI_delBaInd
31377(
31378 WDI_ControlBlockType* pWDICtx,
31379 WDI_EventInfoType* pEventData
31380
31381)
31382{
31383 tHalWlanDelBaIndMsg halDelBaInd;
31384 WDI_LowLevelIndType wdiInd;
31385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31386
31387 /*-------------------------------------------------------------------------
31388 Sanity check
31389 -------------------------------------------------------------------------*/
31390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31391 ( NULL == pEventData->pEventData))
31392 {
31393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31394 "%s: Invalid parameters", __func__);
31395 WDI_ASSERT(0);
31396 return WDI_STATUS_E_FAILURE;
31397 }
31398
31399 /*-------------------------------------------------------------------------
31400 Extract indication and send it to UMAC
31401 -------------------------------------------------------------------------*/
31402
31403 /* Parameters need to be unpacked according to HAL struct*/
31404 wpalMemoryCopy( &halDelBaInd,
31405 pEventData->pEventData,
31406 sizeof(halDelBaInd));
31407
31408 /*Fill in the indication parameters*/
31409 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31410
31411 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31412 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31413 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31414
31415 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31416 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31417 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31418
31419 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31420 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31421 if ( pWDICtx->wdiLowLevelIndCB )
31422 {
31423 /*Notify UMAC*/
31424 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31425 }
31426
31427 return WDI_STATUS_SUCCESS;
31428
31429
31430}
31431
31432/*
c_hpothu92367912014-05-01 15:18:17 +053031433 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31434 * send the response to PE with beacon miss count
31435 * received from WDI.
31436 */
31437WDI_Status
31438WDI_ProcessGetBcnMissRateRsp
31439(
31440 WDI_ControlBlockType* pWDICtx,
31441 WDI_EventInfoType* pEventData
31442)
31443{
31444 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31445 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31446
31447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31448 "In %s",__func__);
31449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31450
31451 /*-------------------------------------------------------------------------
31452 Sanity check
31453 -------------------------------------------------------------------------*/
31454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31455 ( NULL == pEventData->pEventData))
31456 {
31457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31458 "%s: Invalid parameters", __func__);
31459 WDI_ASSERT(0);
31460 return WDI_STATUS_E_FAILURE;
31461 }
31462
31463 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31464 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31465
31466 /*Notify UMAC*/
31467 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31468 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31469 return WDI_STATUS_SUCCESS;
31470}
31471
31472/*
31473 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31474 * Request to WDI to get missed beacon rate.
31475 */
31476WDI_Status
31477WDI_ProcessGetBcnMissRateReq
31478(
31479 WDI_ControlBlockType* pWDICtx,
31480 WDI_EventInfoType* pEventData
31481)
31482{
31483 wpt_uint8* pSendBuffer = NULL;
31484 wpt_uint16 usDataOffset = 0;
31485 wpt_uint16 usSendSize = 0;
31486 wpt_uint8 ucCurrentBSSSesIdx = 0;
31487 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031488 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31489 tHalBcnMissRateReqParams halBcnMissRateReq;
31490
31491/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31492
31493 /*-------------------------------------------------------------------------
31494 Sanity check
31495 -------------------------------------------------------------------------*/
31496 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31497 ( NULL == pEventData->pCBfnc ) )
31498 {
31499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31500 "%s: Invalid parameters", __func__);
31501 WDI_ASSERT(0);
31502 return WDI_STATUS_E_FAILURE;
31503 }
31504
31505 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31506
31507 wpalMutexAcquire(&pWDICtx->wptMutex);
31508
31509 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31510 pEventData->pEventData, &pBSSSes);
31511 if ( NULL == pBSSSes )
31512 {
31513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31514 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031515 MAC_ADDRESS_STR, __func__,
31516 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031517 wpalMutexRelease(&pWDICtx->wptMutex);
31518 return WDI_STATUS_E_NOT_ALLOWED;
31519 }
31520 wpalMutexRelease(&pWDICtx->wptMutex);
31521
31522 /*-----------------------------------------------------------------------
31523 Get message buffer
31524 -----------------------------------------------------------------------*/
31525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31526 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31527 sizeof(tHalBcnMissRateReqParams),
31528 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31529 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31530 {
31531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31532 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31533 pEventData);
31534 WDI_ASSERT(0);
31535 return WDI_STATUS_E_FAILURE;
31536 }
31537
31538 pWDICtx->wdiReqStatusCB = NULL;
31539 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31540
31541 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31542
31543 wpalMemoryCopy( pSendBuffer+usDataOffset,
31544 &halBcnMissRateReq,
31545 sizeof(tHalBcnMissRateReqParams));
31546 /*-------------------------------------------------------------------------
31547 Send Get STA Request to HAL
31548 -------------------------------------------------------------------------*/
31549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31550 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31551}
31552
31553/**
31554 @brief WDI_GetBcnMissRate
31555
31556 @param pUserData: user data will be passed back with the
31557 callback
31558 WDI_GetBcnMissRateCb: callback for passing back the response
31559 of the get stats operation received from the device
31560 bssid: bssid, to send bssIdx to FW
31561
31562 @return SUCCESS or FAIL
31563*/
31564WDI_Status WDI_GetBcnMissRate( void *pUserData,
31565 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31566 tANI_U8 *bssid )
31567{
31568 WDI_EventInfoType wdiEventData;
31569
31570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31571
31572 /*------------------------------------------------------------------------
31573 Sanity Check
31574 ------------------------------------------------------------------------*/
31575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31576 {
31577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31578 "WDI API call before module is initialized - Fail request");
31579
31580 return WDI_STATUS_E_NOT_ALLOWED;
31581 }
31582
31583 /*------------------------------------------------------------------------
31584 Fill in Event data and post to the Main FSM
31585 ------------------------------------------------------------------------*/
31586 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31587 wdiEventData.pEventData = bssid;
31588 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31589 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31590 wdiEventData.pUserData = pUserData;
31591
31592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31593}
Abhishek Singh85b74712014-10-08 11:38:19 +053031594
31595/*
31596 * FUNCTION: WDI_ProcessGetFwStatsRsp
31597 * send the response with FW stats asked.
31598 */
31599WDI_Status
31600 WDI_ProcessGetFwStatsRsp
31601(
31602 WDI_ControlBlockType* pWDICtx,
31603 WDI_EventInfoType* pEventData
31604)
31605{
31606 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31607 tpHalfwStatsRspParams pHalFwstatsRsp;
31608 WDI_FWStatsResults fwStats;
31609
31610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31611
31612 /*-------------------------------------------------------------------------
31613 Sanity check
31614 -------------------------------------------------------------------------*/
31615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31616 ( NULL == pEventData->pEventData))
31617 {
31618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31619 "%s: Invalid parameters", __func__);
31620 WDI_ASSERT(0);
31621 return WDI_STATUS_E_FAILURE;
31622 }
31623 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31624 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31625
31626 if(pHalFwstatsRsp->length)
31627 {
31628 switch( pHalFwstatsRsp->type )
31629 {
31630 case FW_UBSP_STATS:
31631 {
31632 ubspFwStats *ubspStatsfromFw;
31633
31634 fwStats.type = pHalFwstatsRsp->type;
31635 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31636 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31637 ubspStatsfromFw->ubsp_enter_cnt;
31638 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31639 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31640 }
31641 break;
31642 default:
31643 {
31644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31645 "%s: No handling for stats type %d", __func__,
31646 pHalFwstatsRsp->type);
31647 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31648 NULL, pWDICtx->pRspCBUserData);
31649 return WDI_STATUS_E_FAILURE;
31650 }
31651 }
31652 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31653 }
31654 else
31655 {
31656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31657 "%s: Length = 0 for type %d return failure ", __func__,
31658 pHalFwstatsRsp->type);
31659 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31660 NULL, pWDICtx->pRspCBUserData);
31661 return WDI_STATUS_E_FAILURE;
31662 }
31663 return WDI_STATUS_SUCCESS;
31664}
31665
31666/*
31667 * FUNCTION: WDI_ProcessGetFwStatsReq
31668 * Request to WDI to get FW Stats.
31669 */
31670WDI_Status
31671 WDI_ProcessGetFwStatsReq
31672(
31673 WDI_ControlBlockType* pWDICtx,
31674 WDI_EventInfoType* pEventData
31675)
31676{
31677 wpt_uint8* pSendBuffer = NULL;
31678 wpt_uint16 usDataOffset = 0;
31679 wpt_uint16 usSendSize = 0;
31680 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31681 tHalfwStatsReqParams halFwStatsReq;
31682
31683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31684
31685 /*-------------------------------------------------------------------------
31686 Sanity check
31687 -------------------------------------------------------------------------*/
31688 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31689 ( NULL == pEventData->pCBfnc ) )
31690 {
31691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31692 "%s: Invalid parameters", __func__);
31693 WDI_ASSERT(0);
31694 return WDI_STATUS_E_FAILURE;
31695 }
31696
31697 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31698
31699 /*-----------------------------------------------------------------------
31700 Get message buffer
31701 -----------------------------------------------------------------------*/
31702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31703 pWDICtx, WDI_GET_FW_STATS_REQ,
31704 sizeof(tHalfwStatsReqParams),
31705 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31706 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31707 {
31708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31709 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31710 pEventData);
31711 WDI_ASSERT(0);
31712 return WDI_STATUS_E_FAILURE;
31713 }
31714
31715 pWDICtx->wdiReqStatusCB = NULL;
31716 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31717 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31718 wpalMemoryCopy( pSendBuffer+usDataOffset,
31719 &halFwStatsReq,
31720 sizeof(tHalfwStatsReqParams));
31721 /*-------------------------------------------------------------------------
31722 Send Get STA Request to HAL
31723 -------------------------------------------------------------------------*/
31724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31725 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31726}
31727
Sunil Duttbd736ed2014-05-26 21:19:41 +053031728#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31729
31730/**
31731 @brief WDI_LLStatsSetReq
31732 This API is called to set link layer stats request in FW
31733
31734 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31735 wdiLLStatsSetRspCb : set link layer stats resp callback
31736 usrData : Client context
31737 @see
31738 @return SUCCESS or FAIL
31739*/
31740WDI_Status
31741WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31742 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31743 void* pUserData)
31744{
31745 WDI_EventInfoType wdiEventData;
31746
31747 /*------------------------------------------------------------------------
31748 Sanity Check
31749 ------------------------------------------------------------------------*/
31750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31751 {
31752 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31753 "WDI API call before module is initialized - Fail request");
31754
31755 return WDI_STATUS_E_NOT_ALLOWED;
31756 }
31757
31758 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31759 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31760 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31761 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31762 wdiEventData.pUserData = pUserData;
31763
31764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31765}
31766
31767/**
31768 @brief WDI_ProcessLLStatsSetReq -
31769 Set Link Layer Stats request to FW
31770
31771 @param pWDICtx : wdi context
31772 pEventData : indication data
31773
31774 @see
31775 @return none
31776*/
31777WDI_Status
31778WDI_ProcessLLStatsSetReq
31779(
31780 WDI_ControlBlockType* pWDICtx,
31781 WDI_EventInfoType* pEventData
31782)
31783{
31784 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31785 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31786 wpt_uint8* pSendBuffer = NULL;
31787 wpt_uint16 usSendSize = 0;
31788 wpt_uint16 usDataOffset = 0;
31789 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31790
31791 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31792 ( NULL == pEventData->pCBfnc ))
31793 {
31794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31795 "%s: Invalid parameters", __func__);
31796 WDI_ASSERT(0);
31797 return WDI_STATUS_E_FAILURE;
31798 }
31799
31800 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31801 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31802
31803 /*-----------------------------------------------------------------------
31804 Get message buffer
31805 ! TO DO : proper conversion into the HAL Message Request Format
31806 -----------------------------------------------------------------------*/
31807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31808 pWDICtx,
31809 WDI_LL_STATS_SET_REQ,
31810 sizeof(tHalMacLlSetStatsReqParams),
31811 &pSendBuffer, &usDataOffset,
31812 &usSendSize))||
31813 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31814 {
31815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31816 "Unable to get send buffer in %s %p %p %p", __func__,
31817 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31818 WDI_ASSERT(0);
31819 return WDI_STATUS_E_FAILURE;
31820 }
31821
31822
Dino Mycled3d50022014-07-07 12:58:25 +053031823 /* Need to fill in the self STA Index */
31824 if ( WDI_STATUS_SUCCESS !=
31825 WDI_STATableFindStaidByAddr(pWDICtx,
31826 pwdiLLStatsSetReqParams->macAddr,
31827 &halLLStatsSetParams.sta_id))
31828 {
31829 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31830 MAC_ADDRESS_STR
31831 ": This station does not exist in the WDI Station Table",
31832 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31833
31834 wpalMemoryFree(pSendBuffer);
31835 return WDI_STATUS_E_FAILURE;
31836 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031837
31838 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031839 halLLStatsSetParams.mpdu_size_threshold =
31840 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31841 halLLStatsSetParams.aggressive_statistics_gathering =
31842 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31843
31844 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31845 " halLLStatsSetParams.req_id = %u",
31846 halLLStatsSetParams.req_id);
31847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31848 " halLLStatsSetParams.sta_id = %u",
31849 halLLStatsSetParams.sta_id);
31850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31851 " halLLStatsSetParams.mpdu_size_threshold = %u",
31852 halLLStatsSetParams.mpdu_size_threshold);
31853 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31854 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31855 halLLStatsSetParams.aggressive_statistics_gathering);
31856
31857 wpalMemoryCopy(pSendBuffer+usDataOffset,
31858 &halLLStatsSetParams,
31859 sizeof(halLLStatsSetParams));
31860
31861 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31862
31863 /*-------------------------------------------------------------------------
31864 Send Clear Link Layer Stats Request to HAL
31865 -------------------------------------------------------------------------*/
31866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31867 wdiLLStatsSetCb, pEventData->pUserData,
31868 WDI_LL_STATS_SET_RSP);
31869}
31870
31871/**
31872 @brief WDI_LLStatsGetReq
31873 This API is called to get link layer stats request in FW
31874
31875 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31876 wdiLLStatsGetRspCb : get link layer stats resp callback
31877 usrData : Client context
31878 @see
31879 @return SUCCESS or FAIL
31880*/
31881WDI_Status
31882WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31883 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31884 void* pUserData)
31885{
31886 WDI_EventInfoType wdiEventData;
31887
31888 /*------------------------------------------------------------------------
31889 Sanity Check
31890 ------------------------------------------------------------------------*/
31891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31892 {
31893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31894 "WDI API call before module is initialized - Fail request");
31895
31896 return WDI_STATUS_E_NOT_ALLOWED;
31897 }
31898
31899 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31900 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31901 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31902 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31903 wdiEventData.pUserData = pUserData;
31904
31905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31906}
31907
31908/**
31909 @brief WDI_ProcessLLStatsGetReq -
31910 Get Link Layer Stats request to FW
31911
31912 @param pWDICtx : wdi context
31913 pEventData : indication data
31914
31915 @see
31916 @return none
31917*/
31918WDI_Status
31919WDI_ProcessLLStatsGetReq
31920(
31921 WDI_ControlBlockType* pWDICtx,
31922 WDI_EventInfoType* pEventData
31923)
31924{
31925 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31926 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31927 wpt_uint8* pSendBuffer = NULL;
31928 wpt_uint16 usSendSize = 0;
31929 wpt_uint16 usDataOffset = 0;
31930 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31931
31932 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31933 ( NULL == pEventData->pCBfnc ))
31934 {
31935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31936 "%s: Invalid parameters", __func__);
31937 WDI_ASSERT(0);
31938 return WDI_STATUS_E_FAILURE;
31939 }
31940
31941 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31942 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31943
31944 /*-----------------------------------------------------------------------
31945 Get message buffer
31946 ! TO DO : proper conversion into the HAL Message Request Format
31947 -----------------------------------------------------------------------*/
31948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31949 pWDICtx,
31950 WDI_LL_STATS_GET_REQ,
31951 sizeof(tHalMacLlGetStatsReqParams),
31952 &pSendBuffer, &usDataOffset,
31953 &usSendSize))||
31954 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31955 {
31956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31957 "Unable to get send buffer in %s %p %p %p", __func__,
31958 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31959 WDI_ASSERT(0);
31960 return WDI_STATUS_E_FAILURE;
31961 }
Dino Mycled3d50022014-07-07 12:58:25 +053031962 /* Need to fill in the self STA Index */
31963 if ( WDI_STATUS_SUCCESS !=
31964 WDI_STATableFindStaidByAddr(pWDICtx,
31965 pwdiLLStatsGetReqParams->macAddr,
31966 &halLLStatsGetParams.sta_id))
31967 {
31968 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31969 MAC_ADDRESS_STR
31970 ": This station does not exist in the WDI Station Table",
31971 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31972
31973 wpalMemoryFree(pSendBuffer);
31974 return WDI_STATUS_E_FAILURE;
31975 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031976
31977 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031978 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31979
31980 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31981 " halLLStatsGetParams.req_id = %u",
31982 halLLStatsGetParams.req_id);
31983 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31984 " halLLStatsGetParams.staId = %u",
31985 halLLStatsGetParams.sta_id);
31986 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31987 " halLLStatsGetParams.Mask = %u",
31988 halLLStatsGetParams.param_id_mask);
31989
31990 wpalMemoryCopy(pSendBuffer+usDataOffset,
31991 &halLLStatsGetParams,
31992 sizeof(halLLStatsGetParams));
31993
31994 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31995
31996 /*-------------------------------------------------------------------------
31997 Send Clear Link Layer Stats Request to HAL
31998 -------------------------------------------------------------------------*/
31999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32000 wdiLLStatsGetCb, pEventData->pUserData,
32001 WDI_LL_STATS_GET_RSP);
32002}
32003
32004/**
32005 @brief WDI_LLStatsClearReq
32006 This API is called to clear link layer stats request in FW
32007
32008 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32009 wdiLLStatsSetRspCb : clear link layer stats resp callback
32010 usrData : Client context
32011 @see
32012 @return SUCCESS or FAIL
32013*/
32014WDI_Status
32015WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32016 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32017 void* pUserData)
32018{
32019 WDI_EventInfoType wdiEventData;
32020
32021 /*------------------------------------------------------------------------
32022 Sanity Check
32023 ------------------------------------------------------------------------*/
32024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32025 {
32026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32027 "WDI API call before module is initialized - Fail request");
32028
32029 return WDI_STATUS_E_NOT_ALLOWED;
32030 }
32031
32032 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32033 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32034 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32035 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32036 wdiEventData.pUserData = pUserData;
32037
32038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32039 "%s:%d Enter", __func__, __LINE__);
32040
32041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32042}
32043
32044/**
32045 @brief WDI_ProcessLLStatsClearReq -
32046 Clear Link Layer Stats request to FW
32047
32048 @param pWDICtx : wdi context
32049 pEventData : indication data
32050
32051 @see
32052 @return none
32053*/
32054WDI_Status
32055WDI_ProcessLLStatsClearReq
32056(
32057 WDI_ControlBlockType* pWDICtx,
32058 WDI_EventInfoType* pEventData
32059)
32060{
32061 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32062 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32063 wpt_uint8* pSendBuffer = NULL;
32064 wpt_uint16 usSendSize = 0;
32065 wpt_uint16 usDataOffset = 0;
32066 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32067
32068 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32069 ( NULL == pEventData->pCBfnc ))
32070 {
32071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32072 "%s: Invalid parameters", __func__);
32073 WDI_ASSERT(0);
32074 return WDI_STATUS_E_FAILURE;
32075 }
32076
32077 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32078 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32079
32080 /*-----------------------------------------------------------------------
32081 Get message buffer
32082 ! TO DO : proper conversion into the HAL Message Request Format
32083 -----------------------------------------------------------------------*/
32084 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32085 pWDICtx,
32086 WDI_LL_STATS_CLEAR_REQ,
32087 sizeof(tHalMacLlClearStatsReqParams),
32088 &pSendBuffer, &usDataOffset,
32089 &usSendSize))||
32090 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32091 {
32092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32093 "Unable to get send buffer in %s %p %p %p", __func__,
32094 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32095 WDI_ASSERT(0);
32096 return WDI_STATUS_E_FAILURE;
32097 }
Dino Mycled3d50022014-07-07 12:58:25 +053032098 /* Need to fill in the self STA Index */
32099 if ( WDI_STATUS_SUCCESS !=
32100 WDI_STATableFindStaidByAddr(pWDICtx,
32101 pwdiLLStatsClearReqParams->macAddr,
32102 &halLLStatsClearParams.sta_id))
32103 {
32104 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32105 MAC_ADDRESS_STR
32106 ": This station does not exist in the WDI Station Table",
32107 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32108
32109 wpalMemoryFree(pSendBuffer);
32110 return WDI_STATUS_E_FAILURE;
32111 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032112
32113 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032114 halLLStatsClearParams.stats_clear_req_mask =
32115 pwdiLLStatsClearReqParams->statsClearReqMask;
32116 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32117
32118 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32119 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32120 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32121 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32122 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32123 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32124 halLLStatsClearParams.stats_clear_req_mask);
32125 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32126 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32127
32128 wpalMemoryCopy(pSendBuffer+usDataOffset,
32129 &halLLStatsClearParams,
32130 sizeof(halLLStatsClearParams));
32131
32132 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32133
32134 /*-------------------------------------------------------------------------
32135 Send Clear Link Layer Stats Request to HAL
32136 -------------------------------------------------------------------------*/
32137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32138 wdiLLStatsClearCb, pEventData->pUserData,
32139 WDI_LL_STATS_CLEAR_RSP);
32140}
32141#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032142
Abhishek Singh85b74712014-10-08 11:38:19 +053032143WDI_Status WDI_FWStatsGetReq( void* pUserData,
32144 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32145 wpt_uint32 stats)
32146{
32147 WDI_EventInfoType wdiEventData;
32148
32149 /*------------------------------------------------------------------------
32150 Sanity Check
32151 ------------------------------------------------------------------------*/
32152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32153 {
32154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32155 "WDI API call before module is initialized - Fail request");
32156 return WDI_STATUS_E_NOT_ALLOWED;
32157 }
32158 /*------------------------------------------------------------------------
32159 Fill in Event data and post to the Main FSM
32160 ------------------------------------------------------------------------*/
32161 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32162 wdiEventData.pEventData = (void *)&stats;
32163 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32164 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32165 wdiEventData.pUserData = pUserData;
32166
32167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32168
32169}
32170
Katya Nigamf0511f62015-05-05 16:40:57 +053032171WDI_Status
32172WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32173 WDI_MonStartRspCb wdiMonStartRspCb,
32174 void* pUserData)
32175{
32176 WDI_EventInfoType wdiEventData;
32177
32178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32179 "%s", __func__);
32180
32181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32182 {
32183 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32184 "WDI API call before module is initialized - Fail request");
32185
32186 return WDI_STATUS_E_NOT_ALLOWED;
32187 }
32188
32189 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32190 wdiEventData.pEventData = pwdiMonStartReqParams;
32191 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32192 wdiEventData.pCBfnc = wdiMonStartRspCb;
32193 wdiEventData.pUserData = pUserData;
32194
32195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32196}
32197
32198WDI_Status
32199WDI_ProcessMonStartReq
32200(
32201 WDI_ControlBlockType* pWDICtx,
32202 WDI_EventInfoType* pEventData
32203)
32204{
32205 WDI_MonStartReqType* pwdiMonStartReqParams;
32206 WDI_MonStartRspCb wdiMonStartCb;
32207 wpt_uint8* pSendBuffer = NULL;
32208 wpt_uint16 usSendSize = 0;
32209 wpt_uint16 usDataOffset = 0;
32210 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32211
32212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32213 "%s", __func__);
32214
32215 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32216 ( NULL == pEventData->pCBfnc ))
32217 {
32218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32219 "%s: Invalid parameters", __func__);
32220 WDI_ASSERT(0);
32221 return WDI_STATUS_E_FAILURE;
32222 }
32223
32224 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32225 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32226
32227 /*-----------------------------------------------------------------------
32228 Get message buffer
32229 ! TO DO : proper conversion into the HAL Message Request Format
32230 -----------------------------------------------------------------------*/
32231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32232 pWDICtx,
32233 WDI_MON_START_REQ,
32234 sizeof(tHalEnableMonitorModeReqParams),
32235 &pSendBuffer, &usDataOffset,
32236 &usSendSize))||
32237 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32238 {
32239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32240 "Unable to get send buffer in %s %p %p %p", __func__,
32241 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32242 WDI_ASSERT(0);
32243 return WDI_STATUS_E_FAILURE;
32244 }
32245
32246 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32247 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32248 pwdiMonStartReqParams->ChannelBW);
32249 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32250 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32251 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32252 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32253 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32254 pwdiMonStartReqParams->mmFilters[0].macAddr,
32255 sizeof( wpt_macAddr ));
32256 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32257 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32258 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32259 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32260
32261 wpalMemoryCopy(pSendBuffer+usDataOffset,
32262 &halEnableMonitorModeParams,
32263 sizeof(halEnableMonitorModeParams));
32264
32265 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32266
32267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32268 wdiMonStartCb, pEventData->pUserData,
32269 WDI_MON_START_RSP);
32270}
32271
32272WDI_Status
32273WDI_ProcessMonStartRsp
32274(
32275 WDI_ControlBlockType* pWDICtx,
32276 WDI_EventInfoType* pEventData
32277)
32278{
32279 WDI_MonStartRspCb wdiMonStartRspCb;
32280
32281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32282 "%s: Enter ", __func__);
32283 /*-------------------------------------------------------------------------
32284 Sanity check
32285 -------------------------------------------------------------------------*/
32286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32287 ( NULL == pEventData->pEventData))
32288 {
32289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32290 "%s: Invalid parameters", __func__);
32291 WDI_ASSERT(0);
32292 return WDI_STATUS_E_FAILURE;
32293 }
32294
32295 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32296
32297 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32298
32299 return WDI_STATUS_SUCCESS;
32300}
32301
32302WDI_Status
32303WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32304 void* pUserData)
32305{
32306 WDI_EventInfoType wdiEventData;
32307
32308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32309 "%s", __func__);
32310
32311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32312 {
32313 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32314 "WDI API call before module is initialized - Fail request");
32315
32316 return WDI_STATUS_E_NOT_ALLOWED;
32317 }
32318
32319 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32320 wdiEventData.pEventData = NULL;
32321 wdiEventData.uEventDataSize = sizeof(NULL);
32322 wdiEventData.pCBfnc = wdiMonStopRspCb;
32323 wdiEventData.pUserData = pUserData;
32324
32325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32326}
32327
32328WDI_Status
32329WDI_ProcessMonStopReq
32330(
32331 WDI_ControlBlockType* pWDICtx,
32332 WDI_EventInfoType* pEventData
32333)
32334{
32335 WDI_MonStopRspCb wdiMonStopCb;
32336 wpt_uint8* pSendBuffer = NULL;
32337 wpt_uint16 usSendSize = 0;
32338 wpt_uint16 usDataOffset = 0;
32339 wpt_uint8 resetConfiguration;
32340
32341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32342 "%s", __func__);
32343
32344 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32345 {
32346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32347 "%s: Invalid parameters", __func__);
32348 WDI_ASSERT(0);
32349 return WDI_STATUS_E_FAILURE;
32350 }
32351
32352 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32353
32354 /*-----------------------------------------------------------------------
32355 Get message buffer
32356 ! TO DO : proper conversion into the HAL Message Request Format
32357 -----------------------------------------------------------------------*/
32358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32359 pWDICtx,
32360 WDI_MON_STOP_REQ,
32361 sizeof(wpt_uint8),
32362 &pSendBuffer, &usDataOffset,
32363 &usSendSize))||
32364 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32365 {
32366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32367 "Unable to get send buffer in %s %p %p", __func__,
32368 pEventData, wdiMonStopCb);
32369 WDI_ASSERT(0);
32370 return WDI_STATUS_E_FAILURE;
32371 }
32372
32373 wpalMemoryCopy(pSendBuffer+usDataOffset,
32374 &resetConfiguration,
32375 sizeof(wpt_uint8));
32376
32377 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32378
32379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32380 wdiMonStopCb, pEventData->pUserData,
32381 WDI_MON_STOP_RSP);
32382}
32383
32384WDI_Status
32385WDI_ProcessMonStopRsp
32386(
32387 WDI_ControlBlockType* pWDICtx,
32388 WDI_EventInfoType* pEventData
32389)
32390{
32391 WDI_MonStopRspCb wdiMonStopRspCb;
32392
32393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32394 "%s: Enter ", __func__);
32395 /*-------------------------------------------------------------------------
32396 Sanity check
32397 -------------------------------------------------------------------------*/
32398 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32399 {
32400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32401 "%s: Invalid parameters", __func__);
32402 WDI_ASSERT(0);
32403 return WDI_STATUS_E_FAILURE;
32404 }
32405
32406 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32407
32408 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32409
32410 return WDI_STATUS_SUCCESS;
32411}
32412
Dino Mycle41bdc942014-06-10 11:30:24 +053032413#ifdef WLAN_FEATURE_EXTSCAN
32414
32415/**
32416 @brief Process EXTSCAN BUffer full indication from FW
32417
32418 @param pWDICtx: pointer to the WLAN DAL context
32419 pEventData: pointer to the event information structure
32420
32421 @see
32422 @return Result of the function call
32423*/
32424WDI_Status
32425WDI_ProcessEXTScanProgressInd
32426(
32427 WDI_ControlBlockType* pWDICtx,
32428 WDI_EventInfoType* pEventData
32429)
32430{
32431 WDI_LowLevelIndType wdiInd;
32432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32433
32434 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32435 "%s: ", __func__);
32436
32437 /* sanity check */
32438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32439 ( NULL == pEventData->pEventData))
32440 {
32441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32442 "%s: Invalid parameters", __func__);
32443 WDI_ASSERT(0);
32444 return WDI_STATUS_E_FAILURE;
32445 }
32446
32447 /* Fill in the indication parameters */
32448 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32449
32450 /* extract response and send it to UMAC */
32451 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32452
32453 /* Notify UMAC */
32454 if (pWDICtx->wdiLowLevelIndCB)
32455 {
32456 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32457 }
32458 else
32459 {
Dino Mycled3d50022014-07-07 12:58:25 +053032460 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032461 "%s: WDILowLevelIndCb is null", __func__);
32462 WDI_ASSERT(0);
32463 return WDI_STATUS_E_FAILURE;
32464 }
32465 return WDI_STATUS_SUCCESS;
32466
32467} /* End of WDI_ProcessEXTScanProgressInd */
32468
32469
32470/**
32471 @brief Process EXTScan Scan Available indication from FW
32472
32473 @param pWDICtx: pointer to the WLAN DAL context
32474 pEventData: pointer to the event information structure
32475
32476 @see
32477 @return Result of the function call
32478*/
32479WDI_Status
32480WDI_ProcessEXTScanScanAvailableInd
32481(
32482 WDI_ControlBlockType* pWDICtx,
32483 WDI_EventInfoType* pEventData
32484)
32485{
32486 WDI_LowLevelIndType wdiInd;
32487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32488
32489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32490 "%s: ", __func__);
32491
32492 /* sanity check */
32493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32494 ( NULL == pEventData->pEventData))
32495 {
32496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32497 "%s: Invalid parameters", __func__);
32498 WDI_ASSERT(0);
32499 return WDI_STATUS_E_FAILURE;
32500 }
32501
32502
32503
32504 /* Fill in the indication parameters */
32505 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32506
32507 /* extract response and send it to UMAC */
32508 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32509
32510 /* Notify UMAC */
32511 if (pWDICtx->wdiLowLevelIndCB)
32512 {
32513 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32514 }
32515 else
32516 {
32517 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32518 "%s: WDILowLevelIndCb is null", __func__);
32519 WDI_ASSERT(0);
32520 return WDI_STATUS_E_FAILURE;
32521 }
32522 return WDI_STATUS_SUCCESS;
32523} /* End of WDI_ProcessEXTScanScanDoneInd */
32524
32525/**
32526 @brief Process EXTScan Result Indication indication from FW
32527
32528 @param pWDICtx: pointer to the WLAN DAL context
32529 pEventData: pointer to the event information structure
32530
32531 @see
32532 @return Result of the function call
32533*/
32534WDI_Status
32535WDI_ProcessEXTScanResultInd
32536(
32537 WDI_ControlBlockType* pWDICtx,
32538 WDI_EventInfoType* pEventData
32539)
32540{
32541 WDI_LowLevelIndType wdiInd;
32542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32543
32544 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32545 "%s: ", __func__);
32546
32547 /* sanity check */
32548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32549 ( NULL == pEventData->pEventData))
32550 {
32551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32552 "%s: Invalid parameters", __func__);
32553 WDI_ASSERT(0);
32554 return WDI_STATUS_E_FAILURE;
32555 }
32556
32557 /* Fill in the indication parameters */
32558 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32559
32560 /* extract response and send it to UMAC */
32561 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32562
32563 /* Notify UMAC */
32564 if (pWDICtx->wdiLowLevelIndCB)
32565 {
32566 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32567 }
32568 else
32569 {
32570 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32571 "%s: WDILowLevelIndCb is null", __func__);
32572 WDI_ASSERT(0);
32573 return WDI_STATUS_E_FAILURE;
32574 }
32575 return WDI_STATUS_SUCCESS;
32576} /* End of WDI_ProcessEXTScanResultInd */
32577
32578/**
32579 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32580
32581 @param pWDICtx: pointer to the WLAN DAL context
32582 pEventData: pointer to the event information structure
32583
32584 @see
32585 @return Result of the function call
32586*/
32587WDI_Status
32588WDI_ProcessEXTScanBssidHotListResultInd
32589(
32590 WDI_ControlBlockType* pWDICtx,
32591 WDI_EventInfoType* pEventData
32592)
32593{
32594 WDI_LowLevelIndType wdiInd;
32595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32596
32597 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32598 "%s: ", __func__);
32599
32600 /* sanity check */
32601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32602 ( NULL == pEventData->pEventData))
32603 {
32604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32605 "%s: Invalid parameters", __func__);
32606 WDI_ASSERT(0);
32607 return WDI_STATUS_E_FAILURE;
32608 }
32609
32610 /* Fill in the indication parameters */
32611 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32612
32613 /* extract response and send it to UMAC */
32614 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32615
32616 /* Notify UMAC */
32617 if (pWDICtx->wdiLowLevelIndCB)
32618 {
32619 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32620 }
32621 else
32622 {
32623 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32624 "%s: WDILowLevelIndCb is null", __func__);
32625 WDI_ASSERT(0);
32626 return WDI_STATUS_E_FAILURE;
32627 }
32628 return WDI_STATUS_SUCCESS;
32629} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32630
32631/**
32632 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32633
32634 @param pWDICtx: pointer to the WLAN DAL context
32635 pEventData: pointer to the event information structure
32636
32637 @see
32638 @return Result of the function call
32639*/
32640WDI_Status
32641WDI_ProcessEXTScanSignfRssiResultInd
32642(
32643 WDI_ControlBlockType* pWDICtx,
32644 WDI_EventInfoType* pEventData
32645)
32646{
32647 WDI_LowLevelIndType wdiInd;
32648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32649
32650 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32651 "%s: ", __func__);
32652
32653 /* sanity check */
32654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32655 ( NULL == pEventData->pEventData))
32656 {
32657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32658 "%s: Invalid parameters", __func__);
32659 WDI_ASSERT(0);
32660 return WDI_STATUS_E_FAILURE;
32661 }
32662
32663 /* Fill in the indication parameters */
32664 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32665
32666 /* extract response and send it to UMAC */
32667 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32668
32669 /* Notify UMAC */
32670 if (pWDICtx->wdiLowLevelIndCB)
32671 {
32672 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32673 }
32674 else
32675 {
32676 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32677 "%s: WDILowLevelIndCb is null", __func__);
32678 WDI_ASSERT(0);
32679 return WDI_STATUS_E_FAILURE;
32680 }
32681 return WDI_STATUS_SUCCESS;
32682} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32683
32684/**
32685 @brief WDI_EXTScanGetCapabilitiesReq
32686
32687 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32688 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32689 of the Req operation received from the device
32690 pUserData: user data will be passed back with the callback
32691
32692 @return SUCCESS or FAIL
32693*/
32694WDI_Status
32695WDI_EXTScanGetCapabilitiesReq(
32696 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32697 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32698 void* pUserData)
32699{
32700 WDI_EventInfoType wdiEventData;
32701
32702 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32703 "%s: %d ",__func__, __LINE__);
32704 /*------------------------------------------------------------------------
32705 Sanity Check
32706 ------------------------------------------------------------------------*/
32707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32708 {
32709 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32710 "WDI API call before module is initialized - Fail request");
32711
32712 return WDI_STATUS_E_NOT_ALLOWED;
32713 }
32714
32715 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32716 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32717 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32718 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32719 wdiEventData.pUserData = pUserData;
32720
32721 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32722}
32723
32724/**
32725 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32726 Extended Scan Get Capability request to FW
32727
32728 @param pWDICtx : wdi context
32729 pEventData : indication data
32730
32731 @see
32732 @return none
32733*/
32734WDI_Status
32735WDI_ProcessEXTScanGetCapabilitiesReq
32736(
32737 WDI_ControlBlockType* pWDICtx,
32738 WDI_EventInfoType* pEventData
32739)
32740{
32741 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32742 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32743 wpt_uint8* pSendBuffer = NULL;
32744 wpt_uint16 usSendSize = 0;
32745 wpt_uint16 usDataOffset = 0;
32746 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32747
32748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32749 "%s: %d Enter",__func__, __LINE__);
32750
32751 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32752 ( NULL == pEventData->pCBfnc ))
32753 {
32754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32755 "%s: Invalid parameters", __func__);
32756 WDI_ASSERT(0);
32757 return WDI_STATUS_E_FAILURE;
32758 }
32759
32760 pwdiEXTScanGetCapabilitiesReqParams =
32761 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32762 wdiEXTScanGetCapabilitiesRspCb =
32763 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32764
32765 /*-----------------------------------------------------------------------
32766 Get message buffer
32767 ! TO DO : proper conversion into the HAL Message Request Format
32768 -----------------------------------------------------------------------*/
32769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32770 pWDICtx,
32771 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32772 sizeof(halEXTScanGetCapReqParams),
32773 &pSendBuffer, &usDataOffset,
32774 &usSendSize))||
32775 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32776 {
32777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32778 "Unable to get send buffer in %s %p %p %p", __func__,
32779 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32780 wdiEXTScanGetCapabilitiesRspCb);
32781 WDI_ASSERT(0);
32782 return WDI_STATUS_E_FAILURE;
32783 }
32784
32785 halEXTScanGetCapReqParams.requestId =
32786 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32787 halEXTScanGetCapReqParams.sessionId =
32788 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32789
32790 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32791 " requestId %u "
32792 " sessionId %u ",
32793 halEXTScanGetCapReqParams.requestId,
32794 halEXTScanGetCapReqParams.sessionId);
32795
32796 wpalMemoryCopy(pSendBuffer+usDataOffset,
32797 &halEXTScanGetCapReqParams,
32798 sizeof(halEXTScanGetCapReqParams));
32799
32800 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32801
32802
32803 /*-------------------------------------------------------------------------
32804 Send EXTScan Stop Request to HAL
32805 -------------------------------------------------------------------------*/
32806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32807 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32808 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32809}
32810
32811/**
32812 @brief WDI_EXTScanGetCachedResultsReq
32813
32814 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32815 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32816 of the Req operation received from the device
32817 pUserData: user data will be passed back with the callback
32818
32819 @return SUCCESS or FAIL
32820*/
32821
32822WDI_Status
32823WDI_EXTScanGetCachedResultsReq(
32824 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32825 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32826 void* pUserData)
32827{
32828 WDI_EventInfoType wdiEventData;
32829
32830 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32831 "%s: %d Enter",__func__, __LINE__);
32832 /*------------------------------------------------------------------------
32833 Sanity Check
32834 ------------------------------------------------------------------------*/
32835 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32836 {
32837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32838 "WDI API call before module is initialized - Fail request");
32839
32840 return WDI_STATUS_E_NOT_ALLOWED;
32841 }
32842
32843 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32844 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32845 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32846 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32847 wdiEventData.pUserData = pUserData;
32848
32849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32850}
32851
32852/**
32853 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32854 Extended Scan Get Cached Result request to FW
32855
32856 @param pWDICtx : wdi context
32857 pEventData : indication data
32858
32859 @see
32860 @return none
32861*/
32862WDI_Status
32863WDI_ProcessEXTScanGetCachedResultsReq
32864(
32865 WDI_ControlBlockType* pWDICtx,
32866 WDI_EventInfoType* pEventData
32867)
32868{
32869 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32870 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32871 wpt_uint8* pSendBuffer = NULL;
32872 wpt_uint16 usSendSize = 0;
32873 wpt_uint16 usDataOffset = 0;
32874 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32875
32876 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32877 "%s: %d Enter",__func__, __LINE__);
32878
32879 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32880 ( NULL == pEventData->pCBfnc ))
32881 {
32882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32883 "%s: Invalid parameters", __func__);
32884 WDI_ASSERT(0);
32885 return WDI_STATUS_E_FAILURE;
32886 }
32887
32888 pwdiEXTScanGetCachedResultsReqParams =
32889 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32890 wdiEXTScanGetCachedResultsCb =
32891 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32892
32893 /*-----------------------------------------------------------------------
32894 Get message buffer
32895 ! TO DO : proper conversion into the HAL Message Request Format
32896 -----------------------------------------------------------------------*/
32897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32898 pWDICtx,
32899 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32900 sizeof(tHalExtScanGetScanReq),
32901 &pSendBuffer, &usDataOffset,
32902 &usSendSize))||
32903 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32904 {
32905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32906 "Unable to get send buffer in %s %p %p %p", __func__,
32907 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32908 wdiEXTScanGetCachedResultsCb);
32909 WDI_ASSERT(0);
32910 return WDI_STATUS_E_FAILURE;
32911 }
32912
32913 halEXTScanGetScanReqParams.requestId =
32914 pwdiEXTScanGetCachedResultsReqParams->requestId;
32915 halEXTScanGetScanReqParams.sessionId =
32916 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32917 halEXTScanGetScanReqParams.flush =
32918 pwdiEXTScanGetCachedResultsReqParams->flush;
32919
32920 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32921 " requestId %u "
32922 " sessionId %u "
32923 " flush %u ",
32924 halEXTScanGetScanReqParams.requestId,
32925 halEXTScanGetScanReqParams.sessionId,
32926 halEXTScanGetScanReqParams.flush);
32927
32928 wpalMemoryCopy(pSendBuffer+usDataOffset,
32929 &halEXTScanGetScanReqParams,
32930 sizeof(halEXTScanGetScanReqParams));
32931
32932 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32933
32934
32935 /*-------------------------------------------------------------------------
32936 Send EXTScan Stop Request to HAL
32937 -------------------------------------------------------------------------*/
32938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32939 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32940 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32941}
32942
32943/**
32944 @brief WDI_EXTScanStopReq
32945
32946 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32947 WDI_EXTScanStopRspCb: callback for passing back the response
32948 of the Req operation received from the device
32949 pUserData: user data will be passed back with the callback
32950
32951 @return SUCCESS or FAIL
32952*/
32953WDI_Status
32954WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32955 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32956 void* pUserData)
32957{
32958 WDI_EventInfoType wdiEventData;
32959
32960 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32961 "%s: %d ",__func__, __LINE__);
32962 /*------------------------------------------------------------------------
32963 Sanity Check
32964 ------------------------------------------------------------------------*/
32965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32966 {
32967 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32968 "WDI API call before module is initialized - Fail request");
32969
32970 return WDI_STATUS_E_NOT_ALLOWED;
32971 }
32972
32973 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32974 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32975 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32976 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32977 wdiEventData.pUserData = pUserData;
32978
32979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32980}
32981
32982/**
32983 @brief WDI_ProcessEXTScanStopReq -
32984 Extended Scan Stop request to FW
32985
32986 @param pWDICtx : wdi context
32987 pEventData : indication data
32988
32989 @see
32990 @return none
32991*/
32992WDI_Status
32993WDI_ProcessEXTScanStopReq
32994(
32995 WDI_ControlBlockType* pWDICtx,
32996 WDI_EventInfoType* pEventData
32997)
32998{
32999 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33000 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33001 wpt_uint8* pSendBuffer = NULL;
33002 wpt_uint16 usSendSize = 0;
33003 wpt_uint16 usDataOffset = 0;
33004 tHalExtScanStopReq halEXTScanStopReqParams;
33005
33006 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33007 "%s: %d ",__func__, __LINE__);
33008
33009 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33010 ( NULL == pEventData->pCBfnc ))
33011 {
33012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33013 "%s: Invalid parameters", __func__);
33014 WDI_ASSERT(0);
33015 return WDI_STATUS_E_FAILURE;
33016 }
33017
33018 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33019 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33020
33021 /*-----------------------------------------------------------------------
33022 Get message buffer
33023 ! TO DO : proper conversion into the HAL Message Request Format
33024 -----------------------------------------------------------------------*/
33025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33026 pWDICtx,
33027 WDI_EXTSCAN_STOP_REQ,
33028 sizeof(tHalExtScanStopReq),
33029 &pSendBuffer, &usDataOffset,
33030 &usSendSize))||
33031 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33032 {
33033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33034 "Unable to get send buffer in %s %p %p %p", __func__,
33035 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33036 WDI_ASSERT(0);
33037 return WDI_STATUS_E_FAILURE;
33038 }
33039
33040 halEXTScanStopReqParams.requestId =
33041 pwdiEXTScanStopReqParams->requestId;
33042 halEXTScanStopReqParams.sessionId =
33043 pwdiEXTScanStopReqParams->sessionId;
33044
33045 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33046 " halEXTScanStopReqParams.requestId %u "
33047 " halEXTScanStopReqParams.sessionId %u ",
33048 halEXTScanStopReqParams.requestId,
33049 halEXTScanStopReqParams.sessionId);
33050
33051 wpalMemoryCopy(pSendBuffer+usDataOffset,
33052 &halEXTScanStopReqParams,
33053 sizeof(halEXTScanStopReqParams));
33054
33055 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33056
33057
33058 /*-------------------------------------------------------------------------
33059 Send EXTScan Stop Request to HAL
33060 -------------------------------------------------------------------------*/
33061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33062 wdiEXTScanStopCb, pEventData->pUserData,
33063 WDI_EXTSCAN_STOP_RSP);
33064}
33065
33066/**
33067 @brief WDI_EXTScanStartReq
33068
33069 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33070 WDI_EXTScanStartRspCb: callback for passing back the response
33071 of the Req operation received from the device
33072 pUserData: user data will be passed back with the callback
33073
33074 @return SUCCESS or FAIL
33075*/
33076WDI_Status
33077WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33078 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33079 void* pUserData)
33080{
33081 WDI_EventInfoType wdiEventData;
33082
33083 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33084 "%s: %d Enter",__func__, __LINE__);
33085 /*------------------------------------------------------------------------
33086 Sanity Check
33087 ------------------------------------------------------------------------*/
33088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33089 {
33090 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33091 "WDI API call before module is initialized - Fail request");
33092
33093 return WDI_STATUS_E_NOT_ALLOWED;
33094 }
33095
33096 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33097 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33098 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33099 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33100 wdiEventData.pUserData = pUserData;
33101
33102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33103}
33104
33105/**
33106 @brief WDI_ProcessEXTScanStartReq -
33107 Extended Scan Start Request to FW
33108
33109 @param pWDICtx : wdi context
33110 pEventData : indication data
33111
33112 @see
33113 @return none
33114*/
33115WDI_Status
33116WDI_ProcessEXTScanStartReq
33117(
33118 WDI_ControlBlockType* pWDICtx,
33119 WDI_EventInfoType* pEventData
33120)
33121{
33122 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33123 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33124 wpt_uint8* pSendBuffer = NULL;
33125 wpt_uint16 usSendSize = 0;
33126 wpt_uint16 usDataOffset = 0;
33127 tpHalExtScanStartReq pHalExtScanStartReqParams;
33128 int i = 0;
33129 int j = 0;
33130
33131 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33132 "%s: %d Enter",__func__, __LINE__);
33133
33134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33135 ( NULL == pEventData->pCBfnc ))
33136 {
33137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33138 "%s: Invalid parameters", __func__);
33139 WDI_ASSERT(0);
33140 return WDI_STATUS_E_FAILURE;
33141 }
33142
33143 pwdiEXTScanStartReqParams =
33144 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33145 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33146
33147 /*-----------------------------------------------------------------------
33148 Get message buffer
33149 ! TO DO : proper conversion into the HAL Message Request Format
33150 -----------------------------------------------------------------------*/
33151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33152 pWDICtx,
33153 WDI_EXTSCAN_START_REQ,
33154 sizeof(tHalExtScanStartReq),
33155 &pSendBuffer, &usDataOffset,
33156 &usSendSize))||
33157 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33158 {
33159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33160 "Unable to get send buffer in %s %p %p %p", __func__,
33161 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33162 WDI_ASSERT(0);
33163 return WDI_STATUS_E_FAILURE;
33164 }
33165
33166 pHalExtScanStartReqParams =
33167 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33168
33169 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33170 pHalExtScanStartReqParams->maxApPerScan =
33171 pwdiEXTScanStartReqParams->maxAPperScan;
33172 pHalExtScanStartReqParams->reportThreshold =
33173 pwdiEXTScanStartReqParams->reportThreshold;
33174 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33175 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33176 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33177
33178 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33179 {
33180 pHalExtScanStartReqParams->bucketData[i].bucketId =
33181 pwdiEXTScanStartReqParams->buckets[i].bucket;
33182 pHalExtScanStartReqParams->bucketData[i].channelBand =
33183 pwdiEXTScanStartReqParams->buckets[i].band;
33184 pHalExtScanStartReqParams->bucketData[i].period =
33185 pwdiEXTScanStartReqParams->buckets[i].period;
33186 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33187 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33188 pHalExtScanStartReqParams->bucketData[i].numChannels =
33189 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33190
33191 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33192 {
33193 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33194 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33195 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33196 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33197 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33198 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33199 }
33200
33201 }
33202
33203
33204 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33205 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33206 " sessionId %u numBuckets%u ",
33207 pHalExtScanStartReqParams->basePeriod,
33208 pHalExtScanStartReqParams->maxApPerScan,
33209 pHalExtScanStartReqParams->reportThreshold,
33210 pHalExtScanStartReqParams->requestId,
33211 pHalExtScanStartReqParams->sessionId,
33212 pHalExtScanStartReqParams->numBuckets);
33213
33214 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33215 {
33216 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33217 " %d) bucketId %u channelBand %u period %u "
33218 " reportEvents %u numChannels %u ",i,
33219 pHalExtScanStartReqParams->bucketData[i].bucketId,
33220 pHalExtScanStartReqParams->bucketData[i].channelBand,
33221 pHalExtScanStartReqParams->bucketData[i].period,
33222 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33223 pHalExtScanStartReqParams->bucketData[i].numChannels);
33224
33225 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33226 {
33227 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33228 "%d) channel %u dwellTimeMs %u passive %u ",j,
33229 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33230 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33231 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33232 }
33233
33234 }
33235
Dino Mycle41bdc942014-06-10 11:30:24 +053033236 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33237
33238 /*-------------------------------------------------------------------------
33239 Send EXTSCAN Start Request to HAL
33240 -------------------------------------------------------------------------*/
33241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33242 wdiEXTScanStartCb, pEventData->pUserData,
33243 WDI_EXTSCAN_START_RSP);
33244}
33245
33246/**
33247 @brief WDI_EXTScanSetBSSIDHotlistReq
33248
33249 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33250 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33251 of the Req operation received from the device
33252 pUserData: user data will be passed back with the callback
33253
33254 @return SUCCESS or FAIL
33255*/
33256WDI_Status
33257WDI_EXTScanSetBSSIDHotlistReq(
33258 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33259 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33260 void* pUserData)
33261{
33262 WDI_EventInfoType wdiEventData;
33263
33264 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33265 "%s: %d Enter ",__func__, __LINE__);
33266 /*------------------------------------------------------------------------
33267 Sanity Check
33268 ------------------------------------------------------------------------*/
33269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33270 {
33271 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33272 "WDI API call before module is initialized - Fail request");
33273
33274 return WDI_STATUS_E_NOT_ALLOWED;
33275 }
33276
33277 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33278 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33279 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33280 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33281 wdiEventData.pUserData = pUserData;
33282
33283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33284}
33285
33286/**
33287 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33288 Extended Scan Set BSSSID Hotlist Request to FW
33289
33290 @param pWDICtx : wdi context
33291 pEventData : indication data
33292
33293 @see
33294 @return none
33295*/
33296WDI_Status
33297WDI_ProcessEXTScanSetBSSIDHotlistReq
33298(
33299 WDI_ControlBlockType* pWDICtx,
33300 WDI_EventInfoType* pEventData
33301)
33302{
33303 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33304 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33305 wpt_uint8* pSendBuffer = NULL;
33306 wpt_uint16 usSendSize = 0;
33307 wpt_uint16 usDataOffset = 0;
33308 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33309 int i;
33310
33311 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33312 "%s: %d Enter",__func__, __LINE__);
33313
33314 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33315 ( NULL == pEventData->pCBfnc ))
33316 {
33317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33318 "%s: Invalid parameters", __func__);
33319 WDI_ASSERT(0);
33320 return WDI_STATUS_E_FAILURE;
33321 }
33322
33323 pwdiEXTScanSetBSSIDHotlistReqParams =
33324 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33325 wdiEXTScanSetBSSIDHotlistRspCb =
33326 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33327
33328 /*-----------------------------------------------------------------------
33329 Get message buffer
33330 ! TO DO : proper conversion into the HAL Message Request Format
33331 -----------------------------------------------------------------------*/
33332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33333 pWDICtx,
33334 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33335 sizeof(tHalBssidHotlistSetReq),
33336 &pSendBuffer, &usDataOffset,
33337 &usSendSize))||
33338 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33339 {
33340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33341 "Unable to get send buffer in %s %p %p %p", __func__,
33342 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33343 wdiEXTScanSetBSSIDHotlistRspCb);
33344 WDI_ASSERT(0);
33345 return WDI_STATUS_E_FAILURE;
33346 }
33347 pHalBssidHotlistSetReqParams =
33348 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33349
33350 pHalBssidHotlistSetReqParams->requestId =
33351 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33352
33353 pHalBssidHotlistSetReqParams->sessionId =
33354 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33355
33356 pHalBssidHotlistSetReqParams->numAp =
33357 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33358
33359 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33360
33361 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33362 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33363 WDI_MAC_ADDR_LEN);
33364
33365 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33366 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33367
33368 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33369 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33370
33371 pHalBssidHotlistSetReqParams->ap[i].channel =
33372 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33373
33374 }
33375
33376 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33377 "ReqID %u sessionId %u numAp %u ",
33378 pHalBssidHotlistSetReqParams->requestId,
33379 pHalBssidHotlistSetReqParams->sessionId,
33380 pHalBssidHotlistSetReqParams->numAp);
33381
33382 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33383
33384 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33385 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33386 __func__, __LINE__, i,
33387 pHalBssidHotlistSetReqParams->ap[i].bssid,
33388 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33389 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33390 pHalBssidHotlistSetReqParams->ap[i].channel);
33391
33392 }
33393
33394 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33395
33396
33397 /*-------------------------------------------------------------------------
33398 Send EXTScan Stop Request to HAL
33399 -------------------------------------------------------------------------*/
33400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33401 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33402 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33403}
33404
33405/**
33406 @brief WDI_EXTScanResetBSSIDHotlistReq
33407
33408 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33409 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33410 of the Req operation received from the device
33411 pUserData: user data will be passed back with the callback
33412
33413 @return SUCCESS or FAIL
33414*/
33415WDI_Status
33416WDI_EXTScanResetBSSIDHotlistReq(
33417 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33418 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33419 void* pUserData)
33420{
33421 WDI_EventInfoType wdiEventData;
33422
33423 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33424 "%s: %d",__func__, __LINE__);
33425 /*------------------------------------------------------------------------
33426 Sanity Check
33427 ------------------------------------------------------------------------*/
33428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33429 {
33430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33431 "WDI API call before module is initialized - Fail request");
33432
33433 return WDI_STATUS_E_NOT_ALLOWED;
33434 }
33435
33436 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33437 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33438 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33439 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33440 wdiEventData.pUserData = pUserData;
33441
33442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33443}
33444
33445/**
33446 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33447 Extended Scan reset BSSID hotlist Request to FW
33448
33449 @param pWDICtx : wdi context
33450 pEventData : indication data
33451
33452 @see
33453 @return none
33454*/
33455WDI_Status
33456WDI_ProcessEXTScanResetBSSIDHotlistReq
33457(
33458 WDI_ControlBlockType* pWDICtx,
33459 WDI_EventInfoType* pEventData
33460)
33461{
33462 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33463 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33464 wpt_uint8* pSendBuffer = NULL;
33465 wpt_uint16 usSendSize = 0;
33466 wpt_uint16 usDataOffset = 0;
33467 tpHalHotlistResetReq pHalHotlistResetReqParams;
33468
33469 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33470 "%s: %d",__func__, __LINE__);
33471
33472 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33473 ( NULL == pEventData->pCBfnc ))
33474 {
33475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33476 "%s: Invalid parameters", __func__);
33477 WDI_ASSERT(0);
33478 return WDI_STATUS_E_FAILURE;
33479 }
33480
33481 pwdiEXTScanResetBSSIDHotlistReqParams =
33482 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33483 wdiEXTScanResetBSSIDHotlistRspCb =
33484 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33485
33486 /*-----------------------------------------------------------------------
33487 Get message buffer
33488 ! TO DO : proper conversion into the HAL Message Request Format
33489 -----------------------------------------------------------------------*/
33490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33491 pWDICtx,
33492 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33493 sizeof(tHalHotlistResetReq),
33494 &pSendBuffer, &usDataOffset,
33495 &usSendSize))||
33496 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33497 {
33498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33499 "Unable to get send buffer in %s %p %p %p", __func__,
33500 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33501 wdiEXTScanResetBSSIDHotlistRspCb);
33502 WDI_ASSERT(0);
33503 return WDI_STATUS_E_FAILURE;
33504 }
33505 pHalHotlistResetReqParams =
33506 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33507
33508 pHalHotlistResetReqParams->requestId =
33509 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33510
33511 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33512
33513 /*-------------------------------------------------------------------------
33514 Send EXTScan Stop Request to HAL
33515 -------------------------------------------------------------------------*/
33516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33517 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33518 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33519}
33520
33521/**
33522 @brief WDI_EXTScanSetSignfRSSIChangeReq
33523
33524 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33525 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33526 of the Req operation received from the device
33527 pUserData: user data will be passed back with the callback
33528
33529 @return SUCCESS or FAIL
33530*/
33531WDI_Status
33532WDI_EXTScanSetSignfRSSIChangeReq(
33533 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33534 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33535 void* pUserData)
33536{
33537 WDI_EventInfoType wdiEventData;
33538
33539 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33540 "%s: %d ",__func__, __LINE__);
33541 /*------------------------------------------------------------------------
33542 Sanity Check
33543 ------------------------------------------------------------------------*/
33544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33545 {
33546 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33547 "WDI API call before module is initialized - Fail request");
33548
33549 return WDI_STATUS_E_NOT_ALLOWED;
33550 }
33551
33552 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33553 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33554 wdiEventData.uEventDataSize =
33555 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33556 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33557 wdiEventData.pUserData = pUserData;
33558
33559 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33560}
33561
33562/**
33563 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33564 Extended Scan set Significant RSSI change Request to FW
33565
33566 @param pWDICtx : wdi context
33567 pEventData : indication data
33568
33569 @see
33570 @return none
33571*/
33572WDI_Status
33573WDI_ProcessEXTScanSetSignifRSSIChangeReq
33574(
33575 WDI_ControlBlockType* pWDICtx,
33576 WDI_EventInfoType* pEventData
33577)
33578{
33579 WDI_EXTScanSetSignfRSSIChangeReqParams*
33580 pwdiEXTScanSetSignfRSSIChangeReqParams;
33581 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33582 wpt_uint8* pSendBuffer = NULL;
33583 wpt_uint16 usSendSize = 0;
33584 wpt_uint16 usDataOffset = 0;
33585 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33586 int i;
33587
33588 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33589 "%s: %d Enter",__func__, __LINE__);
33590
33591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33592 ( NULL == pEventData->pCBfnc ))
33593 {
33594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33595 "%s: Invalid parameters", __func__);
33596 WDI_ASSERT(0);
33597 return WDI_STATUS_E_FAILURE;
33598 }
33599
33600 pwdiEXTScanSetSignfRSSIChangeReqParams =
33601 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33602 wdiEXTScanSetSignfRSSIChangeRspCb =
33603 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33604
33605 /*-----------------------------------------------------------------------
33606 Get message buffer
33607 ! TO DO : proper conversion into the HAL Message Request Format
33608 -----------------------------------------------------------------------*/
33609 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33610 pWDICtx,
33611 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33612 sizeof(tHalSigRssiSetReq),
33613 &pSendBuffer, &usDataOffset,
33614 &usSendSize))||
33615 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33616 {
33617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33618 "Unable to get send buffer in %s %p %p %p", __func__,
33619 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33620 wdiEXTScanSetSignfRSSIChangeRspCb);
33621 WDI_ASSERT(0);
33622 return WDI_STATUS_E_FAILURE;
33623 }
33624
33625 pHalSigRssiSetReqParams =
33626 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33627
33628 pHalSigRssiSetReqParams->requestId =
33629 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33630 pHalSigRssiSetReqParams->sessionId =
33631 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33632 pHalSigRssiSetReqParams->rssiSampleSize =
33633 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33634 pHalSigRssiSetReqParams->lostApSampleSize =
33635 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33636 pHalSigRssiSetReqParams->minBreaching =
33637 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33638 pHalSigRssiSetReqParams->numAp =
33639 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33640
33641
33642 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33643
33644 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33645 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33646 WDI_MAC_ADDR_LEN);
33647
33648 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33649 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33650
33651 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33652 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33653
33654 pHalSigRssiSetReqParams->ap[i].channel =
33655 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33656
33657 }
33658
33659
33660 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33661 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33662 " minBreaching %u numAp %u ",
33663 pHalSigRssiSetReqParams->requestId,
33664 pHalSigRssiSetReqParams->sessionId,
33665 pHalSigRssiSetReqParams->rssiSampleSize,
33666 pHalSigRssiSetReqParams->lostApSampleSize,
33667 pHalSigRssiSetReqParams->minBreaching,
33668 pHalSigRssiSetReqParams->numAp);
33669
33670 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33671
33672 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33673 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33674 i,
33675 pHalSigRssiSetReqParams->ap[i].bssid,
33676 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33677 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33678 pHalSigRssiSetReqParams->ap[i].channel);
33679
33680 }
33681
33682 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33683
33684
33685 /*-------------------------------------------------------------------------
33686 Send EXTScan Stop Request to HAL
33687 -------------------------------------------------------------------------*/
33688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33689 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33690 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33691}
33692
33693/**
33694 @brief WDI_EXTScanResetSignfRSSIChangeReq
33695
33696 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33697 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33698 of the Req operation received from the device
33699 pUserData: user data will be passed back with the callback
33700
33701 @return SUCCESS or FAIL
33702*/
33703WDI_Status
33704WDI_EXTScanResetSignfRSSIChangeReq(
33705 WDI_EXTScanResetSignfRSSIChangeReqParams*
33706 pwdiEXTScanResetSignfRSSIChangeReqParams,
33707 WDI_EXTScanResetSignfRSSIChangeRspCb
33708 wdiEXTScanResetSignfRSSIChangeRspCb,
33709 void* pUserData)
33710{
33711 WDI_EventInfoType wdiEventData;
33712
33713 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33714 "%s: %d ",__func__, __LINE__);
33715 /*------------------------------------------------------------------------
33716 Sanity Check
33717 ------------------------------------------------------------------------*/
33718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33719 {
33720 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33721 "WDI API call before module is initialized - Fail request");
33722
33723 return WDI_STATUS_E_NOT_ALLOWED;
33724 }
33725
33726 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33727 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33728 wdiEventData.uEventDataSize =
33729 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33730 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33731 wdiEventData.pUserData = pUserData;
33732
33733 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33734}
33735
33736/**
33737 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33738 Extended Scana reset Significant RSSI change Request to FW
33739
33740 @param pWDICtx : wdi context
33741 pEventData : indication data
33742
33743 @see
33744 @return none
33745*/
33746WDI_Status
33747WDI_ProcessEXTScanResetSignfRSSIChangeReq
33748(
33749 WDI_ControlBlockType* pWDICtx,
33750 WDI_EventInfoType* pEventData
33751)
33752{
33753 WDI_EXTScanResetSignfRSSIChangeReqParams*
33754 pwdiEXTScanResetSignfRSSIChangeReqParams;
33755 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33756 wpt_uint8* pSendBuffer = NULL;
33757 wpt_uint16 usSendSize = 0;
33758 wpt_uint16 usDataOffset = 0;
33759 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33760
33761 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33762 "%s: %d ",__func__, __LINE__);
33763
33764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33765 ( NULL == pEventData->pCBfnc ))
33766 {
33767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33768 "%s: Invalid parameters", __func__);
33769 WDI_ASSERT(0);
33770 return WDI_STATUS_E_FAILURE;
33771 }
33772
33773 pwdiEXTScanResetSignfRSSIChangeReqParams =
33774 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33775 wdiEXTScanResetSignfRSSIChangeRspCb =
33776 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33777
33778 /*-----------------------------------------------------------------------
33779 Get message buffer
33780 ! TO DO : proper conversion into the HAL Message Request Format
33781 -----------------------------------------------------------------------*/
33782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33783 pWDICtx,
33784 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33785 sizeof(tHalSigRssiResetReq),
33786 &pSendBuffer, &usDataOffset,
33787 &usSendSize))||
33788 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33789 {
33790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33791 "Unable to get send buffer in %s %p %p %p", __func__,
33792 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33793 wdiEXTScanResetSignfRSSIChangeRspCb);
33794 WDI_ASSERT(0);
33795 return WDI_STATUS_E_FAILURE;
33796 }
33797 pHalSigRssiResetReqParams =
33798 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33799
33800 pHalSigRssiResetReqParams->requestId =
33801 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33802
33803 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33804
33805
33806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33807 wdiEXTScanResetSignfRSSIChangeRspCb,
33808 pEventData->pUserData,
33809 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33810}
33811
33812/**
33813 @brief Process Extended Scan Start Rsp function (called when a response
33814 is being received over the bus from HAL)
33815
33816 @param pWDICtx: pointer to the WLAN DAL context
33817 pEventData: pointer to the event information structure
33818
33819 @see
33820 @return Result of the function call
33821*/
33822WDI_Status
33823WDI_ProcessEXTScanStartRsp
33824(
33825 WDI_ControlBlockType* pWDICtx,
33826 WDI_EventInfoType* pEventData
33827)
33828{
33829 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33830
33831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33832 "%s: %d",__func__, __LINE__);
33833 /*-------------------------------------------------------------------------
33834 Sanity check
33835 -------------------------------------------------------------------------*/
33836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33837 ( NULL == pEventData->pEventData))
33838 {
33839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33840 "%s: Invalid parameters", __func__);
33841 WDI_ASSERT(0);
33842 return WDI_STATUS_E_FAILURE;
33843 }
33844
33845 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33846 if ( NULL == wdiEXTScanStartRspCb)
33847 {
33848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33849 "%s: Callback function Invalid", __func__);
33850 WDI_ASSERT(0);
33851 return WDI_STATUS_E_FAILURE;
33852 }
33853
33854 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33855
33856 return WDI_STATUS_SUCCESS;
33857}
33858
33859
33860/**
33861 @brief Process Extended Scan Stop Rsp function (called when a response
33862 is being received over the bus from HAL)
33863
33864 @param pWDICtx: pointer to the WLAN DAL context
33865 pEventData: pointer to the event information structure
33866
33867 @see
33868 @return Result of the function call
33869*/
33870WDI_Status
33871WDI_ProcessEXTScanStopRsp
33872(
33873 WDI_ControlBlockType* pWDICtx,
33874 WDI_EventInfoType* pEventData
33875)
33876{
33877 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33878
33879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33880 "%s: %d",__func__, __LINE__);
33881
33882
33883 /*-------------------------------------------------------------------------
33884 Sanity check
33885 -------------------------------------------------------------------------*/
33886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33887 ( NULL == pEventData->pEventData))
33888 {
33889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33890 "%s: Invalid parameters", __func__);
33891 WDI_ASSERT(0);
33892 return WDI_STATUS_E_FAILURE;
33893 }
33894
33895 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33896 if ( NULL == wdiEXTScanStopRspCb)
33897 {
33898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33899 "%s: Callback function Invalid", __func__);
33900 WDI_ASSERT(0);
33901 return WDI_STATUS_E_FAILURE;
33902 }
33903
33904 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33905
33906 return WDI_STATUS_SUCCESS;
33907}
33908
33909/**
33910 @brief Process Extended Scan Get Cached Rsp function (called when a response
33911 is being received over the bus from HAL)
33912
33913 @param pWDICtx: pointer to the WLAN DAL context
33914 pEventData: pointer to the event information structure
33915
33916 @see
33917 @return Result of the function call
33918*/
33919WDI_Status
33920WDI_ProcessEXTScanGetCachedResultsRsp
33921(
33922 WDI_ControlBlockType* pWDICtx,
33923 WDI_EventInfoType* pEventData
33924)
33925{
33926 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33927
33928 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33929 "%s: %d Enter",__func__, __LINE__);
33930
33931
33932 /*-------------------------------------------------------------------------
33933 Sanity check
33934 -------------------------------------------------------------------------*/
33935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33936 ( NULL == pEventData->pEventData))
33937 {
33938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33939 "%s: Invalid parameters", __func__);
33940 WDI_ASSERT(0);
33941 return WDI_STATUS_E_FAILURE;
33942 }
33943
33944 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33945 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33946 {
33947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33948 "%s: Callback function Invalid", __func__);
33949 WDI_ASSERT(0);
33950 return WDI_STATUS_E_FAILURE;
33951 }
33952
33953 wdiEXTScanGetCachedResultsRspCb(
33954 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33955
33956 return WDI_STATUS_SUCCESS;
33957}
33958
33959/**
33960 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33961 is being received over the bus from HAL)
33962
33963 @param pWDICtx: pointer to the WLAN DAL context
33964 pEventData: pointer to the event information structure
33965
33966 @see
33967 @return Result of the function call
33968*/
33969WDI_Status
33970WDI_ProcessEXTScanGetCapabilitiesRsp
33971(
33972 WDI_ControlBlockType* pWDICtx,
33973 WDI_EventInfoType* pEventData
33974)
33975{
33976 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33977
33978 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33979 "%s: %d ",__func__, __LINE__);
33980
33981
33982 /*-------------------------------------------------------------------------
33983 Sanity check
33984 -------------------------------------------------------------------------*/
33985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33986 ( NULL == pEventData->pEventData))
33987 {
33988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33989 "%s: Invalid parameters", __func__);
33990 WDI_ASSERT(0);
33991 return WDI_STATUS_E_FAILURE;
33992 }
33993
33994 wdiEXTScanGetCapabilitiesRspCb =
33995 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33996 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33997 {
33998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33999 "%s: Callback function Invalid", __func__);
34000 WDI_ASSERT(0);
34001 return WDI_STATUS_E_FAILURE;
34002 }
34003
34004 wdiEXTScanGetCapabilitiesRspCb(
34005 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34006
34007 return WDI_STATUS_SUCCESS;
34008}
34009
34010/**
34011 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34012 response is being received over the bus from HAL)
34013
34014 @param pWDICtx: pointer to the WLAN DAL context
34015 pEventData: pointer to the event information structure
34016
34017 @see
34018 @return Result of the function call
34019*/
34020WDI_Status
34021WDI_ProcessEXTScanSetHotlistBSSIDRsp
34022(
34023 WDI_ControlBlockType* pWDICtx,
34024 WDI_EventInfoType* pEventData
34025)
34026{
34027 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34028
34029 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34030 "%s: %d ",__func__, __LINE__);
34031
34032
34033 /*-------------------------------------------------------------------------
34034 Sanity check
34035 -------------------------------------------------------------------------*/
34036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34037 ( NULL == pEventData->pEventData))
34038 {
34039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34040 "%s: Invalid parameters", __func__);
34041 WDI_ASSERT(0);
34042 return WDI_STATUS_E_FAILURE;
34043 }
34044
34045 wdiEXTScanSetBSSIDHotlistRspCb =
34046 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34047 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34048 {
34049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34050 "%s: Callback function Invalid", __func__);
34051 WDI_ASSERT(0);
34052 return WDI_STATUS_E_FAILURE;
34053 }
34054
34055 wdiEXTScanSetBSSIDHotlistRspCb(
34056 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34057
34058 return WDI_STATUS_SUCCESS;
34059}
34060
34061/**
34062 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34063 when a response is being received over the bus from HAL)
34064
34065 @param pWDICtx: pointer to the WLAN DAL context
34066 pEventData: pointer to the event information structure
34067
34068 @see
34069 @return Result of the function call
34070*/
34071WDI_Status
34072WDI_ProcessEXTScanResetHotlistBSSIDRsp
34073(
34074 WDI_ControlBlockType* pWDICtx,
34075 WDI_EventInfoType* pEventData
34076)
34077{
34078 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34079
34080 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34081 "%s: %d ",__func__, __LINE__);
34082
34083
34084 /*-------------------------------------------------------------------------
34085 Sanity check
34086 -------------------------------------------------------------------------*/
34087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34088 ( NULL == pEventData->pEventData))
34089 {
34090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34091 "%s: Invalid parameters", __func__);
34092 WDI_ASSERT(0);
34093 return WDI_STATUS_E_FAILURE;
34094 }
34095
34096 wdiEXTScanResetBSSIDHotlistRspCb =
34097 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34098 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34099 {
34100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34101 "%s: Callback function Invalid", __func__);
34102 WDI_ASSERT(0);
34103 return WDI_STATUS_E_FAILURE;
34104 }
34105
34106 wdiEXTScanResetBSSIDHotlistRspCb(
34107 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34108
34109 return WDI_STATUS_SUCCESS;
34110}
34111
34112/**
34113 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34114 when a response is being received over the bus from HAL)
34115
34116 @param pWDICtx: pointer to the WLAN DAL context
34117 pEventData: pointer to the event information structure
34118
34119 @see
34120 @return Result of the function call
34121*/
34122WDI_Status
34123WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34124(
34125 WDI_ControlBlockType* pWDICtx,
34126 WDI_EventInfoType* pEventData
34127)
34128{
34129 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34130
34131 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34132 "%s: %d",__func__, __LINE__);
34133
34134
34135 /*-------------------------------------------------------------------------
34136 Sanity check
34137 -------------------------------------------------------------------------*/
34138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34139 ( NULL == pEventData->pEventData))
34140 {
34141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34142 "%s: Invalid parameters", __func__);
34143 WDI_ASSERT(0);
34144 return WDI_STATUS_E_FAILURE;
34145 }
34146
34147 wdiEXTScanSetSignfRSSIChangeRspCb =
34148 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34149 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34150 {
34151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34152 "%s: Callback function Invalid", __func__);
34153 WDI_ASSERT(0);
34154 return WDI_STATUS_E_FAILURE;
34155 }
34156
34157 wdiEXTScanSetSignfRSSIChangeRspCb(
34158 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34159
34160 return WDI_STATUS_SUCCESS;
34161}
34162
34163/**
34164 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34165 (called when a response is being received over the bus from HAL)
34166
34167 @param pWDICtx: pointer to the WLAN DAL context
34168 pEventData: pointer to the event information structure
34169
34170 @see
34171 @return Result of the function call
34172*/
34173WDI_Status
34174WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34175(
34176 WDI_ControlBlockType* pWDICtx,
34177 WDI_EventInfoType* pEventData
34178)
34179{
34180 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34181
34182 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34183 "%s: %d Enter",__func__, __LINE__);
34184
34185
34186 /*-------------------------------------------------------------------------
34187 Sanity check
34188 -------------------------------------------------------------------------*/
34189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34190 ( NULL == pEventData->pEventData))
34191 {
34192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34193 "%s: Invalid parameters", __func__);
34194 WDI_ASSERT(0);
34195 return WDI_STATUS_E_FAILURE;
34196 }
34197
34198 wdiEXTScanResetSignfRSSIChangeRspCb =
34199 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34200 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34201 {
34202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34203 "%s: Callback function Invalid", __func__);
34204 WDI_ASSERT(0);
34205 return WDI_STATUS_E_FAILURE;
34206 }
34207
34208 wdiEXTScanResetSignfRSSIChangeRspCb(
34209 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34210
34211 return WDI_STATUS_SUCCESS;
34212}
34213#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034214
34215/**
34216 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34217
34218 @param None
34219
34220 @see
34221
34222 @return Status of the request
34223*/
34224WDI_Status
34225WDI_SetSpoofMacAddrReq
34226(
34227 WDI_SpoofMacAddrInfoType* pWdiReq,
34228 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34229 void* pUserData)
34230{
34231 WDI_EventInfoType wdiEventData;
34232
34233 /*-------------------------------------------------------------------------
34234 Sanity Check
34235 ------------------------------------------------------------------------*/
34236 if (eWLAN_PAL_FALSE == gWDIInitialized)
34237 {
34238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34239 "WDI API call before module is initialized - Fail request!");
34240
34241 return WDI_STATUS_E_NOT_ALLOWED;
34242 }
34243
34244 /*-------------------------------------------------------------------------
34245 Fill in Event data and post to the Main FSM
34246 ------------------------------------------------------------------------*/
34247 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34248 wdiEventData.pEventData = pWdiReq;
34249 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34250 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34251 wdiEventData.pUserData = pUserData;
34252
34253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34254}
34255
34256/**
34257 @brief Process SpoofMacAddr Request
34258
34259 @param pWDICtx: pointer to the WLAN DAL context
34260 pEventData: pointer to the event information structure
34261
34262 @see
34263 @return Result of the function call
34264*/
34265WDI_Status
34266WDI_ProcessSpoofMacAddrReq
34267(
34268 WDI_ControlBlockType* pWDICtx,
34269 WDI_EventInfoType* pEventData
34270)
34271{
34272 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34273 wpt_uint8* pSendBuffer = NULL;
34274 wpt_uint16 usDataOffset = 0;
34275 wpt_uint16 usSendSize = 0;
34276 WDI_Status wdiStatus;
34277 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34278 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34279
34280
34281 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34282 "%s: %d Enter",__func__, __LINE__);
34283
34284 /*-------------------------------------------------------------------------
34285 Sanity check
34286 -------------------------------------------------------------------------*/
34287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34288 ( NULL == pEventData->pEventData))
34289 {
34290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34291 "%s: Invalid parameters", __func__);
34292 WDI_ASSERT(0);
34293 return WDI_STATUS_E_FAILURE;
34294 }
34295 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34296
34297 /*-----------------------------------------------------------------------
34298 Get message buffer
34299 -----------------------------------------------------------------------*/
34300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34301 WDI_SPOOF_MAC_ADDR_REQ,
34302 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34303 &pSendBuffer, &usDataOffset, &usSendSize))||
34304 (usSendSize < (usDataOffset +
34305 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34306 {
34307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34308 "Unable to get send buffer in Process Spoof Mac Addr Req");
34309 WDI_ASSERT(0);
34310 return WDI_STATUS_E_FAILURE;
34311 }
34312
34313 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34314 wdiSpoofMacAddr->macAddr,
34315 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34316
34317 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34318
34319 wpalMemoryCopy( pSendBuffer+usDataOffset,
34320 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34321 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34322
34323 /*-------------------------------------------------------------------------
34324 Send Suspend Request to HAL
34325 -------------------------------------------------------------------------*/
34326 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34327 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34328
34329 return wdiStatus;
34330}
34331
34332/**
34333 @brief Process Spoof Mac Address Rsp function
34334 (called when a response is being received over the bus from HAL)
34335
34336 @param pWDICtx: pointer to the WLAN DAL context
34337 pEventData: pointer to the event information structure
34338
34339 @see
34340 @return Result of the function call
34341*/
34342WDI_Status
34343WDI_ProcessSpoofMacAddrRsp
34344(
34345 WDI_ControlBlockType* pWDICtx,
34346 WDI_EventInfoType* pEventData
34347)
34348{
34349 tMacSpoofedScanResp halRsp;
34350 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34351 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34352
34353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34354 "%s: %d Enter",__func__, __LINE__);
34355
34356 /*-------------------------------------------------------------------------
34357 Sanity check
34358 -------------------------------------------------------------------------*/
34359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34360 ( NULL == pEventData->pEventData))
34361 {
34362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34363 "%s: Invalid parameters", __func__);
34364 WDI_ASSERT(0);
34365 return WDI_STATUS_E_FAILURE;
34366 }
34367 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34368
34369 /*-------------------------------------------------------------------------
34370 Extract response and send it to UMAC
34371 -------------------------------------------------------------------------*/
34372 wpalMemoryCopy( &halRsp,
34373 pEventData->pEventData, sizeof(halRsp));
34374
34375 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34376
34377 /*Notify UMAC*/
34378 wdiSpoofMacAddrRspCb(
34379 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34380
34381 return WDI_STATUS_SUCCESS;
34382}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034383
34384/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034385 @brief Process Get Frame Log Rsp function
34386 (called when a response is being received over the bus from HAL)
34387
34388 @param pWDICtx: pointer to the WLAN DAL context
34389 pEventData: pointer to the event information structure
34390
34391 @see
34392 @return Result of the function call
34393*/
34394WDI_Status
34395WDI_ProcessGetFrameLogRsp
34396(
34397 WDI_ControlBlockType* pWDICtx,
34398 WDI_EventInfoType* pEventData
34399)
34400{
34401 tGetFrameLogResp halRsp;
34402 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34403 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34404
34405 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34406 "%s: %d Enter",__func__, __LINE__);
34407
34408 /*-------------------------------------------------------------------------
34409 Sanity check
34410 -------------------------------------------------------------------------*/
34411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34412 ( NULL == pEventData->pEventData))
34413 {
34414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34415 "%s: Invalid parameters", __func__);
34416 WDI_ASSERT(0);
34417 return WDI_STATUS_E_FAILURE;
34418 }
34419
34420 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34421
34422 /*-------------------------------------------------------------------------
34423 Extract response and send it to UMAC
34424 -------------------------------------------------------------------------*/
34425 wpalMemoryCopy( &halRsp,
34426 pEventData->pEventData, sizeof(halRsp));
34427
34428 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34429
34430 /*Notify UMAC*/
34431 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34432
34433 return WDI_STATUS_SUCCESS;
34434}
34435/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034436 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034437
34438 @param pWDICtx: pointer to the WLAN DAL context
34439 pEventData: pointer to the event information structure
34440
34441 @see
34442 @return Result of the function call
34443*/
34444WDI_Status
34445WDI_ProcessGetFrameLogReq
34446(
34447 WDI_ControlBlockType* pWDICtx,
34448 WDI_EventInfoType* pEventData
34449)
34450{
34451 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34452 wpt_uint8* pSendBuffer = NULL;
34453 wpt_uint16 usDataOffset = 0;
34454 wpt_uint16 usSendSize = 0;
34455 WDI_Status wdiStatus;
34456 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034457 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034458
34459
34460 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34461 "%s: %d Enter",__func__, __LINE__);
34462
34463 /*-------------------------------------------------------------------------
34464 Sanity check
34465 ------------------------------------------------------------------------*/
34466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34467 ( NULL == pEventData->pEventData))
34468 {
34469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34470 "%s: Invalid parameters", __func__);
34471 WDI_ASSERT(0);
34472 return WDI_STATUS_E_FAILURE;
34473 }
34474
34475 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34476
34477 /*-----------------------------------------------------------------------
34478 Get message buffer
34479 -----------------------------------------------------------------------*/
34480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34481 WDI_GET_FRAME_LOG_REQ,
34482 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34483 &pSendBuffer, &usDataOffset, &usSendSize))||
34484 (usSendSize < (usDataOffset +
34485 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34486 {
34487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34488 "Unable to get send buffer in GetFrameLog Req");
34489 WDI_ASSERT(0);
34490 return WDI_STATUS_E_FAILURE;
34491 }
34492
34493 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34494 wdiGetFrameLogReq->flags;
34495
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034496 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034497
34498 wpalMemoryCopy( pSendBuffer+usDataOffset,
34499 &halGetFrameLogReq.tGetFrameLogReqParams,
34500 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34501
34502 /*-------------------------------------------------------------------------
34503 Send Suspend Request to HAL
34504 ------------------------------------------------------------------------*/
34505 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34506 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34507
34508 return wdiStatus;
34509}
34510/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034511 @brief Process MgmtFrame Logging Init Rsp function
34512 (called when a response is being received over the bus from HAL)
34513
34514 @param pWDICtx: pointer to the WLAN DAL context
34515 pEventData: pointer to the event information structure
34516
34517 @see
34518 @return Result of the function call
34519*/
34520WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034521WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034522(
34523 WDI_ControlBlockType* pWDICtx,
34524 WDI_EventInfoType* pEventData
34525)
34526{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034527 tFWLoggingInitResp halRsp;
34528 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34529 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034530
34531 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34532 "%s: %d Enter",__func__, __LINE__);
34533
34534 /*-------------------------------------------------------------------------
34535 Sanity check
34536 -------------------------------------------------------------------------*/
34537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34538 ( NULL == pEventData->pEventData))
34539 {
34540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34541 "%s: Invalid parameters", __func__);
34542 WDI_ASSERT(0);
34543 return WDI_STATUS_E_FAILURE;
34544 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034545 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034546
34547 /*-------------------------------------------------------------------------
34548 Extract response and send it to UMAC
34549 -------------------------------------------------------------------------*/
34550 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34551
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034552 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034553
34554 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034555 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034556
34557 return WDI_STATUS_SUCCESS;
34558}
34559
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034560WDI_Status
34561WDI_ProcessFWLoggingDXEdoneInd
34562(
34563 WDI_ControlBlockType* pWDICtx,
34564 WDI_EventInfoType* pEventData
34565)
34566{
34567 wpt_uint8* pSendBuffer = NULL;
34568 wpt_uint16 usDataOffset = 0;
34569 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034570 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034571 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034572 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34573
34574
34575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34576
34577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34578 "%s", __func__);
34579
34580 /*-------------------------------------------------------------------------
34581 Sanity check
34582 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034583 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034584 {
34585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34586 "%s: Invalid parameters", __func__);
34587 WDI_ASSERT(0);
34588 return WDI_STATUS_E_FAILURE;
34589 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034590 pLoggingSession = (WDI_DS_LoggingSessionType *)
34591 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34592 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034593 /*-----------------------------------------------------------------------
34594 Get message buffer
34595 -----------------------------------------------------------------------*/
34596
34597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34598 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034599 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034600 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034601 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034602 {
34603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34604 "Unable to get send buffer in RTS CTS ind %p ",
34605 pEventData);
34606 WDI_ASSERT(0);
34607 return WDI_STATUS_E_FAILURE;
34608 }
34609 FWLoggingDxeDoneIndParams =
34610 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34611
34612 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034613 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034614 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034615
34616 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34617
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034618 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034619 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034620 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34621
34622 pWDICtx->pReqStatusUserData = NULL;
34623 pWDICtx->pfncRspCB = NULL;
34624 /*-------------------------------------------------------------------------
34625 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34626 -------------------------------------------------------------------------*/
34627 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34628 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34629}
34630
Sachin Ahuja715aafc2015-07-21 23:35:10 +053034631
34632/**
34633 @brief Process Fatal Event Logs Rsp function
34634 (called when a response is being received over the bus from HAL)
34635
34636 @param pWDICtx: pointer to the WLAN DAL context
34637 pEventData: pointer to the event information structure
34638
34639 @see
34640 @return Result of the function call
34641*/
34642WDI_Status
34643WDI_ProcessFatalEventLogsRsp
34644(
34645 WDI_ControlBlockType* pWDICtx,
34646 WDI_EventInfoType* pEventData
34647)
34648{
34649 tHalFatalEventLoggingRspParams halRsp;
34650 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34651 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
34652
34653 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34654 "%s: %d Enter",__func__, __LINE__);
34655
34656 /*-------------------------------------------------------------------------
34657 Sanity check
34658 -------------------------------------------------------------------------*/
34659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34660 ( NULL == pEventData->pEventData))
34661 {
34662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34663 "%s: Invalid parameters", __func__);
34664 WDI_ASSERT(0);
34665 return WDI_STATUS_E_FAILURE;
34666 }
34667 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
34668
34669 /*-------------------------------------------------------------------------
34670 Extract response and send it to UMAC
34671 -------------------------------------------------------------------------*/
34672 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34673
34674 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34675
34676 /*Notify UMAC*/
34677 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
34678 pWDICtx->pRspCBUserData);
34679
34680 return WDI_STATUS_SUCCESS;
34681}
34682
34683/**
34684 @brief Process FatalEventLogs Request
34685
34686 @param pWDICtx: pointer to the WLAN DAL context
34687 pEventData: pointer to the event information structure
34688
34689 @see
34690 @return Result of the function call
34691*/
34692
34693WDI_Status
34694WDI_ProcessFatalEventLogsReq
34695
34696(
34697 WDI_ControlBlockType* pWDICtx,
34698 WDI_EventInfoType* pEventData
34699)
34700{
34701 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
34702 wpt_uint8* pSendBuffer = NULL;
34703 wpt_uint16 usDataOffset = 0;
34704 wpt_uint16 usSendSize = 0;
34705 WDI_Status wdiStatus;
34706 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
34707 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34708
34709
34710 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34711 "%s: %d Enter",__func__, __LINE__);
34712
34713 /*-------------------------------------------------------------------------
34714 Sanity check
34715 ------------------------------------------------------------------------*/
34716 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34717 ( NULL == pEventData->pEventData))
34718 {
34719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34720 "%s: Invalid parameters", __func__);
34721 WDI_ASSERT(0);
34722 return WDI_STATUS_E_FAILURE;
34723 }
34724 wdiFatalEventLogsReq =
34725 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
34726
34727 /*-----------------------------------------------------------------------
34728 Get message buffer
34729 -----------------------------------------------------------------------*/
34730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34731 WDI_FATAL_EVENT_LOGGING_REQ,
34732 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
34733 &pSendBuffer, &usDataOffset, &usSendSize))||
34734 (usSendSize < (usDataOffset +
34735 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
34736 {
34737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34738 "Unable to get send buffer in Fatal Event Req");
34739 WDI_ASSERT(0);
34740 return WDI_STATUS_E_FAILURE;
34741 }
34742 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
34743 wdiFatalEventLogsReq->reason_code;
34744
34745 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
34746
34747 wpalMemoryCopy( pSendBuffer+usDataOffset,
34748 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
34749 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
34750
34751 /*-------------------------------------------------------------------------
34752 Send Mgmt Logging Init Request to HAL
34753 ------------------------------------------------------------------------*/
34754 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34755 wdiFatalEventLogsRspCb, pEventData->pUserData,
34756 WDI_FATAL_EVENT_LOGGING_RSP);
34757
34758 return wdiStatus;
34759
34760
34761}
34762
34763
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034764/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034765 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034766
34767 @param pWDICtx: pointer to the WLAN DAL context
34768 pEventData: pointer to the event information structure
34769
34770 @see
34771 @return Result of the function call
34772*/
34773WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034774WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034775(
34776 WDI_ControlBlockType* pWDICtx,
34777 WDI_EventInfoType* pEventData
34778)
34779{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034780 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034781 wpt_uint8* pSendBuffer = NULL;
34782 wpt_uint16 usDataOffset = 0;
34783 wpt_uint16 usSendSize = 0;
34784 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034785 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34786 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034787
34788
34789 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34790 "%s: %d Enter",__func__, __LINE__);
34791
34792 /*-------------------------------------------------------------------------
34793 Sanity check
34794 ------------------------------------------------------------------------*/
34795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34796 ( NULL == pEventData->pEventData))
34797 {
34798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34799 "%s: Invalid parameters", __func__);
34800 WDI_ASSERT(0);
34801 return WDI_STATUS_E_FAILURE;
34802 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034803 wdiFWLoggingInitReq =
34804 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034805
34806 /*-----------------------------------------------------------------------
34807 Get message buffer
34808 -----------------------------------------------------------------------*/
34809 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034810 WDI_FW_LOGGING_INIT_REQ,
34811 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034812 &pSendBuffer, &usDataOffset, &usSendSize))||
34813 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034814 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034815 {
34816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34817 "Unable to get send buffer in Process Mgmt Logging Init Req");
34818 WDI_ASSERT(0);
34819 return WDI_STATUS_E_FAILURE;
34820 }
34821
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034822 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34823 wdiFWLoggingInitReq->enableFlag;
34824 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34825 wdiFWLoggingInitReq->frameSize;
34826 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34827 wdiFWLoggingInitReq->frameType;
34828 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34829 wdiFWLoggingInitReq->bufferMode;
34830 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34831 wdiFWLoggingInitReq->continuousFrameLogging;
34832 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34833 wdiFWLoggingInitReq->minLogBufferSize;
34834 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34835 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034836 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34837 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34838 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34839 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034840
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034841 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034842
34843 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034844 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34845 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034846
34847 /*-------------------------------------------------------------------------
34848 Send Mgmt Logging Init Request to HAL
34849 ------------------------------------------------------------------------*/
34850 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034851 wdiFWLoggingInitRspCb, pEventData->pUserData,
34852 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034853
34854 return wdiStatus;
34855}
34856
34857/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034858 @brief WDI_EncryptMsgReq
34859
34860 @param pwdiEncryptMsgParams: Req parameter for the FW
34861 wdiEncryptMsgCbRsp: callback for passing back the response
34862 of the Req operation received from the device
34863 pUserData: user data will be passed back with the callback
34864
34865 @return SUCCESS or FAIL
34866*/
34867WDI_Status
34868WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34869 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34870 void* pUserData)
34871{
34872 WDI_EventInfoType wdiEventData;
34873
34874 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34875 "%s: %d Enter" ,__func__, __LINE__);
34876 /*------------------------------------------------------------------------
34877 Sanity Check
34878 ------------------------------------------------------------------------*/
34879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34880 {
34881 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34882 "WDI API call before module is initialized - Fail request");
34883
34884 return WDI_STATUS_E_NOT_ALLOWED;
34885 }
34886
34887 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34888 wdiEventData.pEventData = pwdiEncryptMsgParams;
34889 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34890 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34891 wdiEventData.pUserData = pUserData;
34892
34893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34894}
34895
34896/*
34897 * FUNCTION: WDI_ProcessEncryptMsgReq
34898 * Request to WDI to encrypt the given message.
34899 *
34900 * @param pWDICtx: pointer to the WLAN DAL context
34901 * pEventData: pointer to the event information structure
34902 *
34903 * @return Result of the function call
34904 */
34905
34906WDI_Status
34907WDI_ProcessEncryptMsgReq
34908(
34909 WDI_ControlBlockType* pWDICtx,
34910 WDI_EventInfoType* pEventData
34911)
34912{
34913 wpt_uint8* pSendBuffer = NULL;
34914 wpt_uint16 usDataOffset = 0;
34915 wpt_uint16 usSendSize = 0;
34916 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34917 tSetEncryptedDataParams *pHalEncryptDataReq;
34918 wpt_pkt80211 *pkt = NULL;
34919
34920 /*-------------------------------------------------------------------------
34921 Sanity check
34922 -------------------------------------------------------------------------*/
34923 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34924 ( NULL == pEventData->pCBfnc ) )
34925 {
34926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34927 "%s: Invalid parameters", __func__);
34928 WDI_ASSERT(0);
34929 return WDI_STATUS_E_FAILURE;
34930 }
34931
34932 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34933
34934 /*-----------------------------------------------------------------------
34935 Get message buffer
34936 -----------------------------------------------------------------------*/
34937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34938 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34939 sizeof(tSetEncryptedDataReqMsg),
34940 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34941 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34942 {
34943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34944 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34945 pEventData);
34946 WDI_ASSERT(0);
34947 return WDI_STATUS_E_FAILURE;
34948 }
34949
34950 pWDICtx->wdiReqStatusCB = NULL;
34951 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34952 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34953
34954 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34955 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34956
34957 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34958
34959 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34960 pkt->encParams.keyParams.key[0].keyId;
34961
34962 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34963 &pkt->encParams.keyParams.key[0].key[0], 16);
34964
34965 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34966
34967 pHalEncryptDataReq->data.length = pkt->data.length;
34968 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34969
34970 /*-------------------------------------------------------------------------
34971 Send Get STA Request to HAL
34972 -------------------------------------------------------------------------*/
34973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34974 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34975}
34976
34977/*
34978 * FUNCTION: WDI_ProcessEncryptMsgRsp
34979 * Receives the encrypted message from the firmware
34980 * @param pWDICtx: pointer to the WLAN DAL context
34981 * pEventData: pointer to the event information structure
34982 *
34983 * @return Result of the function call
34984 */
34985WDI_Status
34986WDI_ProcessEncryptMsgRsp
34987(
34988 WDI_ControlBlockType* pWDICtx,
34989 WDI_EventInfoType* pEventData
34990)
34991{
34992 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34993 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34994
34995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34996 "In %s",__func__);
34997
34998 /*-------------------------------------------------------------------------
34999 Sanity check
35000 -------------------------------------------------------------------------*/
35001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35002 ( NULL == pEventData->pEventData))
35003 {
35004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35005 "%s: Invalid parameters", __func__);
35006 WDI_ASSERT(0);
35007 return WDI_STATUS_E_FAILURE;
35008 }
35009
35010 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35011
35012 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35013
35014 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35015 pEventData->pEventData,
35016 pWDICtx->pRspCBUserData);
35017 return WDI_STATUS_SUCCESS;
35018}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035019
35020WDI_Status
35021WDI_NanRequest
35022(
35023 WDI_NanRequestType *pwdiNanRequest,
35024 void *usrData
35025)
35026{
35027 WDI_EventInfoType wdiEventData;
35028
35029 /*------------------------------------------------------------------------
35030 Sanity Check
35031 ------------------------------------------------------------------------*/
35032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35033 {
35034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35035 "WDI API call before module is initialized - Fail request");
35036
35037 return WDI_STATUS_E_NOT_ALLOWED;
35038 }
35039
35040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35041 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35042 pwdiNanRequest->request_data_len);
35043
35044 /*------------------------------------------------------------------------
35045 Fill in Event data and post to the Main FSM
35046 ------------------------------------------------------------------------*/
35047 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35048 wdiEventData.pEventData = pwdiNanRequest;
35049 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35050 + pwdiNanRequest->request_data_len;
35051 wdiEventData.pUserData = usrData;
35052 wdiEventData.pCBfnc = NULL;
35053
35054
35055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35056}
35057
35058WDI_Status
35059WDI_ProcessNanRequest
35060(
35061 WDI_ControlBlockType* pWDICtx,
35062 WDI_EventInfoType* pEventData
35063)
35064{
35065 WDI_NanRequestType *pwdiNanRequest = NULL;
35066 wpt_uint8* pSendBuffer = NULL;
35067 wpt_uint16 usDataOffset = 0;
35068 wpt_uint16 usSendSize = 0;
35069
35070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35071 "WDI_ProcessNanRequest");
35072
35073 /*-------------------------------------------------------------------------
35074 Sanity check
35075 -------------------------------------------------------------------------*/
35076 if (( NULL == pEventData ) ||
35077 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35078 {
35079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35080 "%s: Invalid parameters", __FUNCTION__);
35081 WDI_ASSERT(0);
35082 return WDI_STATUS_E_FAILURE;
35083 }
35084
35085 /*-----------------------------------------------------------------------
35086 Get message buffer
35087 -----------------------------------------------------------------------*/
35088 if (( WDI_STATUS_SUCCESS
35089 != WDI_GetMessageBuffer( pWDICtx,
35090 WDI_NAN_REQUEST,
35091 pwdiNanRequest->request_data_len,
35092 &pSendBuffer,
35093 &usDataOffset,
35094 &usSendSize))||
35095 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35096 {
35097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35098 "Unable to get send buffer in NAN request %p %p",
35099 pEventData, pwdiNanRequest);
35100 WDI_ASSERT(0);
35101 return WDI_STATUS_E_FAILURE;
35102 }
35103
35104 wpalMemoryCopy( pSendBuffer+usDataOffset,
35105 pwdiNanRequest->request_data,
35106 pwdiNanRequest->request_data_len);
35107
35108 pWDICtx->pReqStatusUserData = NULL;
35109 pWDICtx->pfncRspCB = NULL;
35110 vos_mem_free( pEventData->pUserData);
35111
35112 /*-------------------------------------------------------------------------
35113 Send NAN Request to HAL
35114 -------------------------------------------------------------------------*/
35115 return WDI_SendMsg( pWDICtx,
35116 pSendBuffer,
35117 usSendSize,
35118 NULL,
35119 NULL,
35120 WDI_NAN_RESPONSE);
35121}
35122
35123/**
35124 @brief Process NAN Response function (called when a
35125 response is being received over the bus from HAL)
35126
35127 @param pWDICtx: pointer to the WLAN DAL context
35128 pEventData: pointer to the event information structure
35129
35130 @see
35131 @return Result of the function call
35132*/
35133WDI_Status
35134WDI_ProcessNanResponse
35135(
35136 WDI_ControlBlockType* pWDICtx,
35137 WDI_EventInfoType* pEventData
35138)
35139{
35140 WDI_Status wdiStatus;
35141 eHalStatus halStatus;
35142
35143 /*-------------------------------------------------------------------------
35144 Sanity check
35145 -------------------------------------------------------------------------*/
35146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35147 ( NULL == pEventData->pEventData))
35148 {
35149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35150 "%s: Invalid parameters", __func__);
35151 WDI_ASSERT(0);
35152 return WDI_STATUS_E_FAILURE;
35153 }
35154
35155 halStatus = *((eHalStatus*)pEventData->pEventData);
35156 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35157
35158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35159 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35160
35161 return WDI_STATUS_SUCCESS;
35162}/*WDI_ProcessNanResponse*/
35163
35164
35165/**
35166 @brief Process NAN Event function (called when
35167 an indication is being received over the
35168 bus from HAL)
35169
35170 @param pWDICtx: pointer to the WLAN DAL context
35171 pEventData: pointer to the event information structure
35172
35173 @see
35174 @return Result of the function call
35175*/
35176WDI_Status
35177WDI_ProcessNanEvent
35178(
35179 WDI_ControlBlockType* pWDICtx,
35180 WDI_EventInfoType* pEventData
35181)
35182{
35183 WDI_LowLevelIndType wdiInd;
35184
35185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35186
35187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35188 ( NULL == pEventData->pEventData ))
35189 {
35190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35191 "%s: Invalid parameters", __func__);
35192 WDI_ASSERT( 0 );
35193 return WDI_STATUS_E_FAILURE;
35194 }
35195
35196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35197 "%s: Received NAN event", __func__);
35198 /*-------------------------------------------------------------------------
35199 Extract indication and send it to UMAC
35200 -------------------------------------------------------------------------*/
35201 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35202 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35203 pEventData->uEventDataSize;
35204 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35205 pEventData->pEventData;
35206
35207 /*Notify UMAC*/
35208 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35209
35210 return WDI_STATUS_SUCCESS;
35211}/*WDI_ProcessNanEvent*/
35212
Abhishek Singh41988ba2015-05-25 19:42:29 +053035213WDI_Status
35214WDI_ProcessSetRtsCtsHtvhtInd
35215(
35216 WDI_ControlBlockType* pWDICtx,
35217 WDI_EventInfoType* pEventData
35218)
35219{
35220 wpt_uint8* pSendBuffer = NULL;
35221 wpt_uint16 usDataOffset = 0;
35222 wpt_uint16 usSendSize = 0;
35223 wpt_uint32 *rtsCtsVal;
35224 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35225 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35226
35227
35228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35229
35230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35231 "%s", __func__);
35232
35233 /*-------------------------------------------------------------------------
35234 Sanity check
35235 -------------------------------------------------------------------------*/
35236 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35237 {
35238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35239 "%s: Invalid parameters", __func__);
35240 WDI_ASSERT(0);
35241 return WDI_STATUS_E_FAILURE;
35242 }
35243 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35244 /*-----------------------------------------------------------------------
35245 Get message buffer
35246 -----------------------------------------------------------------------*/
35247
35248 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35249 WDI_SET_RTS_CTS_HTVHT_IND,
35250 sizeof(tHalRtsCtsHtvhtIndParams),
35251 &pSendBuffer, &usDataOffset, &usSendSize))||
35252 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35253 {
35254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35255 "Unable to get send buffer in RTS CTS ind %p ",
35256 pEventData);
35257 WDI_ASSERT(0);
35258 return WDI_STATUS_E_FAILURE;
35259 }
35260 rtsCtsHtvhtIndParams =
35261 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35262 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35263
35264 pWDICtx->pReqStatusUserData = NULL;
35265 pWDICtx->pfncRspCB = NULL;
35266 /*-------------------------------------------------------------------------
35267 Send SET_RTS_CTS_HTVHT Indication to HAL
35268 -------------------------------------------------------------------------*/
35269 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35270 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35271}
35272
35273WDI_Status
35274WDI_SetRtsCtsHTVhtInd
35275(
35276 wpt_uint32 rtsCtsVal
35277)
35278{
35279 WDI_EventInfoType wdiEventData;
35280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35281
35282 /*------------------------------------------------------------------------
35283 Sanity Check
35284 ------------------------------------------------------------------------*/
35285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35286 {
35287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35288 "WDI API call before module is initialized - Fail request");
35289 return WDI_STATUS_E_NOT_ALLOWED;
35290 }
35291
35292 /*------------------------------------------------------------------------
35293 Fill in Event data and post to the Main FSM
35294 ------------------------------------------------------------------------*/
35295 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35296 wdiEventData.pEventData = (void *) &rtsCtsVal;
35297 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35298 wdiEventData.pCBfnc = NULL;
35299 wdiEventData.pUserData = NULL;
35300
35301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35302
35303}/* WDI_SetRtsCtsHTVhtInd */