blob: a378ee6d242255321755ed666f7dd3f40e04071a [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 */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530517 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700518};
519
520
Jeff Johnsone7245742012-09-05 17:12:55 -0700521/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700522 DAL Request Processing Array - the functions in this table will only be
523 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700524 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700526WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700527{
528 /*INIT*/
529 WDI_ProcessStartRsp, /* WDI_START_RESP */
530 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
531 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
532
533 /*SCAN*/
534 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
535 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
536 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
537 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
538
539 /* ASSOCIATION*/
540 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
541 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
542 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
543 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
544 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
545
546 /* Security */
547 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
548 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
549 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
550 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
551
552 /* QoS and BA APIs */
553 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
554 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
555 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
556 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
557 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
558
559 /* Miscellaneous Control APIs */
560 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
561 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
562 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
563 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
564 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
565
566 /* BA APIs*/
567 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
568 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700569
Jeff Johnson295189b2012-06-20 16:38:30 -0700570 /* IBSS APIs*/
571 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
572 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
573
574 /*Soft AP APIs*/
575 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
576 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
577 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
578 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
579
580 /* PowerSave APIs */
581 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
582 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
583 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
584 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
585 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
586 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
587 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
588 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
589 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
590 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
591 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
592 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
593 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
594 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
595 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
596 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
597 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
598 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700599
Jeff Johnson295189b2012-06-20 16:38:30 -0700600
601 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
602
603 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
604 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
605#ifdef WLAN_FEATURE_VOWIFI_11R
606 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
607#else
608 NULL,
609#endif /* WLAN_FEATURE_VOWIFI_11R */
610 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
611 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700612#ifdef FEATURE_OEM_DATA_SUPPORT
613 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
614#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700616#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700620
Jeff Johnson295189b2012-06-20 16:38:30 -0700621 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700622
Jeff Johnsone7245742012-09-05 17:12:55 -0700623 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
624
Jeff Johnson295189b2012-06-20 16:38:30 -0700625#ifdef FEATURE_WLAN_SCAN_PNO
626 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
627 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
628 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
629#else
630 NULL,
631 NULL,
632 NULL,
633#endif // FEATURE_WLAN_SCAN_PNO
634
635 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700636 /*---------------------------------------------------------------------
637 Indications
638 ---------------------------------------------------------------------*/
639#ifdef WLAN_FEATURE_PACKET_FILTERING
640 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700641 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700646 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700647 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700648#else
649 NULL,
650 NULL,
651 NULL,
652 NULL,
653#endif // WLAN_FEATURE_PACKET_FILTERING
654
655 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
656 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
657
658 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800659#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700660 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
661#else
662 NULL,
663#endif
664
665#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700666 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
667 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700668#else
669 NULL,
670 NULL,
671#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700672 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
673 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700674#ifdef WLAN_FEATURE_11AC
675 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700676#else
677 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700678#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800679#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800680 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
681#else
682 NULL,
683#endif
schang86c22c42013-03-13 18:41:24 -0700684 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700685#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700686 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700687#else
688 NULL,
689#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530690#ifdef FEATURE_WLAN_TDLS
691 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
692#else
693 NULL,
694#endif
Leo Chang9056f462013-08-01 19:21:11 -0700695#ifdef FEATURE_WLAN_LPHB
696 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
697#else
698 NULL,
699#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530700
701#ifdef FEATURE_WLAN_BATCH_SCAN
702 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
703#else
704 NULL,
705#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800706 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530707
c_hpothu92367912014-05-01 15:18:17 +0530708 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800709
c_hpothu92367912014-05-01 15:18:17 +0530710 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
711
712 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800713
Sunil Duttbd736ed2014-05-26 21:19:41 +0530714
715#ifdef WLAN_FEATURE_LINK_LAYER_STATS
716 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
717 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
718 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
719#else
720 NULL,
721 NULL,
722 NULL,
723#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530724#ifdef WLAN_FEATURE_EXTSCAN
725 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
726 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
727 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
728 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
729 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
730 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
731 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
732 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
733#else
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740 NULL,
741 NULL,
742#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530743 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530744
745 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530746
747 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530748 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530749 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530750
Srinivas Dasari32a79262015-02-19 13:04:49 +0530751 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
752
Katya Nigamf0511f62015-05-05 16:40:57 +0530753 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
754 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530755 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 /*---------------------------------------------------------------------
757 Indications
758 ---------------------------------------------------------------------*/
759 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
760 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
761 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
762 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
763 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
764 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
765
766 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
767
768 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
769
Jeff Johnson295189b2012-06-20 16:38:30 -0700770 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700771
772#ifdef FEATURE_WLAN_SCAN_PNO
773 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
774#else
775 NULL,
776#endif // FEATURE_WLAN_SCAN_PNO
777
778#ifdef WLAN_WAKEUP_EVENTS
779 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
780#else // WLAN_WAKEUP_EVENTS
781 NULL,
782#endif // WLAN_WAKEUP_EVENTS
783
784 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800785
Viral Modid86bde22012-12-10 13:09:21 -0800786 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530787#ifdef FEATURE_WLAN_TDLS
788 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
789#else
790 NULL,
791#endif
Leo Chang9056f462013-08-01 19:21:11 -0700792
793#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700794 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700795#else
796 NULL,
797#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700798
799 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700800
801 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530802
803#ifdef FEATURE_WLAN_BATCH_SCAN
804 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
805#else
806 NULL,
807#endif
808
Leo Chang0b0e45a2013-12-15 15:18:55 -0800809#ifdef FEATURE_WLAN_CH_AVOID
810 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
811#else
812 NULL,
813#endif /* FEATURE_WLAN_CH_AVOID */
814
Sunil Duttbd736ed2014-05-26 21:19:41 +0530815 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
816#ifdef WLAN_FEATURE_LINK_LAYER_STATS
817 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
818#else
819 NULL,
820#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530821#ifdef WLAN_FEATURE_EXTSCAN
822 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
823 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
824 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
825 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
826 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
827#else
828 NULL,
829 NULL,
830 NULL,
831 NULL,
832 NULL,
833#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530834#ifdef FEATURE_WLAN_TDLS
835 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
836#else
837 NULL,
838#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530839 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530840 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530841 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700842};
843
844
Jeff Johnsone7245742012-09-05 17:12:55 -0700845/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700846 WLAN DAL Global Control Block
847 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700848WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700849static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
850
Jeff Johnsone7245742012-09-05 17:12:55 -0700851const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700852
853/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700854WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700855void* WDI_GET_PAL_CTX( void )
856{
Jeff Johnsone7245742012-09-05 17:12:55 -0700857 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700858}/*WDI_GET_PAL_CTX*/
859
Jeff Johnsone7245742012-09-05 17:12:55 -0700860/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700861 Helper inline converters
862 ============================================================================*/
863/*Convert WDI driver type into HAL driver type*/
864WPT_STATIC WPT_INLINE WDI_Status
865WDI_HAL_2_WDI_STATUS
866(
867 eHalStatus halStatus
868);
869
870/*Convert WDI request type into HAL request type*/
871WPT_STATIC WPT_INLINE tHalHostMsgType
872WDI_2_HAL_REQ_TYPE
873(
874 WDI_RequestEnumType wdiReqType
875);
876
877/*Convert WDI response type into HAL response type*/
878WPT_STATIC WPT_INLINE WDI_ResponseEnumType
879HAL_2_WDI_RSP_TYPE
880(
881 tHalHostMsgType halMsg
882);
883
884/*Convert WDI driver type into HAL driver type*/
885WPT_STATIC WPT_INLINE tDriverType
886WDI_2_HAL_DRV_TYPE
887(
888 WDI_DriverType wdiDriverType
889);
890
891/*Convert WDI stop reason into HAL stop reason*/
892WPT_STATIC WPT_INLINE tHalStopType
893WDI_2_HAL_STOP_REASON
894(
895 WDI_StopType wdiStopType
896);
897
898/*Convert WDI scan mode type into HAL scan mode type*/
899WPT_STATIC WPT_INLINE eHalSysMode
900WDI_2_HAL_SCAN_MODE
901(
902 WDI_ScanMode wdiScanMode
903);
904
905/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700906WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700907WDI_2_HAL_SEC_CH_OFFSET
908(
909 WDI_HTSecondaryChannelOffset wdiSecChOffset
910);
911
912/*Convert WDI BSS type into HAL BSS type*/
913WPT_STATIC WPT_INLINE tSirBssType
914WDI_2_HAL_BSS_TYPE
915(
916 WDI_BssType wdiBSSType
917);
918
919/*Convert WDI NW type into HAL NW type*/
920WPT_STATIC WPT_INLINE tSirNwType
921WDI_2_HAL_NW_TYPE
922(
923 WDI_NwType wdiNWType
924);
925
926/*Convert WDI chanel bonding type into HAL cb type*/
927WPT_STATIC WPT_INLINE ePhyChanBondState
928WDI_2_HAL_CB_STATE
929(
930 WDI_PhyChanBondState wdiCbState
931);
932
933/*Convert WDI chanel bonding type into HAL cb type*/
934WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
935WDI_2_HAL_HT_OPER_MODE
936(
937 WDI_HTOperatingMode wdiHTOperMode
938);
939
940/*Convert WDI mimo PS type into HAL mimo PS type*/
941WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
942WDI_2_HAL_MIMO_PS
943(
944 WDI_HTMIMOPowerSaveState wdiHTOperMode
945);
946
947/*Convert WDI ENC type into HAL ENC type*/
948WPT_STATIC WPT_INLINE tAniEdType
949WDI_2_HAL_ENC_TYPE
950(
951 WDI_EncryptType wdiEncType
952);
953
954/*Convert WDI WEP type into HAL WEP type*/
955WPT_STATIC WPT_INLINE tAniWepType
956WDI_2_HAL_WEP_TYPE
957(
958 WDI_WepType wdiWEPType
959);
960
961/*Convert WDI Link State into HAL Link State*/
962WPT_STATIC WPT_INLINE tSirLinkState
963WDI_2_HAL_LINK_STATE
964(
965 WDI_LinkStateType wdiLinkState
966);
967
Jeff Johnsone7245742012-09-05 17:12:55 -0700968/*Translate a STA Context from WDI into HAL*/
969WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700970void
971WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700972(
Jeff Johnson295189b2012-06-20 16:38:30 -0700973 tConfigStaParams* phalConfigSta,
974 WDI_ConfigStaReqInfoType* pwdiConfigSta
975);
Jeff Johnsone7245742012-09-05 17:12:55 -0700976
977/*Translate a Rate set info from WDI into HAL*/
978WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700979WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700980(
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 tSirMacRateSet* pHalRateSet,
982 WDI_RateSet* pwdiRateSet
983);
984
985/*Translate an EDCA Parameter Record from WDI into HAL*/
986WPT_STATIC WPT_INLINE void
987WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700988(
Jeff Johnson295189b2012-06-20 16:38:30 -0700989 tSirMacEdcaParamRecord* phalEdcaParam,
990 WDI_EdcaParamRecord* pWDIEdcaParam
991);
992
993/*Copy a management frame header from WDI fmt into HAL fmt*/
994WPT_STATIC WPT_INLINE void
995WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
996(
997 tSirMacMgmtHdr* pmacMgmtHdr,
998 WDI_MacMgmtHdr* pwdiMacMgmtHdr
999);
1000
1001/*Copy config bss parameters from WDI fmt into HAL fmt*/
1002WPT_STATIC WPT_INLINE void
1003WDI_CopyWDIConfigBSSToHALConfigBSS
1004(
1005 tConfigBssParams* phalConfigBSS,
1006 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1007);
1008
Jeff Johnsone7245742012-09-05 17:12:55 -07001009/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001010 pointed to by user data */
1011WPT_STATIC WPT_INLINE void
1012WDI_ExtractRequestCBFromEvent
1013(
1014 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001015 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001016 void** ppUserData
1017);
1018
1019wpt_uint8
1020WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001021(
Jeff Johnson295189b2012-06-20 16:38:30 -07001022 WDI_ControlBlockType* pWDICtx,
1023 WDI_BSSSessionType** ppSession
1024);
1025
1026void
1027WDI_AddBcastSTAtoSTATable
1028(
1029 WDI_ControlBlockType* pWDICtx,
1030 WDI_AddStaParams * staParams,
1031 wpt_uint16 usBcastStaIdx
1032);
1033
1034WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001035(
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 WDI_ControlBlockType* pWDICtx,
1037 WDI_EventInfoType* pEventData
1038);
1039
1040void
1041WDI_SetPowerStateCb
1042(
1043 wpt_status status,
1044 unsigned int dxePhyAddr,
1045 void *pContext
1046);
1047
Jeff Johnson295189b2012-06-20 16:38:30 -07001048/**
1049 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001050
1051 @param wdiReqMsgId: WDI Message request Id
1052
1053 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 @return Result of the function call
1055*/
1056static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1057{
1058 switch (wdiReqMsgId)
1059 {
1060 CASE_RETURN_STRING( WDI_START_REQ );
1061 CASE_RETURN_STRING( WDI_STOP_REQ );
1062 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1063 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1064 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1065 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1066 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1067 CASE_RETURN_STRING( WDI_JOIN_REQ );
1068 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1069 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1070 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1071 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1072 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1073 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1074 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1075 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1076 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1077 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1078 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1079 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1080 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1081 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001082 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001083 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1084 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1085 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1086 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1087 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1088 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1089 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1090 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1091 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1092 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1093 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1094 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001095 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301097#ifdef FEATURE_WLAN_TDLS
1098 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301099 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301100#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1103 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1104 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1105 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1106 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1107 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1108 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1109 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1110 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1111 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1112 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1113 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1114 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1115 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1116 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1117 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1118 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1119 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1120 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1121 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1122 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1123 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1124 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1125 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001126 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001127 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1128 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1129 #ifdef FEATURE_WLAN_SCAN_PNO
1130 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1131 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1132 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1133 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001134#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001135 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001136#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001137 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1138 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1139 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1140 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1141 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1142 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1143 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1144 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1145 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301146 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001147 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001148 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001149#ifdef WLAN_FEATURE_11W
1150 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1151#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301152#ifdef FEATURE_WLAN_BATCH_SCAN
1153 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1154 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1155 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1156#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301157 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1158 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001159 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301160#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1161 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1162 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1163 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1164#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301165#ifdef WLAN_FEATURE_EXTSCAN
1166 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1170 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1171 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1172 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1173 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1174#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301175 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301176 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301177 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301178 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301179 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301180 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301181 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301182 CASE_RETURN_STRING( WDI_MON_START_REQ );
1183 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301184 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301185 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 default:
1187 return "Unknown WDI MessageId";
1188 }
1189}
1190
1191
1192
1193/**
1194 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001195
1196 @param wdiRespMsgId: WDI Message response Id
1197
1198 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 @return Result of the function call
1200*/
1201static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1202{
1203 switch (wdiRespMsgId)
1204 {
1205 CASE_RETURN_STRING( WDI_START_RESP );
1206 CASE_RETURN_STRING( WDI_STOP_RESP );
1207 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1208 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1209 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1210 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1211 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1212 CASE_RETURN_STRING( WDI_JOIN_RESP );
1213 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1214 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1215 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1216 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1217 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1218 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1219 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1220 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1221 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1222 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1223 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1224 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1225 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1226 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1227 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1228 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1229 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1230 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1231 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1232 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1233 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1234 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1235 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1236 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1237 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1238 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1239 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301240#ifdef FEATURE_WLAN_TDLS
1241 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301242 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301243 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1244#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001245 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1246 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1247 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1248 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1249 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1250 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1251 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1252 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1253 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1254 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1255 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1256 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1257 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1258 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1259 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1260 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1261 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1262 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1263 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1264 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1265 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1266 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1267 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1268 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1269 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001270 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1272 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1273 #ifdef FEATURE_WLAN_SCAN_PNO
1274 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1275 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1276 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1277 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001278#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001279 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001280#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1282 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1283 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1284 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1285 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1286 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1287 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1288 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001289 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301290#ifdef FEATURE_WLAN_BATCH_SCAN
1291 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1292#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001293 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301294 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301295 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301296#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1297 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1298 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1299 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1300#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301301#ifdef WLAN_FEATURE_EXTSCAN
1302 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1304 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1305 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1306 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1307 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1308 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1309 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1310 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1311 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1312 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1313 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1314 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1315
1316#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301317 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301318 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301319 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301320 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301321 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001322 default:
1323 return "Unknown WDI MessageId";
1324 }
1325}
1326
1327/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301328 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1329 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301330 @param capabilityBitmap - Base address of a 4 element Bitmap array
1331 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301332 @see
1333 @returns None
1334 */
1335void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1336{
Abhishek Singh08b60122014-02-04 18:05:23 +05301337 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301338 char *pTempCapStr = NULL;
1339 char *pCapStr = NULL;
1340 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1341 if (NULL == pTempCapStr)
1342 {
1343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1344 "Memory allocation failed for CapStr");
1345 return;
1346 }
1347
1348 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301349 for (j = 0; j < 4; j++) {
1350 for (i = 0; i < 32; i++) {
1351 if ((*(capabilityBitmap + j) & (1 << i))) {
1352 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301353 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1354 pCapStr += strlen("MCC");
1355 break;
1356 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1357 pCapStr += strlen("P2P");
1358 break;
1359 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1360 pCapStr += strlen("DOT11AC");
1361 break;
1362 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1363 pCapStr += strlen("SLM_SESSIONIZATION");
1364 break;
1365 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1366 pCapStr += strlen("DOT11AC_OPMODE");
1367 break;
1368 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1369 pCapStr += strlen("SAP32STA");
1370 break;
1371 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1372 pCapStr += strlen("TDLS");
1373 break;
1374 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1375 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1376 break;
1377 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1378 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1379 break;
1380 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1381 pCapStr += strlen("BEACON_OFFLOAD");
1382 break;
1383 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1384 pCapStr += strlen("SCAN_OFFLOAD");
1385 break;
1386 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1387 pCapStr += strlen("ROAM_OFFLOAD");
1388 break;
1389 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1390 pCapStr += strlen("BCN_MISS_OFFLOAD");
1391 break;
1392 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1393 pCapStr += strlen("STA_POWERSAVE");
1394 break;
1395 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1396 pCapStr += strlen("AP_UAPSD");
1397 break;
1398 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1399 pCapStr += strlen("AP_DFS");
1400 break;
1401 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1402 pCapStr += strlen("BLOCKACK");
1403 break;
1404 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1405 pCapStr += strlen("PHY_ERR");
1406 break;
1407 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1408 pCapStr += strlen("BCN_FILTER");
1409 break;
1410 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1411 pCapStr += strlen("RTT");
1412 break;
1413 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1414 pCapStr += strlen("RATECTRL");
1415 break;
1416 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1417 pCapStr += strlen("WOW");
1418 break;
1419 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1420 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1421 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301422 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1423 pCapStr += strlen("FW_IN_TX_PATH");
1424 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301425 case HT40_OBSS_SCAN:
1426 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1427 "%s", "HT40_OBSS_SCAN");
1428 pCapStr += strlen("HT40_OBSS_SCAN");
1429 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301430 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1431 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1432 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1433 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1434 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301435 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1436 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1437 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301438 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1439 pCapStr += strlen("CH_SWITCH_V1");
1440 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1442 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1443 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1444 break;
1445#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301446#ifdef WLAN_FEATURE_EXTSCAN
1447 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1448 pCapStr += strlen("EXTENDED_SCAN");
1449 break;
1450#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301451 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1452 pCapStr += strlen("MU_MIMO");
1453 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301454
Mihir Shetec34258c2014-07-30 17:50:27 +05301455 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1456 pCapStr += strlen("DYNAMIC_WMM_PS");
1457 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301458 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1459 pCapStr += strlen("FW_STATS");
1460 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301461 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1462 pCapStr += strlen("MAC_SPOOFED_SCAN");
1463 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301464 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1465 pCapStr += strlen("WPS_PRBRSP_TMPL");
1466 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301467 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1468 pCapStr += strlen("BCN_IE_FLT_DELTA");
1469 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301470 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1471 pCapStr += strlen("MGMT_FRAME_LOGGING");
1472 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301473 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1474 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1475 break;
1476
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301477 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1478 pCapStr += strlen("DISA");
1479 break;
1480
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301481 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1482 pCapStr += strlen("TDLS_OFF_CHANNEL");
1483 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301484 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1485 pCapStr += strlen("LOGGING_ENHANCEMENT");
1486 break;
1487
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301488
Abhishek Singh08b60122014-02-04 18:05:23 +05301489 }
1490 *pCapStr++ = ',';
1491 *pCapStr++ = ' ';
1492 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301493 }
1494 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301495 pCapStr -= 2;
1496 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301498 if (pTempCapStr)
1499 {
1500 vos_mem_free(pTempCapStr);
1501 pTempCapStr = NULL;
1502 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301503}
1504
1505/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001507
1508 @param halStatusId: HAL status Id
1509
1510 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 @return Result of the function call
1512*/
1513static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1514{
1515 switch (halStatusId)
1516 {
1517 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1518 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1519 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1520 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1521 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1522 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1523 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1524 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1525 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1526 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1527 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1528 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1529 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1530 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1531 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1532 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1533 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1534 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1535 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1536 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1537 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1538 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1539 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1540 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1541 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1542 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1543 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1544 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1545 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1546 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1547 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1548 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1549 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1550 default:
1551 return "Unknown HAL status";
1552 }
1553}
1554
Jeff Johnsone7245742012-09-05 17:12:55 -07001555/*========================================================================
1556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001558
Jeff Johnson295189b2012-06-20 16:38:30 -07001559==========================================================================*/
1560
1561/**
1562 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001563
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 DAL will allocate all the resources it needs. It will open PAL, it will also
1565 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001566 DXE/SMD or any other drivers that they need.
1567
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301568 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 ppWDIGlobalCtx: output pointer of Global Context
1570 pWdiDevCapability: output pointer of device capability
1571
1572 @return Result of the function call
1573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001575WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001576(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301577 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 void** ppWDIGlobalCtx,
1579 WDI_DeviceCapabilityType* pWdiDevCapability,
1580 unsigned int driverType
1581)
1582{
1583 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001584 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001586 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1588
1589 /*---------------------------------------------------------------------
1590 Sanity check
1591 ---------------------------------------------------------------------*/
1592 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1593 {
1594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1595 "Invalid input parameters in WDI_Init");
1596
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 }
1599
1600 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 ---------------------------------------------------------------------*/
1603 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1604 {
1605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1606 "WDI module already initialized - return");
1607
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 }
1610
1611 /*Module is now initialized - this flag is to ensure the fact that multiple
1612 init will not happen on WDI
1613 !! - potential race does exist because read and set are not atomic,
1614 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001616
1617 /*Setup the control block */
1618 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301619 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001620
1621 /*Setup the STA Table*/
1622 wdiStatus = WDI_STATableInit(&gWDICb);
1623 if ( WDI_STATUS_SUCCESS != wdiStatus )
1624 {
1625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1626 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001627 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 goto fail_STATableInit;
1629 }
1630
1631 /*------------------------------------------------------------------------
1632 Open the PAL
1633 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301634 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1638 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001639 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 goto fail_wpalOpen;
1641 }
1642
1643 /*Initialize main synchro mutex - it will be used to ensure integrity of
1644 the main WDI Control Block*/
1645 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1646 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1647 {
1648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1649 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001650 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 goto fail_mutex;
1652 }
1653
1654 /*Initialize the response timer - it will be used to time all messages
1655 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001656 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1657 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 &gWDICb);
1659 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1660 {
1661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1662 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001663 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 goto fail_timer;
1665 }
1666
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001667 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1668 WDI_SsrTimerCB,
1669 &gWDICb);
1670 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1671 {
1672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1673 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001674 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001675 goto fail_timer2;
1676 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 /* Initialize the WDI Pending Request Queue*/
1678 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1679 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1680 {
1681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1682 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001683 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 goto fail_pend_queue;
1685 }
1686
1687 /*Init WDI Pending Assoc Id Queue */
1688 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1689 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1690 {
1691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1692 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001693 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 goto fail_assoc_queue;
1695 }
1696
1697 /*Initialize the BSS sessions pending Queue */
1698 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1699 {
1700 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1701 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1702 {
1703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1704 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001705 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 goto fail_bss_queue;
1707 }
1708 }
1709
1710 /*Indicate the control block is sufficiently initialized for callbacks*/
1711 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1712
1713 /*------------------------------------------------------------------------
1714 Initialize the Data Path Utility Module
1715 ------------------------------------------------------------------------*/
1716 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1717 if ( WDI_STATUS_SUCCESS != wdiStatus )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1720 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001721 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 goto fail_dp_util_init;
1723 }
1724
1725 /* Init Set power state event */
1726 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 {
1729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1730 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001731 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 goto fail_power_event;
1733 }
1734
1735 /* Init WCTS action event */
1736 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001737 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1740 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001741 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 goto fail_wcts_event;
1743 }
1744
1745 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 ------------------------------------------------------------------------*/
1748 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1749 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 wctsCBs.wctsRxMsgCBData = &gWDICb;
1752
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 WDI_CT_CHANNEL_SIZE,
1756 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001757
1758 if ( NULL == gWDICb.wctsHandle )
1759 {
1760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001761 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 goto fail_wcts_open;
1763 }
1764
1765 gWDICb.driverMode = (tDriverType)driverType;
1766 /* FTM mode not need to open Transport Driver */
1767 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 /*------------------------------------------------------------------------
1770 Open the Data Transport
1771 ------------------------------------------------------------------------*/
1772 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001775 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 goto fail_wdts_open;
1777 }
1778 }
1779
1780 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001781 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301782 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 /*Send the context as a ptr to the global WDI Control Block*/
1784 *ppWDIGlobalCtx = &gWDICb;
1785
1786 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001787 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1789 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1790 return WDI_STATUS_SUCCESS;
1791
1792 /* ERROR handlers
1793 Undo everything that completed successfully */
1794
1795 fail_wdts_open:
1796 {
1797 wpt_status eventStatus;
1798
1799 /* Closing WCTS in this scenario is tricky since it has to close
1800 the SMD channel and then we get notified asynchronously when
1801 the channel has been closed. So we take some of the logic from
1802 the "normal" close procedure in WDI_Close()
1803 */
1804
1805 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 {
1808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001809 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 }
1811
1812 WCTS_CloseTransport(gWDICb.wctsHandle);
1813
1814 /* Wait for WCTS to close the control transport. If we were able
1815 to reset the event flag, then we'll wait for the event,
1816 otherwise we'll wait for a maximum amount of time required for
1817 the channel to be closed */
1818 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 WDI_WCTS_ACTION_TIMEOUT);
1822 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1823 {
1824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001825 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 }
1827 }
1828 else
1829 {
1830 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1831 }
1832 }
1833 fail_wcts_open:
1834 wpalEventDelete(&gWDICb.wctsActionEvent);
1835 fail_wcts_event:
1836 wpalEventDelete(&gWDICb.setPowerStateEvent);
1837 fail_power_event:
1838 WDI_DP_UtilsExit(&gWDICb);
1839 fail_dp_util_init:
1840 gWDICb.magic = 0;
1841 fail_bss_queue:
1842 /* entries 0 thru i-1 were successfully initialized */
1843 while (0 < i)
1844 {
1845 i--;
1846 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1847 }
1848 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1849 fail_assoc_queue:
1850 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1851 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001852 wpalTimerDelete(&gWDICb.ssrTimer);
1853 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 wpalTimerDelete(&gWDICb.wptResponseTimer);
1855 fail_timer:
1856 wpalMutexDelete(&gWDICb.wptMutex);
1857 fail_mutex:
1858 wpalClose(gWDICb.pPALContext);
1859 fail_wpalOpen:
1860 WDI_STATableClose(&gWDICb);
1861 fail_STATableInit:
1862 gWDIInitialized = eWLAN_PAL_FALSE;
1863
1864 return WDI_STATUS_E_FAILURE;
1865
1866}/*WDI_Init*/;
1867
1868/**
1869 @brief WDI_Start will be called when the upper MAC is ready to
1870 commence operation with the WLAN Device. Upon the call
1871 of this API the WLAN DAL will pack and send a HAL Start
1872 message to the lower RIVA sub-system if the SMD channel
1873 has been fully opened and the RIVA subsystem is up.
1874
1875 If the RIVA sub-system is not yet up and running DAL
1876 will queue the request for Open and will wait for the
1877 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001878 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001879
1880 WDI_Init must have been called.
1881
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 wdiStartRspCb: callback for passing back the response of
1886 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 callback
1890
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 @see WDI_Start
1892 @return Result of the function call
1893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001895WDI_Start
1896(
1897 WDI_StartReqParamsType* pwdiStartParams,
1898 WDI_StartRspCb wdiStartRspCb,
1899 void* pUserData
1900)
1901{
1902 WDI_EventInfoType wdiEventData;
1903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1904
1905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 ------------------------------------------------------------------------*/
1908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1911 "WDI API call before module is initialized - Fail request");
1912
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 }
1915
1916 /*------------------------------------------------------------------------
1917 Fill in Event data and post to the Main FSM
1918 ------------------------------------------------------------------------*/
1919 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001920 wdiEventData.pEventData = pwdiStartParams;
1921 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1922 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 wdiEventData.pUserData = pUserData;
1924
1925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1926
1927}/*WDI_Start*/
1928
1929/**
1930 @brief WDI_Stop will be called when the upper MAC is ready to
1931 stop any operation with the WLAN Device. Upon the call
1932 of this API the WLAN DAL will pack and send a HAL Stop
1933 message to the lower RIVA sub-system if the DAL Core is
1934 in started state.
1935
1936 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
1938 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001939
1940 WDI_Start must have been called.
1941
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 wdiStopRspCb: callback for passing back the response of
1946 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001947
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 callback
1950
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 @see WDI_Start
1952 @return Result of the function call
1953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001955WDI_Stop
1956(
1957 WDI_StopReqParamsType* pwdiStopParams,
1958 WDI_StopRspCb wdiStopRspCb,
1959 void* pUserData
1960)
1961{
1962 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001963 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1965
1966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 ------------------------------------------------------------------------*/
1969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1970 {
1971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1972 "WDI API call before module is initialized - Fail request");
1973
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 }
1976
Jeff Johnson43971f52012-07-17 12:26:56 -07001977 /*Access to the global state must be locked before cleaning */
1978 wpalMutexAcquire(&pWDICtx->wptMutex);
1979
1980 /*Clear all pending request*/
1981 WDI_ClearPendingRequests(pWDICtx);
1982
1983 /*We have completed cleaning unlock now*/
1984 wpalMutexRelease(&pWDICtx->wptMutex);
1985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 /* Free the global variables */
1987 wpalMemoryFree(gpHostWlanFeatCaps);
1988 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001989 gpHostWlanFeatCaps = NULL;
1990 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001991
1992 /*------------------------------------------------------------------------
1993 Fill in Event data and post to the Main FSM
1994 ------------------------------------------------------------------------*/
1995 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 wdiEventData.pEventData = pwdiStopParams;
1997 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1998 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 wdiEventData.pUserData = pUserData;
2000
2001 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2002
2003}/*WDI_Stop*/
2004
2005
2006
2007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 needs to interact with DAL. DAL will free its control
2010 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002011
2012 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002013
2014 WDI_Stop must have been called.
2015
2016 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002017
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 @see WDI_Stop
2019 @return Result of the function call
2020*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002021WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002022WDI_Close
2023(
2024 void
2025)
2026{
2027 wpt_uint8 i;
2028 WDI_EventInfoType wdiEventData;
2029 wpt_status wptStatus;
2030 wpt_status eventStatus;
2031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2032
2033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 ------------------------------------------------------------------------*/
2036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2037 {
2038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2039 "WDI API call before module is initialized - Fail request");
2040
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 }
2043
2044 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2045 (the control transport will be closed by the FSM and we'll want
2046 to wait until that completes)*/
2047 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 {
2050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002051 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 /* fall through and try to finish closing via the FSM */
2053 }
2054
2055 /*------------------------------------------------------------------------
2056 Fill in Event data and post to the Main FSM
2057 ------------------------------------------------------------------------*/
2058 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 wdiEventData.pEventData = NULL;
2060 wdiEventData.uEventDataSize = 0;
2061 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 wdiEventData.pUserData = NULL;
2063
2064 gWDIInitialized = eWLAN_PAL_FALSE;
2065
2066 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2067
2068 /*Wait for WCTS to close the control transport
2069 (but only if we were able to reset the event flag*/
2070 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2071 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 WDI_WCTS_ACTION_TIMEOUT);
2074 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002077 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 }
2079 }
2080
2081 /* Destroy the WCTS action event */
2082 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2083 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2084 {
2085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2086 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002087 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 }
2089
2090 /* Destroy the Set Power State event */
2091 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2092 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2093 {
2094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2095 "WDI Close failed to destroy an event");
2096
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 }
2099
2100 /*------------------------------------------------------------------------
2101 Closes the Data Path Utility Module
2102 ------------------------------------------------------------------------*/
2103 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2104 {
2105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2106 "WDI Init failed to close the DP Util Module");
2107
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 }
2110
2111 /*destroy the BSS sessions pending Queue */
2112 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2113 {
2114 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2115 }
2116
2117 /* destroy the WDI Pending Assoc Id Request Queue*/
2118 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2119
2120 /* destroy the WDI Pending Request Queue*/
2121 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002122
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 /*destroy the response timer */
2124 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2125
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002126 /*destroy the SSR timer */
2127 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2128
Jeff Johnson295189b2012-06-20 16:38:30 -07002129 /*invalidate the main synchro mutex */
2130 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2131 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2132 {
2133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2134 "Failed to delete mutex %d", wptStatus);
2135 WDI_ASSERT(0);
2136 }
2137
2138 /*Clear control block. note that this will clear the "magic"
2139 which will inhibit all asynchronous callbacks*/
2140 WDI_CleanCB(&gWDICb);
2141
2142 return wptStatus;
2143
2144}/*WDI_Close*/
2145
2146/**
2147 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2148 This will do most of the WDI stop & close
2149 operations without doing any handshake with Riva
2150
2151 This will also make sure that the control transport
2152 will NOT be closed.
2153
2154 This request will not be queued.
2155
2156
2157 WDI_Start must have been called.
2158
2159 @param closeTransport: Close control channel if this is set
2160
2161 @return Result of the function call
2162*/
2163WDI_Status
2164WDI_Shutdown
2165(
2166 wpt_boolean closeTransport
2167)
2168{
2169 WDI_EventInfoType wdiEventData;
2170 wpt_status wptStatus;
2171 int i = 0;
2172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2173
2174 /*------------------------------------------------------------------------
2175 Sanity Check
2176 ------------------------------------------------------------------------*/
2177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2180 "WDI API call before module is initialized - Fail request");
2181
2182 return WDI_STATUS_E_NOT_ALLOWED;
2183 }
2184
2185 /*------------------------------------------------------------------------
2186 Fill in Event data and post to the Main FSM
2187 ------------------------------------------------------------------------*/
2188 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2189 wdiEventData.pEventData = NULL;
2190 wdiEventData.uEventDataSize = 0;
2191
2192 /* Shutdown will not be queued, if the state is busy timer will be
2193 * stopped & this message will be processed.*/
2194 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2196 {
2197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002198 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 }
2200 /* Destroy the Set Power State event */
2201 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2202 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2203 {
2204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2205 "WDI Close failed to destroy an event");
2206
2207 WDI_ASSERT(0);
2208 }
2209 /*------------------------------------------------------------------------
2210 Closes the Data Path Utility Module
2211 ------------------------------------------------------------------------*/
2212 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2213 {
2214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2215 "WDI Init failed to close the DP Util Module");
2216
2217 WDI_ASSERT(0);
2218 }
2219 if ( closeTransport )
2220 {
2221 /* Close control transport, called from module unload */
2222 WCTS_CloseTransport(gWDICb.wctsHandle);
2223 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002224 else
2225 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002226 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002227 the pending messages in the transport queue */
2228 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2229 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 /*destroy the BSS sessions pending Queue */
2231 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2232 {
2233 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2234 }
2235
2236 /* destroy the WDI Pending Assoc Id Request Queue*/
2237 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2238 /* destroy the WDI Pending Request Queue*/
2239 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2240 /*destroy the response timer */
2241 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002242 /*destroy the SSR timer */
2243 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002244
2245 /*invalidate the main synchro mutex */
2246 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2247 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2248 {
2249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002250 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 WDI_ASSERT(0);
2252 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002253 /* Free the global variables */
2254 wpalMemoryFree(gpHostWlanFeatCaps);
2255 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002256 gpHostWlanFeatCaps = NULL;
2257 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 /*Clear control block. note that this will clear the "magic"
2259 which will inhibit all asynchronous callbacks*/
2260 WDI_CleanCB(&gWDICb);
2261 return wptStatus;
2262
2263}/*WDI_Shutdown*/
2264
2265
Jeff Johnsone7245742012-09-05 17:12:55 -07002266/*========================================================================
2267
Jeff Johnson295189b2012-06-20 16:38:30 -07002268 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002269
Jeff Johnson295189b2012-06-20 16:38:30 -07002270==========================================================================*/
2271
2272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 the WLAN Device to get ready for a scan procedure. Upon
2275 the call of this API the WLAN DAL will pack and send a
2276 HAL Init Scan request message to the lower RIVA
2277 sub-system if DAL is in state STARTED.
2278
2279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002281
2282 WDI_Start must have been called.
2283
2284 @param wdiInitScanParams: the init scan parameters as specified
2285 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 wdiInitScanRspCb: callback for passing back the response
2288 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 callback
2292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 @see WDI_Start
2294 @return Result of the function call
2295*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002296WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002297WDI_InitScanReq
2298(
2299 WDI_InitScanReqParamsType* pwdiInitScanParams,
2300 WDI_InitScanRspCb wdiInitScanRspCb,
2301 void* pUserData
2302)
2303{
2304 WDI_EventInfoType wdiEventData;
2305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2306
2307 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 ------------------------------------------------------------------------*/
2310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2311 {
2312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2313 "WDI API call before module is initialized - Fail request");
2314
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 }
2317
2318 /*------------------------------------------------------------------------
2319 Fill in Event data and post to the Main FSM
2320 ------------------------------------------------------------------------*/
2321 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 wdiEventData.pEventData = pwdiInitScanParams;
2323 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2324 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 wdiEventData.pUserData = pUserData;
2326
2327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2328
2329}/*WDI_InitScanReq*/
2330
2331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 wishes to change the Scan channel on the WLAN Device.
2334 Upon the call of this API the WLAN DAL will pack and
2335 send a HAL Start Scan request message to the lower RIVA
2336 sub-system if DAL is in state STARTED.
2337
2338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002340
2341 WDI_InitScanReq must have been called.
2342
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 wdiStartScanRspCb: callback for passing back the
2347 response of the start scan operation received from the
2348 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 callback
2352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 @see WDI_InitScanReq
2354 @return Result of the function call
2355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002357WDI_StartScanReq
2358(
2359 WDI_StartScanReqParamsType* pwdiStartScanParams,
2360 WDI_StartScanRspCb wdiStartScanRspCb,
2361 void* pUserData
2362)
2363{
2364 WDI_EventInfoType wdiEventData;
2365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2366
2367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 ------------------------------------------------------------------------*/
2370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2371 {
2372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2373 "WDI API call before module is initialized - Fail request");
2374
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 }
2377
2378 /*------------------------------------------------------------------------
2379 Fill in Event data and post to the Main FSM
2380 ------------------------------------------------------------------------*/
2381 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 wdiEventData.pEventData = pwdiStartScanParams;
2383 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2384 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 wdiEventData.pUserData = pUserData;
2386
2387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2388
2389}/*WDI_StartScanReq*/
2390
2391
2392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 wants to end scanning for a particular channel that it
2395 had set before by calling Scan Start on the WLAN Device.
2396 Upon the call of this API the WLAN DAL will pack and
2397 send a HAL End Scan request message to the lower RIVA
2398 sub-system if DAL is in state STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_StartScanReq must have been called.
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiEndScanRspCb: callback for passing back the response
2409 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 callback
2413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 @see WDI_StartScanReq
2415 @return Result of the function call
2416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002418WDI_EndScanReq
2419(
2420 WDI_EndScanReqParamsType* pwdiEndScanParams,
2421 WDI_EndScanRspCb wdiEndScanRspCb,
2422 void* pUserData
2423)
2424{
2425 WDI_EventInfoType wdiEventData;
2426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2427
2428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 ------------------------------------------------------------------------*/
2431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2432 {
2433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2434 "WDI API call before module is initialized - Fail request");
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 }
2438
2439 /*------------------------------------------------------------------------
2440 Fill in Event data and post to the Main FSM
2441 ------------------------------------------------------------------------*/
2442 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 wdiEventData.pEventData = pwdiEndScanParams;
2444 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2445 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 wdiEventData.pUserData = pUserData;
2447
2448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2449
2450}/*WDI_EndScanReq*/
2451
2452
2453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 completed the scan process on the WLAN Device. Upon the
2456 call of this API the WLAN DAL will pack and send a HAL
2457 Finish Scan Request request message to the lower RIVA
2458 sub-system if DAL is in state STARTED.
2459
2460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002462
2463 WDI_InitScanReq must have been called.
2464
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 wdiFinishScanRspCb: callback for passing back the
2469 response of the finish scan operation received from the
2470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 callback
2474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 @see WDI_InitScanReq
2476 @return Result of the function call
2477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002479WDI_FinishScanReq
2480(
2481 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2482 WDI_FinishScanRspCb wdiFinishScanRspCb,
2483 void* pUserData
2484)
2485{
2486 WDI_EventInfoType wdiEventData;
2487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2488
2489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 ------------------------------------------------------------------------*/
2492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2493 {
2494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2495 "WDI API call before module is initialized - Fail request");
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 }
2499
2500 /*------------------------------------------------------------------------
2501 Fill in Event data and post to the Main FSM
2502 ------------------------------------------------------------------------*/
2503 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 wdiEventData.pEventData = pwdiFinishScanParams;
2505 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2506 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 wdiEventData.pUserData = pUserData;
2508
2509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2510
2511}/*WDI_FinishScanReq*/
2512
Jeff Johnsone7245742012-09-05 17:12:55 -07002513/*========================================================================
2514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002516
Jeff Johnson295189b2012-06-20 16:38:30 -07002517==========================================================================*/
2518
2519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 to start an association procedure to a BSS. Upon the
2522 call of this API the WLAN DAL will pack and send a HAL
2523 Join request message to the lower RIVA sub-system if
2524 DAL is in state STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_Start must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiJoinRspCb: callback for passing back the response of
2535 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 callback
2539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 @see WDI_Start
2541 @return Result of the function call
2542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002544WDI_JoinReq
2545(
2546 WDI_JoinReqParamsType* pwdiJoinParams,
2547 WDI_JoinRspCb wdiJoinRspCb,
2548 void* pUserData
2549)
2550{
2551 WDI_EventInfoType wdiEventData;
2552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2553
2554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 ------------------------------------------------------------------------*/
2557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2558 {
2559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2560 "WDI API call before module is initialized - Fail request");
2561
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 }
2564
2565 /*------------------------------------------------------------------------
2566 Fill in Event data and post to the Main FSM
2567 ------------------------------------------------------------------------*/
2568 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 wdiEventData.pEventData = pwdiJoinParams;
2570 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2571 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 wdiEventData.pUserData = pUserData;
2573
2574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2575
2576}/*WDI_JoinReq*/
2577
2578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 wishes to configure the newly acquired or in process of
2581 being acquired BSS to the HW . Upon the call of this API
2582 the WLAN DAL will pack and send a HAL Config BSS request
2583 message to the lower RIVA sub-system if DAL is in state
2584 STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_JoinReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiConfigBSSRspCb: callback for passing back the
2595 response of the config BSS operation received from the
2596 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_JoinReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_ConfigBSSReq
2606(
2607 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2608 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiConfigBSSParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2632 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_ConfigBSSReq*/
2638
2639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 disassociating from the BSS and wishes to notify HW.
2642 Upon the call of this API the WLAN DAL will pack and
2643 send a HAL Del BSS request message to the lower RIVA
2644 sub-system if DAL is in state STARTED.
2645
2646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002648
2649 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2650
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 wdiDelBSSRspCb: callback for passing back the response
2655 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 callback
2659
2660 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 @return Result of the function call
2662*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002663WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002664WDI_DelBSSReq
2665(
2666 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2667 WDI_DelBSSRspCb wdiDelBSSRspCb,
2668 void* pUserData
2669)
2670{
2671 WDI_EventInfoType wdiEventData;
2672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2673
2674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 ------------------------------------------------------------------------*/
2677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2678 {
2679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2680 "WDI API call before module is initialized - Fail request");
2681
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 }
2684
2685 /*------------------------------------------------------------------------
2686 Fill in Event data and post to the Main FSM
2687 ------------------------------------------------------------------------*/
2688 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 wdiEventData.pEventData = pwdiDelBSSParams;
2690 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2691 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 wdiEventData.pUserData = pUserData;
2693
2694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2695
2696}/*WDI_DelBSSReq*/
2697
2698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 associated to a BSS and wishes to configure HW for
2701 associated state. Upon the call of this API the WLAN DAL
2702 will pack and send a HAL Post Assoc request message to
2703 the lower RIVA sub-system if DAL is in state STARTED.
2704
2705 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002707
2708 WDI_JoinReq must have been called.
2709
2710 @param wdiPostAssocReqParams: the assoc parameters as specified
2711 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 wdiPostAssocRspCb: callback for passing back the
2714 response of the post assoc operation received from the
2715 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 callback
2719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 @see WDI_JoinReq
2721 @return Result of the function call
2722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002724WDI_PostAssocReq
2725(
2726 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2727 WDI_PostAssocRspCb wdiPostAssocRspCb,
2728 void* pUserData
2729)
2730{
2731 WDI_EventInfoType wdiEventData;
2732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2733
2734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 ------------------------------------------------------------------------*/
2737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2738 {
2739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2740 "WDI API call before module is initialized - Fail request");
2741
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 }
2744
2745 /*------------------------------------------------------------------------
2746 Fill in Event data and post to the Main FSM
2747 ------------------------------------------------------------------------*/
2748 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 wdiEventData.pEventData = pwdiPostAssocReqParams;
2750 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2751 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002752 wdiEventData.pUserData = pUserData;
2753
2754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2755
2756}/*WDI_PostAssocReq*/
2757
2758/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002760 association with another STA has ended and the station
2761 must be deleted from HW. Upon the call of this API the
2762 WLAN DAL will pack and send a HAL Del STA request
2763 message to the lower RIVA sub-system if DAL is in state
2764 STARTED.
2765
2766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002768
2769 WDI_PostAssocReq must have been called.
2770
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 wdiDelSTARspCb: callback for passing back the response
2775 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002778 callback
2779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 @see WDI_PostAssocReq
2781 @return Result of the function call
2782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002784WDI_DelSTAReq
2785(
2786 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2787 WDI_DelSTARspCb wdiDelSTARspCb,
2788 void* pUserData
2789)
2790{
2791 WDI_EventInfoType wdiEventData;
2792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2793
2794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 ------------------------------------------------------------------------*/
2797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2798 {
2799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2800 "WDI API call before module is initialized - Fail request");
2801
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 }
2804
2805 /*------------------------------------------------------------------------
2806 Fill in Event data and post to the Main FSM
2807 ------------------------------------------------------------------------*/
2808 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 wdiEventData.pEventData = pwdiDelSTAParams;
2810 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2811 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002812 wdiEventData.pUserData = pUserData;
2813
2814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2815
2816}/*WDI_DelSTAReq*/
2817
Jeff Johnsone7245742012-09-05 17:12:55 -07002818/*========================================================================
2819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822==========================================================================*/
2823
2824/**
2825 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2826 install a BSS encryption key on the HW. Upon the call of this
2827 API the WLAN DAL will pack and send a Set BSS Key request
2828 message to the lower RIVA sub-system if DAL is in state
2829 STARTED.
2830
2831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002833
2834 WDI_PostAssocReq must have been called.
2835
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiSetBSSKeyRspCb: callback for passing back the
2840 response of the set BSS Key operation received from the
2841 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_PostAssocReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_SetBSSKeyReq
2851(
2852 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2853 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2877 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881
2882}/*WDI_SetBSSKeyReq*/
2883
2884/**
2885 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2886 uninstall a BSS key from HW. Upon the call of this API the
2887 WLAN DAL will pack and send a HAL Remove BSS Key request
2888 message to the lower RIVA sub-system if DAL is in state
2889 STARTED.
2890
2891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002893
2894 WDI_SetBSSKeyReq must have been called.
2895
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 wdiRemoveBSSKeyRspCb: callback for passing back the
2900 response of the remove BSS key operation received from
2901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 callback
2905
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 @see WDI_SetBSSKeyReq
2907 @return Result of the function call
2908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002910WDI_RemoveBSSKeyReq
2911(
2912 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2913 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2914 void* pUserData
2915)
2916{
2917 WDI_EventInfoType wdiEventData;
2918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2919
2920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 ------------------------------------------------------------------------*/
2923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2924 {
2925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2926 "WDI API call before module is initialized - Fail request");
2927
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 }
2930
2931 /*------------------------------------------------------------------------
2932 Fill in Event data and post to the Main FSM
2933 ------------------------------------------------------------------------*/
2934 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002935 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2936 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2937 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002938 wdiEventData.pUserData = pUserData;
2939
2940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2941
2942}/*WDI_RemoveBSSKeyReq*/
2943
2944
2945/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 ready to install a STA(ast) encryption key in HW. Upon
2948 the call of this API the WLAN DAL will pack and send a
2949 HAL Set STA Key request message to the lower RIVA
2950 sub-system if DAL is in state STARTED.
2951
2952 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002954
2955 WDI_PostAssocReq must have been called.
2956
Jeff Johnsone7245742012-09-05 17:12:55 -07002957 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 wdiSetSTAKeyRspCb: callback for passing back the
2961 response of the set STA key operation received from the
2962 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 callback
2966
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 @see WDI_PostAssocReq
2968 @return Result of the function call
2969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002971WDI_SetSTAKeyReq
2972(
2973 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2974 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2975 void* pUserData
2976)
2977{
2978 WDI_EventInfoType wdiEventData;
2979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2980
2981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 ------------------------------------------------------------------------*/
2984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2985 {
2986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2987 "WDI API call before module is initialized - Fail request");
2988
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 }
2991
2992 /*------------------------------------------------------------------------
2993 Fill in Event data and post to the Main FSM
2994 ------------------------------------------------------------------------*/
2995 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2997 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2998 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 wdiEventData.pUserData = pUserData;
3000
3001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3002
3003}/*WDI_SetSTAKeyReq*/
3004
3005
3006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 wants to uninstall a previously set STA key in HW. Upon
3009 the call of this API the WLAN DAL will pack and send a
3010 HAL Remove STA Key request message to the lower RIVA
3011 sub-system if DAL is in state STARTED.
3012
3013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003015
3016 WDI_SetSTAKeyReq must have been called.
3017
Jeff Johnsone7245742012-09-05 17:12:55 -07003018 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 wdiRemoveSTAKeyRspCb: callback for passing back the
3022 response of the remove STA key operation received from
3023 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 callback
3027
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 @see WDI_SetSTAKeyReq
3029 @return Result of the function call
3030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003032WDI_RemoveSTAKeyReq
3033(
3034 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3035 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3036 void* pUserData
3037)
3038{
3039 WDI_EventInfoType wdiEventData;
3040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3041
3042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 ------------------------------------------------------------------------*/
3045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3046 {
3047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3048 "WDI API call before module is initialized - Fail request");
3049
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 }
3052
3053 /*------------------------------------------------------------------------
3054 Fill in Event data and post to the Main FSM
3055 ------------------------------------------------------------------------*/
3056 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3058 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3059 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 wdiEventData.pUserData = pUserData;
3061
3062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3063
3064}/*WDI_RemoveSTAKeyReq*/
3065
3066
3067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 wants to install a STA Bcast encryption key on the HW.
3070 Upon the call of this API the WLAN DAL will pack and
3071 send a HAL Start request message to the lower RIVA
3072 sub-system if DAL is in state STARTED.
3073
3074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003076
3077 WDI_PostAssocReq must have been called.
3078
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiSetSTABcastKeyRspCb: callback for passing back the
3083 response of the set BSS Key operation received from the
3084 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 callback
3088
Jeff Johnson295189b2012-06-20 16:38:30 -07003089 @see WDI_PostAssocReq
3090 @return Result of the function call
3091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003093WDI_SetSTABcastKeyReq
3094(
3095 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3096 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3097 void* pUserData
3098)
3099
3100{
3101 WDI_EventInfoType wdiEventData;
3102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3103
3104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 ------------------------------------------------------------------------*/
3107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3108 {
3109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3110 "WDI API call before module is initialized - Fail request");
3111
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 }
3114
3115 /*------------------------------------------------------------------------
3116 Fill in Event data and post to the Main FSM
3117 ------------------------------------------------------------------------*/
3118 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3120 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3121 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 wdiEventData.pUserData = pUserData;
3123
3124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3125
3126}/*WDI_SetSTABcastKeyReq*/
3127
3128/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 MAC wants to uninstall a STA Bcast key from HW. Upon the
3131 call of this API the WLAN DAL will pack and send a HAL
3132 Remove STA Bcast Key request message to the lower RIVA
3133 sub-system if DAL is in state STARTED.
3134
3135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003137
3138 WDI_SetSTABcastKeyReq must have been called.
3139
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 parameters as specified by the Device
3142 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003143
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3145 response of the remove STA Bcast key operation received
3146 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003147
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 callback
3150
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 @see WDI_SetSTABcastKeyReq
3152 @return Result of the function call
3153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003155WDI_RemoveSTABcastKeyReq
3156(
3157 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3158 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3159 void* pUserData
3160)
3161{
3162 WDI_EventInfoType wdiEventData;
3163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3164
3165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 ------------------------------------------------------------------------*/
3168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3169 {
3170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3171 "WDI API call before module is initialized - Fail request");
3172
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 }
3175
3176 /*------------------------------------------------------------------------
3177 Fill in Event data and post to the Main FSM
3178 ------------------------------------------------------------------------*/
3179 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3181 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3182 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 wdiEventData.pUserData = pUserData;
3184
3185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3186
3187}/*WDI_RemoveSTABcastKeyReq*/
3188
3189/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 MAC wants to set Max Tx Power to HW. Upon the
3192 call of this API the WLAN DAL will pack and send a HAL
3193 Remove STA Bcast Key request message to the lower RIVA
3194 sub-system if DAL is in state STARTED.
3195
3196 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003197 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003198
3199 WDI_SetSTABcastKeyReq must have been called.
3200
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 parameters as specified by the Device
3203 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3206 response of the remove STA Bcast key operation received
3207 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003208
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 callback
3211
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 @see WDI_SetMaxTxPowerReq
3213 @return Result of the function call
3214*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003215WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003216WDI_SetMaxTxPowerReq
3217(
3218 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3219 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3220 void* pUserData
3221)
3222{
3223 WDI_EventInfoType wdiEventData;
3224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3225
3226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 ------------------------------------------------------------------------*/
3229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3230 {
3231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3232 "WDI API call before module is initialized - Fail request");
3233
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 }
3236
3237 /*------------------------------------------------------------------------
3238 Fill in Event data and post to the Main FSM
3239 ------------------------------------------------------------------------*/
3240 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3242 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3243 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 wdiEventData.pUserData = pUserData;
3245
3246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3247}
3248
schang86c22c42013-03-13 18:41:24 -07003249/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003250 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3251 MAC wants to set Max Tx Power to HW for specific band.
3252
3253 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3254
3255 wdiReqStatusCb: callback for passing back the
3256 response msg from the device
3257
3258 pUserData: user data will be passed back with the
3259 callback
3260
3261 @see WDI_SetMaxTxPowerPerBandReq
3262 @return Result of the function call
3263*/
3264WDI_Status
3265WDI_SetMaxTxPowerPerBandReq
3266(
3267 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3268 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3269 void* pUserData
3270)
3271{
3272 WDI_EventInfoType wdiEventData;
3273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3274
3275 /*------------------------------------------------------------------------
3276 Sanity Check
3277 ------------------------------------------------------------------------*/
3278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3279 {
3280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3281 "WDI API call before module is initialized - Fail request");
3282
3283 return WDI_STATUS_E_NOT_ALLOWED;
3284 }
3285
3286 /*------------------------------------------------------------------------
3287 Fill in Event data and post to the Main FSM
3288 ------------------------------------------------------------------------*/
3289 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3290 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3291 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3292 wdiEventData.pCBfnc = wdiReqStatusCb;
3293 wdiEventData.pUserData = pUserData;
3294
3295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3296}
3297
3298/**
schang86c22c42013-03-13 18:41:24 -07003299 @brief WDI_SetTxPowerReq will be called when the upper
3300 MAC wants to set Tx Power to HW.
3301 In state BUSY this request will be queued. Request won't
3302 be allowed in any other state.
3303
3304
3305 @param pwdiSetTxPowerParams: set TS Power parameters
3306 BSSID and target TX Power with dbm included
3307
3308 wdiReqStatusCb: callback for passing back the response
3309
3310 pUserData: user data will be passed back with the
3311 callback
3312
3313 @return Result of the function call
3314*/
3315WDI_Status
3316WDI_SetTxPowerReq
3317(
3318 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3319 WDA_SetTxPowerRspCb wdiReqStatusCb,
3320 void* pUserData
3321)
3322{
3323 WDI_EventInfoType wdiEventData;
3324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3325
3326 /*------------------------------------------------------------------------
3327 Sanity Check
3328 ------------------------------------------------------------------------*/
3329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3330 {
3331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3332 "WDI API call before module is initialized - Fail request");
3333
3334 return WDI_STATUS_E_NOT_ALLOWED;
3335 }
3336
3337 /*------------------------------------------------------------------------
3338 Fill in Event data and post to the Main FSM
3339 ------------------------------------------------------------------------*/
3340 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3341 wdiEventData.pEventData = pwdiSetTxPowerParams;
3342 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3343 wdiEventData.pCBfnc = wdiReqStatusCb;
3344 wdiEventData.pUserData = pUserData;
3345
3346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3347}
3348
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003349#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003350WDI_Status
3351WDI_TSMStatsReq
3352(
3353 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3354 WDI_TsmRspCb wdiReqStatusCb,
3355 void* pUserData
3356)
3357{
3358 WDI_EventInfoType wdiEventData;
3359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003360 /*------------------------------------------------------------------------
3361 Sanity Check
3362 ------------------------------------------------------------------------*/
3363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3364 {
3365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3366 "WDI API call before module is initialized - Fail request");
3367
3368 return WDI_STATUS_E_NOT_ALLOWED;
3369 }
3370
3371 /*------------------------------------------------------------------------
3372 Fill in Event data and post to the Main FSM
3373 ------------------------------------------------------------------------*/
3374 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3375 wdiEventData.pEventData = pwdiTsmReqParams;
3376 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3377 wdiEventData.pCBfnc = wdiReqStatusCb;
3378 wdiEventData.pUserData = pUserData;
3379
3380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3381
3382}
3383#endif
3384
3385/*========================================================================
3386
3387 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003388
Jeff Johnson295189b2012-06-20 16:38:30 -07003389==========================================================================*/
3390
3391/**
3392 @brief WDI_AddTSReq will be called when the upper MAC to inform
3393 the device of a successful add TSpec negotiation. HW
3394 needs to receive the TSpec Info from the UMAC in order
3395 to configure properly the QoS data traffic. Upon the
3396 call of this API the WLAN DAL will pack and send a HAL
3397 Add TS request message to the lower RIVA sub-system if
3398 DAL is in state STARTED.
3399
3400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003402
3403 WDI_PostAssocReq must have been called.
3404
3405 @param wdiAddTsReqParams: the add TS parameters as specified by
3406 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 wdiAddTsRspCb: callback for passing back the response of
3409 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 callback
3413
Jeff Johnson295189b2012-06-20 16:38:30 -07003414 @see WDI_PostAssocReq
3415 @return Result of the function call
3416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003418WDI_AddTSReq
3419(
3420 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3421 WDI_AddTsRspCb wdiAddTsRspCb,
3422 void* pUserData
3423)
3424{
3425 WDI_EventInfoType wdiEventData;
3426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3427
3428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 ------------------------------------------------------------------------*/
3431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3432 {
3433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3434 "WDI API call before module is initialized - Fail request");
3435
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 }
3438
3439 /*------------------------------------------------------------------------
3440 Fill in Event data and post to the Main FSM
3441 ------------------------------------------------------------------------*/
3442 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 wdiEventData.pEventData = pwdiAddTsReqParams;
3444 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3445 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 wdiEventData.pUserData = pUserData;
3447
3448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3449
3450}/*WDI_AddTSReq*/
3451
3452
3453
3454/**
3455 @brief WDI_DelTSReq will be called when the upper MAC has ended
3456 admission on a specific AC. This is to inform HW that
3457 QoS traffic parameters must be rest. Upon the call of
3458 this API the WLAN DAL will pack and send a HAL Del TS
3459 request message to the lower RIVA sub-system if DAL is
3460 in state STARTED.
3461
3462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003464
3465 WDI_AddTSReq must have been called.
3466
3467 @param wdiDelTsReqParams: the del TS parameters as specified by
3468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 wdiDelTsRspCb: callback for passing back the response of
3471 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_AddTSReq
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_DelTSReq
3481(
3482 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3483 WDI_DelTsRspCb wdiDelTsRspCb,
3484 void* pUserData
3485)
3486{
3487 WDI_EventInfoType wdiEventData;
3488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3489
3490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 ------------------------------------------------------------------------*/
3493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3494 {
3495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3496 "WDI API call before module is initialized - Fail request");
3497
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 }
3500
3501 /*------------------------------------------------------------------------
3502 Fill in Event data and post to the Main FSM
3503 ------------------------------------------------------------------------*/
3504 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 wdiEventData.pEventData = pwdiDelTsReqParams;
3506 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3507 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 wdiEventData.pUserData = pUserData;
3509
3510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3511
3512}/*WDI_DelTSReq*/
3513
3514
3515
3516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003518 wishes to update the EDCA parameters used by HW for QoS
3519 data traffic. Upon the call of this API the WLAN DAL
3520 will pack and send a HAL Update EDCA Params request
3521 message to the lower RIVA sub-system if DAL is in state
3522 STARTED.
3523
3524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003526
3527 WDI_PostAssocReq must have been called.
3528
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 wdiUpdateEDCAParamsRspCb: callback for passing back the
3533 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 callback
3537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 @see WDI_PostAssocReq
3539 @return Result of the function call
3540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003542WDI_UpdateEDCAParams
3543(
3544 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3545 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3546 void* pUserData
3547)
3548{
3549 WDI_EventInfoType wdiEventData;
3550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3551
3552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 ------------------------------------------------------------------------*/
3555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3556 {
3557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3558 "WDI API call before module is initialized - Fail request");
3559
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 }
3562
3563 /*------------------------------------------------------------------------
3564 Fill in Event data and post to the Main FSM
3565 ------------------------------------------------------------------------*/
3566 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3568 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3569 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 wdiEventData.pUserData = pUserData;
3571
3572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3573
3574}/*WDI_UpdateEDCAParams*/
3575
3576
3577/**
3578 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3579 successfully a BA session and needs to notify the HW for
3580 the appropriate settings to take place. Upon the call of
3581 this API the WLAN DAL will pack and send a HAL Add BA
3582 request message to the lower RIVA sub-system if DAL is
3583 in state STARTED.
3584
3585 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003587
3588 WDI_PostAssocReq must have been called.
3589
3590 @param wdiAddBAReqParams: the add BA parameters as specified by
3591 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 wdiAddBARspCb: callback for passing back the response of
3594 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 callback
3598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 @see WDI_PostAssocReq
3600 @return Result of the function call
3601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003603WDI_AddBASessionReq
3604(
3605 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3606 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3607 void* pUserData
3608)
3609{
3610 WDI_EventInfoType wdiEventData;
3611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3612
3613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 ------------------------------------------------------------------------*/
3616 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3617 {
3618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3619 "WDI API call before module is initialized - Fail request");
3620
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 }
3623
3624 /*------------------------------------------------------------------------
3625 Fill in Event data and post to the Main FSM
3626 ------------------------------------------------------------------------*/
3627 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3629 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3630 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 wdiEventData.pUserData = pUserData;
3632
3633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3634
3635}/*WDI_AddBASessionReq*/
3636
3637/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 inform HW that it has deleted a previously created BA
3640 session. Upon the call of this API the WLAN DAL will
3641 pack and send a HAL Del BA request message to the lower
3642 RIVA sub-system if DAL is in state STARTED.
3643
3644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003646
3647 WDI_AddBAReq must have been called.
3648
3649 @param wdiDelBAReqParams: the del BA parameters as specified by
3650 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003651
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 wdiDelBARspCb: callback for passing back the response of
3653 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @see WDI_AddBAReq
3659 @return Result of the function call
3660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003662WDI_DelBAReq
3663(
3664 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3665 WDI_DelBARspCb wdiDelBARspCb,
3666 void* pUserData
3667)
3668{
3669 WDI_EventInfoType wdiEventData;
3670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3671
3672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 ------------------------------------------------------------------------*/
3675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3676 {
3677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3678 "WDI API call before module is initialized - Fail request");
3679
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 }
3682
3683 /*------------------------------------------------------------------------
3684 Fill in Event data and post to the Main FSM
3685 ------------------------------------------------------------------------*/
3686 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 wdiEventData.pEventData = pwdiDelBAReqParams;
3688 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3689 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 wdiEventData.pUserData = pUserData;
3691
3692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3693
3694}/*WDI_DelBAReq*/
3695
Jeff Johnsone7245742012-09-05 17:12:55 -07003696/*========================================================================
3697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003699
Jeff Johnson295189b2012-06-20 16:38:30 -07003700==========================================================================*/
3701
3702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 wants to set the power save related configurations of
3705 the WLAN Device. Upon the call of this API the WLAN DAL
3706 will pack and send a HAL Update CFG request message to
3707 the lower RIVA sub-system if DAL is in state STARTED.
3708
3709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003711
3712 WDI_Start must have been called.
3713
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiSetPwrSaveCfgCb: callback for passing back the
3718 response of the set power save cfg operation received
3719 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 callback
3723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 @return Result of the function call
3726*/
3727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003728WDI_SetPwrSaveCfgReq
3729(
3730 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3731 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3732 void* pUserData
3733)
3734{
3735 WDI_EventInfoType wdiEventData;
3736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3737
3738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 ------------------------------------------------------------------------*/
3741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3742 {
3743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3744 "WDI API call before module is initialized - Fail request");
3745
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 }
3748
3749 /*------------------------------------------------------------------------
3750 Fill in Event data and post to the Main FSM
3751 ------------------------------------------------------------------------*/
3752 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 wdiEventData.pEventData = pwdiPowerSaveCfg;
3754 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3755 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 wdiEventData.pUserData = pUserData;
3757
3758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3759
3760}/*WDI_SetPwrSaveCfgReq*/
3761
3762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 request the device to get into IMPS power state. Upon
3765 the call of this API the WLAN DAL will send a HAL Enter
3766 IMPS request message to the lower RIVA sub-system if DAL
3767 is in state STARTED.
3768
3769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003771
Jeff Johnsone7245742012-09-05 17:12:55 -07003772
3773 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 response of the Enter IMPS operation received from the
3775 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 callback
3779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 @see WDI_Start
3781 @return Result of the function call
3782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003784WDI_EnterImpsReq
3785(
Mihir Shetea4306052014-03-25 00:02:54 +05303786 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3788 void* pUserData
3789)
3790{
3791 WDI_EventInfoType wdiEventData;
3792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3793
3794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 ------------------------------------------------------------------------*/
3797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3798 {
3799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3800 "WDI API call before module is initialized - Fail request");
3801
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 }
3804
3805 /*------------------------------------------------------------------------
3806 Fill in Event data and post to the Main FSM
3807 ------------------------------------------------------------------------*/
3808 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303809 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3810 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiEventData.pUserData = pUserData;
3813
3814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3815
3816}/*WDI_EnterImpsReq*/
3817
3818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 request the device to get out of IMPS power state. Upon
3821 the call of this API the WLAN DAL will send a HAL Exit
3822 IMPS request message to the lower RIVA sub-system if DAL
3823 is in state STARTED.
3824
3825 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
3830 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 callback
3835
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 @see WDI_Start
3837 @return Result of the function call
3838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003840WDI_ExitImpsReq
3841(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303842 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3844 void* pUserData
3845)
3846{
3847 WDI_EventInfoType wdiEventData;
3848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3849
3850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 ------------------------------------------------------------------------*/
3853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3854 {
3855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3856 "WDI API call before module is initialized - Fail request");
3857
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 }
3860
3861 /*------------------------------------------------------------------------
3862 Fill in Event data and post to the Main FSM
3863 ------------------------------------------------------------------------*/
3864 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303865 wdiEventData.pEventData = pwdiExitImpsReqParams;
3866 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 wdiEventData.pUserData = pUserData;
3869
3870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3871
3872}/*WDI_ExitImpsReq*/
3873
3874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 request the device to get into BMPS power state. Upon
3877 the call of this API the WLAN DAL will pack and send a
3878 HAL Enter BMPS request message to the lower RIVA
3879 sub-system if DAL is in state STARTED.
3880
3881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003883
3884 WDI_PostAssocReq must have been called.
3885
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 wdiEnterBmpsRspCb: callback for passing back the
3890 response of the Enter BMPS operation received from the
3891 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 callback
3895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 @see WDI_PostAssocReq
3897 @return Result of the function call
3898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003900WDI_EnterBmpsReq
3901(
3902 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3903 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3904 void* pUserData
3905)
3906{
3907 WDI_EventInfoType wdiEventData;
3908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3909
3910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 ------------------------------------------------------------------------*/
3913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3914 {
3915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3916 "WDI API call before module is initialized - Fail request");
3917
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 }
3920
3921 /*------------------------------------------------------------------------
3922 Fill in Event data and post to the Main FSM
3923 ------------------------------------------------------------------------*/
3924 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3926 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3927 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 wdiEventData.pUserData = pUserData;
3929
3930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3931
3932}/*WDI_EnterBmpsReq*/
3933
3934/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 request the device to get out of BMPS power state. Upon
3937 the call of this API the WLAN DAL will pack and send a
3938 HAL Exit BMPS request message to the lower RIVA
3939 sub-system if DAL is in state STARTED.
3940
3941 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003943
3944 WDI_PostAssocReq must have been called.
3945
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 wdiExitBmpsRspCb: callback for passing back the response
3950 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003953 callback
3954
Jeff Johnson295189b2012-06-20 16:38:30 -07003955 @see WDI_PostAssocReq
3956 @return Result of the function call
3957*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003958WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003959WDI_ExitBmpsReq
3960(
3961 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3962 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3963 void* pUserData
3964)
3965{
3966 WDI_EventInfoType wdiEventData;
3967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3968
3969 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 ------------------------------------------------------------------------*/
3972 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3973 {
3974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3975 "WDI API call before module is initialized - Fail request");
3976
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 }
3979
3980 /*------------------------------------------------------------------------
3981 Fill in Event data and post to the Main FSM
3982 ------------------------------------------------------------------------*/
3983 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3985 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3986 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 wdiEventData.pUserData = pUserData;
3988
3989 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3990
3991}/*WDI_ExitBmpsReq*/
3992
3993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 request the device to get into UAPSD power state. Upon
3996 the call of this API the WLAN DAL will pack and send a
3997 HAL Enter UAPSD request message to the lower RIVA
3998 sub-system if DAL is in state STARTED.
3999
4000 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004002
4003 WDI_PostAssocReq must have been called.
4004 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
4006 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 wdiEnterUapsdRspCb: callback for passing back the
4010 response of the Enter UAPSD operation received from the
4011 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 callback
4015
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4017 @return Result of the function call
4018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004020WDI_EnterUapsdReq
4021(
4022 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4023 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4024 void* pUserData
4025)
4026{
4027 WDI_EventInfoType wdiEventData;
4028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4029
4030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 ------------------------------------------------------------------------*/
4033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4034 {
4035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4036 "WDI API call before module is initialized - Fail request");
4037
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 }
4040
4041 /*------------------------------------------------------------------------
4042 Fill in Event data and post to the Main FSM
4043 ------------------------------------------------------------------------*/
4044 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4046 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4047 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 wdiEventData.pUserData = pUserData;
4049
4050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4051
4052}/*WDI_EnterUapsdReq*/
4053
4054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004056 request the device to get out of UAPSD power state. Upon
4057 the call of this API the WLAN DAL will send a HAL Exit
4058 UAPSD request message to the lower RIVA sub-system if
4059 DAL is in state STARTED.
4060
4061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004063
4064 WDI_PostAssocReq must have been called.
4065
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 response of the Exit UAPSD operation received from the
4068 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_PostAssocReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_ExitUapsdReq
4078(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004079 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004102 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4103 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108
4109}/*WDI_ExitUapsdReq*/
4110
4111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 MAC wants to set the UAPSD related configurations
4114 of an associated STA (while acting as an AP) to the WLAN
4115 Device. Upon the call of this API the WLAN DAL will pack
4116 and send a HAL Update UAPSD params request message to
4117 the lower RIVA sub-system if DAL is in state STARTED.
4118
4119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004121
4122 WDI_ConfigBSSReq must have been called.
4123
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 wdiUpdateUapsdParamsCb: callback for passing back the
4128 response of the update UAPSD params operation received
4129 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 callback
4133
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 @see WDI_ConfigBSSReq
4135 @return Result of the function call
4136*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004137WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004138WDI_UpdateUapsdParamsReq
4139(
4140 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4141 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4142 void* pUserData
4143)
4144{
4145 WDI_EventInfoType wdiEventData;
4146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4147
4148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 ------------------------------------------------------------------------*/
4151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4152 {
4153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4154 "WDI API call before module is initialized - Fail request");
4155
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 }
4158
4159 /*------------------------------------------------------------------------
4160 Fill in Event data and post to the Main FSM
4161 ------------------------------------------------------------------------*/
4162 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004164 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 wdiEventData.pUserData = pUserData;
4167
4168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4169
4170}/*WDI_UpdateUapsdParamsReq*/
4171
4172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 MAC wants to set the UAPSD related configurations before
4175 requesting for enter UAPSD power state to the WLAN
4176 Device. Upon the call of this API the WLAN DAL will pack
4177 and send a HAL Set UAPSD params request message to
4178 the lower RIVA sub-system if DAL is in state STARTED.
4179
4180 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004182
4183 WDI_PostAssocReq must have been called.
4184
4185 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4186 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 wdiSetUapsdAcParamsCb: callback for passing back the
4189 response of the set UAPSD params operation received from
4190 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 callback
4194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 @see WDI_PostAssocReq
4196 @return Result of the function call
4197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004199WDI_SetUapsdAcParamsReq
4200(
4201 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4202 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4203 void* pUserData
4204)
4205{
4206 WDI_EventInfoType wdiEventData;
4207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4208
4209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 ------------------------------------------------------------------------*/
4212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4213 {
4214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4215 "WDI API call before module is initialized - Fail request");
4216
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 }
4219
4220 /*------------------------------------------------------------------------
4221 Fill in Event data and post to the Main FSM
4222 ------------------------------------------------------------------------*/
4223 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004224 wdiEventData.pEventData = pwdiUapsdInfo;
4225 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4226 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 wdiEventData.pUserData = pUserData;
4228
4229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4230
4231}/*WDI_SetUapsdAcParamsReq*/
4232
4233/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304234 @brief WDI_FWLoggingDXEdoneInd
4235
4236 FW Logging DXE done Indication from the upper layer will be sent
4237 down to HAL
4238
4239 @param WDI_FWLoggingDXEdoneIndInfoType
4240
4241 @see
4242
4243 @return Status of the request
4244*/
4245WDI_Status
4246WDI_FWLoggingDXEdoneInd
4247(
4248 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4249)
4250{
4251
4252 WDI_EventInfoType wdiEventData;
4253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4254
4255 /*------------------------------------------------------------------------
4256 Sanity Check
4257 ------------------------------------------------------------------------*/
4258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4259 {
4260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4261 "WDI API call before module is initialized - Fail request");
4262
4263 return WDI_STATUS_E_NOT_ALLOWED;
4264 }
4265
4266 /*------------------------------------------------------------------------
4267 Fill in Event data and post to the Main FSM
4268 ------------------------------------------------------------------------*/
4269 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4270 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4271 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4272 wdiEventData.pCBfnc = NULL;
4273 wdiEventData.pUserData = NULL;
4274
4275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4276
4277}/*WDI_FWLoggingDXEdoneInd*/
4278
4279/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304280 @brief WDI_GetFrameLogReq will be called when the upper
4281 MAC wants to initialize frame logging. Upon the call of
4282 this API the WLAN DAL will pack and send a HAL
4283 Frame logging init request message to
4284 the lower RIVA sub-system.
4285
4286 In state BUSY this request will be queued. Request won't
4287 be allowed in any other state.
4288
4289
4290 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4291 as specified by the Device Interface
4292
4293 wdiGetFrameLogRspCb: callback for passing back the
4294 response of the frame logging init operation received
4295 from the device
4296
4297 pUserData: user data will be passed back with the
4298 callback
4299
4300 @return Result of the function call
4301*/
4302WDI_Status
4303WDI_GetFrameLogReq
4304(
4305 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4306 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4307 void* pUserData
4308)
4309{
4310 WDI_EventInfoType wdiEventData;
4311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4312
4313 /*------------------------------------------------------------------------
4314 Sanity Check
4315 ------------------------------------------------------------------------*/
4316 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4317 {
4318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4319 "WDI API call before module is initialized - Fail request");
4320
4321 return WDI_STATUS_E_NOT_ALLOWED;
4322 }
4323
4324 /*------------------------------------------------------------------------
4325 Fill in Event data and post to the Main FSM
4326 ------------------------------------------------------------------------*/
4327 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4328 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4329 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4330 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4331 wdiEventData.pUserData = pUserData;
4332
4333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4334}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304335
4336
4337/**
4338 @brief WDI_FatalEventLogsReq will be called when the upper
4339 MAC wants to send the flush command. Upon the call of
4340 this API the WLAN DAL will pack and send a HAL
4341 Fatal Event Req message to the lower RIVA sub-system.
4342
4343 In state BUSY this request will be queued. Request won't
4344 be allowed in any other state.
4345
4346
4347 @param pwdiFlushLogsReqInfo: the Flush Logs params
4348 as specified by the Device Interface
4349
4350 wdiFlushLogsRspCb: callback for passing back the
4351 response of the Flush Logs operation received
4352 from the device
4353
4354 pUserData: user data will be passed back with the
4355 callback
4356
4357 @return Result of the function call
4358*/
4359
4360WDI_Status
4361WDI_FatalEventLogsReq
4362(
4363 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4364 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4365 void* pUserData
4366)
4367{
4368 WDI_EventInfoType wdiEventData;
4369
4370 /*------------------------------------------------------------------------
4371 Sanity Check
4372 ------------------------------------------------------------------------*/
4373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4374 {
4375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4376 "WDI API call before module is initialized - Fail request");
4377
4378 return WDI_STATUS_E_NOT_ALLOWED;
4379 }
4380
4381 /*------------------------------------------------------------------------
4382 Fill in Event data and post to the Main FSM
4383 ------------------------------------------------------------------------*/
4384 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4385 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4386 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4387 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4388 wdiEventData.pUserData = pUserData;
4389
4390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4391
4392}
4393
4394
Siddharth Bhal64246172015-02-27 01:04:37 +05304395/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304396 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304397 MAC wants to initialize frame logging. Upon the call of
4398 this API the WLAN DAL will pack and send a HAL
4399 Frame logging init request message to
4400 the lower RIVA sub-system.
4401
4402 In state BUSY this request will be queued. Request won't
4403 be allowed in any other state.
4404
4405
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304406 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304407 as specified by the Device Interface
4408
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304409 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304410 response of the frame logging init operation received
4411 from the device
4412
4413 pUserData: user data will be passed back with the
4414 callback
4415
4416 @return Result of the function call
4417*/
4418WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304419WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304420(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304421 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4422 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304423 void* pUserData
4424)
4425{
4426 WDI_EventInfoType wdiEventData;
4427
4428 /*------------------------------------------------------------------------
4429 Sanity Check
4430 ------------------------------------------------------------------------*/
4431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4432 {
4433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4434 "WDI API call before module is initialized - Fail request");
4435
4436 return WDI_STATUS_E_NOT_ALLOWED;
4437 }
4438
4439 /*------------------------------------------------------------------------
4440 Fill in Event data and post to the Main FSM
4441 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304442 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4443 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4444 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4445 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304446 wdiEventData.pUserData = pUserData;
4447
4448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4449}
4450
4451/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 MAC wants to set/reset the RXP filters for received pkts
4454 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4455 and send a HAL configure RXP filter request message to
4456 the lower RIVA sub-system.
4457
4458 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004460
Jeff Johnsone7245742012-09-05 17:12:55 -07004461
4462 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 filter as specified by the Device
4464 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004465
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 wdiConfigureRxpFilterCb: callback for passing back the
4467 response of the configure RXP filter operation received
4468 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 callback
4472
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 @return Result of the function call
4474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004476WDI_ConfigureRxpFilterReq
4477(
4478 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4479 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4480 void* pUserData
4481)
4482{
4483 WDI_EventInfoType wdiEventData;
4484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4485
4486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 ------------------------------------------------------------------------*/
4489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4490 {
4491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4492 "WDI API call before module is initialized - Fail request");
4493
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 }
4496
4497 /*------------------------------------------------------------------------
4498 Fill in Event data and post to the Main FSM
4499 ------------------------------------------------------------------------*/
4500 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004501 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4502 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4503 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 wdiEventData.pUserData = pUserData;
4505
4506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4507}/*WDI_ConfigureRxpFilterReq*/
4508
4509/**
4510 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4511 wants to set the beacon filters while in power save.
4512 Upon the call of this API the WLAN DAL will pack and
4513 send a Beacon filter request message to the
4514 lower RIVA sub-system.
4515
4516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004518
Jeff Johnsone7245742012-09-05 17:12:55 -07004519
4520 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 filter as specified by the Device
4522 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 wdiBeaconFilterCb: callback for passing back the
4525 response of the set beacon filter operation received
4526 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004527
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 callback
4530
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 @return Result of the function call
4532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004534WDI_SetBeaconFilterReq
4535(
4536 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4537 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4538 void* pUserData
4539)
4540{
4541 WDI_EventInfoType wdiEventData;
4542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4543
4544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 ------------------------------------------------------------------------*/
4547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4548 {
4549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4550 "WDI API call before module is initialized - Fail request");
4551
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 }
4554
4555 /*------------------------------------------------------------------------
4556 Fill in Event data and post to the Main FSM
4557 ------------------------------------------------------------------------*/
4558 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004560 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 wdiEventData.pUserData = pUserData;
4563
4564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4565}/*WDI_SetBeaconFilterReq*/
4566
4567/**
4568 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4569 wants to remove the beacon filter for particular IE
4570 while in power save. Upon the call of this API the WLAN
4571 DAL will pack and send a remove Beacon filter request
4572 message to the lower RIVA sub-system.
4573
4574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
4578 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 filter as specified by the Device
4580 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004581
Jeff Johnson295189b2012-06-20 16:38:30 -07004582 wdiBeaconFilterCb: callback for passing back the
4583 response of the remove beacon filter operation received
4584 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 callback
4588
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 @return Result of the function call
4590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004592WDI_RemBeaconFilterReq
4593(
4594 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4595 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4596 void* pUserData
4597)
4598{
4599 WDI_EventInfoType wdiEventData;
4600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4601
4602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 ------------------------------------------------------------------------*/
4605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4606 {
4607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4608 "WDI API call before module is initialized - Fail request");
4609
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004611 }
4612
4613 /*------------------------------------------------------------------------
4614 Fill in Event data and post to the Main FSM
4615 ------------------------------------------------------------------------*/
4616 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004618 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wdiEventData.pUserData = pUserData;
4621
4622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4623}/*WDI_RemBeaconFilterReq*/
4624
4625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004627 MAC wants to set the RSSI thresholds related
4628 configurations while in power save. Upon the call of
4629 this API the WLAN DAL will pack and send a HAL Set RSSI
4630 thresholds request message to the lower RIVA
4631 sub-system if DAL is in state STARTED.
4632
4633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004635
4636 WDI_PostAssocReq must have been called.
4637
4638 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 wdiSetUapsdAcParamsCb: callback for passing back the
4642 response of the set UAPSD params operation received from
4643 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004644
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 callback
4647
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 @see WDI_PostAssocReq
4649 @return Result of the function call
4650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004652WDI_SetRSSIThresholdsReq
4653(
4654 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4655 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4656 void* pUserData
4657)
4658{
4659 WDI_EventInfoType wdiEventData;
4660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4661
4662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 ------------------------------------------------------------------------*/
4665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4666 {
4667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4668 "WDI API call before module is initialized - Fail request");
4669
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 }
4672
4673 /*------------------------------------------------------------------------
4674 Fill in Event data and post to the Main FSM
4675 ------------------------------------------------------------------------*/
4676 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004678 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 wdiEventData.pUserData = pUserData;
4681
4682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4683}/* WDI_SetRSSIThresholdsReq*/
4684
4685/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 wants to set the filter to minimize unnecessary host
4688 wakeup due to broadcast traffic while in power save.
4689 Upon the call of this API the WLAN DAL will pack and
4690 send a HAL host offload request message to the
4691 lower RIVA sub-system if DAL is in state STARTED.
4692
4693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004695
4696 WDI_PostAssocReq must have been called.
4697
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 wdiHostOffloadCb: callback for passing back the response
4702 of the host offload operation received from the
4703 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004704
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004706 callback
4707
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 @see WDI_PostAssocReq
4709 @return Result of the function call
4710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004712WDI_HostOffloadReq
4713(
4714 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4715 WDI_HostOffloadCb wdiHostOffloadCb,
4716 void* pUserData
4717)
4718{
4719 WDI_EventInfoType wdiEventData;
4720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4721
4722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 ------------------------------------------------------------------------*/
4725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4726 {
4727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4728 "WDI API call before module is initialized - Fail request");
4729
Jeff Johnsone7245742012-09-05 17:12:55 -07004730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004731 }
4732
4733 /*------------------------------------------------------------------------
4734 Fill in Event data and post to the Main FSM
4735 ------------------------------------------------------------------------*/
4736 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004737 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004738 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 wdiEventData.pUserData = pUserData;
4741
4742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4743}/*WDI_HostOffloadReq*/
4744
4745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 @brief WDI_KeepAliveReq will be called when the upper MAC
4747 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 and minimize unnecessary host wakeups due to while in power save.
4749 Upon the call of this API the WLAN DAL will pack and
4750 send a HAL Keep Alive request message to the
4751 lower RIVA sub-system if DAL is in state STARTED.
4752
4753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004755
4756 WDI_PostAssocReq must have been called.
4757
Jeff Johnsone7245742012-09-05 17:12:55 -07004758 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004760
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 wdiKeepAliveCb: callback for passing back the response
4762 of the Keep Alive operation received from the
4763 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004764
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 callback
4767
Jeff Johnson295189b2012-06-20 16:38:30 -07004768 @see WDI_PostAssocReq
4769 @return Result of the function call
4770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004772WDI_KeepAliveReq
4773(
4774 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4775 WDI_KeepAliveCb wdiKeepAliveCb,
4776 void* pUserData
4777)
4778{
4779 WDI_EventInfoType wdiEventData;
4780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4781
4782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 ------------------------------------------------------------------------*/
4785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4786 {
4787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4788 "WDI_KeepAliveReq: WDI API call before module "
4789 "is initialized - Fail request");
4790
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 }
4793
4794 /*------------------------------------------------------------------------
4795 Fill in Event data and post to the Main FSM
4796 ------------------------------------------------------------------------*/
4797 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 wdiEventData.pEventData = pwdiKeepAliveParams;
4799 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4800 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wdiEventData.pUserData = pUserData;
4802
4803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4804}/*WDI_KeepAliveReq*/
4805
4806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 wants to set the Wowl Bcast ptrn to minimize unnecessary
4809 host wakeup due to broadcast traffic while in power
4810 save. Upon the call of this API the WLAN DAL will pack
4811 and send a HAL Wowl Bcast ptrn request message to the
4812 lower RIVA sub-system if DAL is in state STARTED.
4813
4814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004816
4817 WDI_PostAssocReq must have been called.
4818
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004821
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 wdiWowlAddBcPtrnCb: callback for passing back the
4823 response of the add Wowl bcast ptrn operation received
4824 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 callback
4828
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 @see WDI_PostAssocReq
4830 @return Result of the function call
4831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004833WDI_WowlAddBcPtrnReq
4834(
4835 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4836 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4837 void* pUserData
4838)
4839{
4840 WDI_EventInfoType wdiEventData;
4841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4842
4843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 ------------------------------------------------------------------------*/
4846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4847 {
4848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4849 "WDI API call before module is initialized - Fail request");
4850
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 }
4853
4854 /*------------------------------------------------------------------------
4855 Fill in Event data and post to the Main FSM
4856 ------------------------------------------------------------------------*/
4857 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004859 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiEventData.pUserData = pUserData;
4862
4863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4864}/*WDI_WowlAddBcPtrnReq*/
4865
4866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 wants to clear the Wowl Bcast ptrn. Upon the call of
4869 this API the WLAN DAL will pack and send a HAL delete
4870 Wowl Bcast ptrn request message to the lower RIVA
4871 sub-system if DAL is in state STARTED.
4872
4873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004875
4876 WDI_WowlAddBcPtrnReq must have been called.
4877
Jeff Johnsone7245742012-09-05 17:12:55 -07004878 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004880
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 wdiWowlDelBcPtrnCb: callback for passing back the
4882 response of the del Wowl bcast ptrn operation received
4883 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004884
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 callback
4887
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 @see WDI_WowlAddBcPtrnReq
4889 @return Result of the function call
4890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004892WDI_WowlDelBcPtrnReq
4893(
4894 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4895 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4896 void* pUserData
4897)
4898{
4899 WDI_EventInfoType wdiEventData;
4900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4901
4902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 ------------------------------------------------------------------------*/
4905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4906 {
4907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4908 "WDI API call before module is initialized - Fail request");
4909
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 }
4912
4913 /*------------------------------------------------------------------------
4914 Fill in Event data and post to the Main FSM
4915 ------------------------------------------------------------------------*/
4916 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004918 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wdiEventData.pUserData = pUserData;
4921
4922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4923}/*WDI_WowlDelBcPtrnReq*/
4924
4925/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 wants to enter the Wowl state to minimize unnecessary
4928 host wakeup while in power save. Upon the call of this
4929 API the WLAN DAL will pack and send a HAL Wowl enter
4930 request message to the lower RIVA sub-system if DAL is
4931 in state STARTED.
4932
4933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004935
4936 WDI_PostAssocReq must have been called.
4937
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 wdiWowlEnterReqCb: callback for passing back the
4942 response of the enter Wowl operation received from the
4943 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 callback
4947
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 @see WDI_PostAssocReq
4949 @return Result of the function call
4950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004952WDI_WowlEnterReq
4953(
4954 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4955 WDI_WowlEnterReqCb wdiWowlEnterCb,
4956 void* pUserData
4957)
4958{
4959 WDI_EventInfoType wdiEventData;
4960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4961
4962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 ------------------------------------------------------------------------*/
4965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4966 {
4967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4968 "WDI API call before module is initialized - Fail request");
4969
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 }
4972
4973 /*------------------------------------------------------------------------
4974 Fill in Event data and post to the Main FSM
4975 ------------------------------------------------------------------------*/
4976 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004978 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 wdiEventData.pUserData = pUserData;
4981
4982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4983}/*WDI_WowlEnterReq*/
4984
4985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wants to exit the Wowl state. Upon the call of this API
4988 the WLAN DAL will pack and send a HAL Wowl exit request
4989 message to the lower RIVA sub-system if DAL is in state
4990 STARTED.
4991
4992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004994
4995 WDI_WowlEnterReq must have been called.
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiWowlExitReqCb: callback for passing back the response
5001 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 callback
5005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 @see WDI_WowlEnterReq
5007 @return Result of the function call
5008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005010WDI_WowlExitReq
5011(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005012 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005013 WDI_WowlExitReqCb wdiWowlExitCb,
5014 void* pUserData
5015)
5016{
5017 WDI_EventInfoType wdiEventData;
5018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5019
5020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 ------------------------------------------------------------------------*/
5023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5024 {
5025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5026 "WDI API call before module is initialized - Fail request");
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 }
5030
5031 /*------------------------------------------------------------------------
5032 Fill in Event data and post to the Main FSM
5033 ------------------------------------------------------------------------*/
5034 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005035 wdiEventData.pEventData = pwdiWowlExitParams;
5036 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wdiEventData.pUserData = pUserData;
5039
5040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5041}/*WDI_WowlExitReq*/
5042
5043/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005044 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 the upper MAC wants to dynamically adjusts the listen
5046 interval based on the WLAN/MSM activity. Upon the call
5047 of this API the WLAN DAL will pack and send a HAL
5048 configure Apps Cpu Wakeup State request message to the
5049 lower RIVA sub-system.
5050
5051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005053
Jeff Johnsone7245742012-09-05 17:12:55 -07005054
5055 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 Apps Cpu Wakeup State as specified by the
5057 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005058
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5060 back the response of the configure Apps Cpu Wakeup State
5061 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 callback
5065
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 @return Result of the function call
5067*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005069WDI_ConfigureAppsCpuWakeupStateReq
5070(
5071 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5072 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5073 void* pUserData
5074)
5075{
5076 WDI_EventInfoType wdiEventData;
5077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5078
5079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 ------------------------------------------------------------------------*/
5082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5083 {
5084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5085 "WDI API call before module is initialized - Fail request");
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 }
5089
5090 /*------------------------------------------------------------------------
5091 Fill in Event data and post to the Main FSM
5092 ------------------------------------------------------------------------*/
5093 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5095 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5096 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiEventData.pUserData = pUserData;
5098
5099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5100}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 to to perform a flush operation on a given AC. Upon the
5104 call of this API the WLAN DAL will pack and send a HAL
5105 Flush AC request message to the lower RIVA sub-system if
5106 DAL is in state STARTED.
5107
5108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005110
5111 WDI_AddBAReq must have been called.
5112
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005115
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 wdiFlushAcRspCb: callback for passing back the response
5117 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005118
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 callback
5121
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 @see WDI_AddBAReq
5123 @return Result of the function call
5124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005126WDI_FlushAcReq
5127(
5128 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5129 WDI_FlushAcRspCb wdiFlushAcRspCb,
5130 void* pUserData
5131)
5132{
5133 WDI_EventInfoType wdiEventData;
5134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5135
5136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 ------------------------------------------------------------------------*/
5139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5140 {
5141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5142 "WDI API call before module is initialized - Fail request");
5143
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 }
5146
5147 /*------------------------------------------------------------------------
5148 Fill in Event data and post to the Main FSM
5149 ------------------------------------------------------------------------*/
5150 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 wdiEventData.pEventData = pwdiFlushAcReqParams;
5152 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5153 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 wdiEventData.pUserData = pUserData;
5155
5156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5157
5158}/*WDI_FlushAcReq*/
5159
5160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005161 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 wants to notify the lower mac on a BT AMP event. This is
5163 to inform BTC-SLM that some BT AMP event occurred. Upon
5164 the call of this API the WLAN DAL will pack and send a
5165 HAL BT AMP event request message to the lower RIVA
5166 sub-system if DAL is in state STARTED.
5167
5168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
5172 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005174
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 wdiBtAmpEventRspCb: callback for passing back the
5176 response of the BT AMP event operation received from the
5177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 callback
5181
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 @return Result of the function call
5183*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005185WDI_BtAmpEventReq
5186(
5187 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5188 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5189 void* pUserData
5190)
5191{
5192 WDI_EventInfoType wdiEventData;
5193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5194
5195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 ------------------------------------------------------------------------*/
5198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5199 {
5200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5201 "WDI API call before module is initialized - Fail request");
5202
Jeff Johnsone7245742012-09-05 17:12:55 -07005203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 }
5205
5206 /*------------------------------------------------------------------------
5207 Fill in Event data and post to the Main FSM
5208 ------------------------------------------------------------------------*/
5209 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5211 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5212 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 wdiEventData.pUserData = pUserData;
5214
5215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5216
5217}/*WDI_BtAmpEventReq*/
5218
Jeff Johnsone7245742012-09-05 17:12:55 -07005219#ifdef FEATURE_OEM_DATA_SUPPORT
5220/**
5221 @brief WDI_Start Oem Data Req will be called when the upper MAC
5222 wants to notify the lower mac on a oem data Req event.Upon
5223 the call of this API the WLAN DAL will pack and send a
5224 HAL OEM Data Req event request message to the lower RIVA
5225 sub-system if DAL is in state STARTED.
5226
5227 In state BUSY this request will be queued. Request won't
5228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005229
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231
5232 @param pwdiOemDataReqParams: the Oem Data Req as
5233 specified by the Device Interface
5234
5235 wdiStartOemDataRspCb: callback for passing back the
5236 response of the Oem Data Req received from the
5237 device
5238
5239 pUserData: user data will be passed back with the
5240 callback
5241
5242 @return Result of the function call
5243*/
5244WDI_Status
5245WDI_StartOemDataReq
5246(
5247 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5248 WDI_oemDataRspCb wdiOemDataRspCb,
5249 void* pUserData
5250)
5251{
5252 WDI_EventInfoType wdiEventData;
5253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5254
5255 /*------------------------------------------------------------------------
5256 Sanity Check
5257 ------------------------------------------------------------------------*/
5258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5259 {
5260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5261 "WDI API call before module is initialized - Fail request");
5262
5263 return WDI_STATUS_E_NOT_ALLOWED;
5264 }
5265
5266 /*------------------------------------------------------------------------
5267 Fill in Event data and post to the Main FSM
5268 ------------------------------------------------------------------------*/
5269 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5270 wdiEventData.pEventData = pwdiOemDataReqParams;
5271 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5272 wdiEventData.pCBfnc = wdiOemDataRspCb;
5273 wdiEventData.pUserData = pUserData;
5274
5275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5276
5277
5278}
5279
5280#endif
5281
5282
5283/*========================================================================
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005286
Jeff Johnson295189b2012-06-20 16:38:30 -07005287==========================================================================*/
5288/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 the WLAN HW to change the current channel of operation.
5291 Upon the call of this API the WLAN DAL will pack and
5292 send a HAL Start request message to the lower RIVA
5293 sub-system if DAL is in state STARTED.
5294
5295 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005297
5298 WDI_Start must have been called.
5299
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005302
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 wdiSwitchChRspCb: callback for passing back the response
5304 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005305
Jeff Johnson295189b2012-06-20 16:38:30 -07005306 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 callback
5308
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 @see WDI_Start
5310 @return Result of the function call
5311*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005312WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005313WDI_SwitchChReq
5314(
5315 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5316 WDI_SwitchChRspCb wdiSwitchChRspCb,
5317 void* pUserData
5318)
5319{
5320 WDI_EventInfoType wdiEventData;
5321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5322
5323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 ------------------------------------------------------------------------*/
5326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5327 {
5328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5329 "WDI API call before module is initialized - Fail request");
5330
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005332 }
5333
5334 /*------------------------------------------------------------------------
5335 Fill in Event data and post to the Main FSM
5336 ------------------------------------------------------------------------*/
5337 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 wdiEventData.pEventData = pwdiSwitchChReqParams;
5339 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5340 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005341 wdiEventData.pUserData = pUserData;
5342
5343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5344
5345}/*WDI_SwitchChReq*/
5346
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005347/**
5348 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5349 the WLAN HW to change the current channel of operation.
5350 Upon the call of this API the WLAN DAL will pack and
5351 send a HAL Start request message to the lower RIVA
5352 sub-system if DAL is in state STARTED.
5353 This request message also includes source of channel switch,
5354 like CSA,
5355
5356 In state BUSY this request will be queued. Request won't
5357 be allowed in any other state.
5358
5359 WDI_Start must have been called.
5360
5361 @param wdiSwitchChReqParams: the switch ch parameters as
5362 specified by the Device Interface
5363
5364 wdiSwitchChRspCb: callback for passing back the response
5365 of the switch ch operation received from the device
5366
5367 pUserData: user data will be passed back with the
5368 callback
5369
5370 @see WDI_Start
5371 @return Result of the function call
5372*/
5373WDI_Status
5374WDI_SwitchChReq_V1
5375(
5376 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5377 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5378 void* pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5384 "WDI API call WDI_SwitchChReq_V1");
5385 /*------------------------------------------------------------------------
5386 Sanity Check
5387 ------------------------------------------------------------------------*/
5388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5389 {
5390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5391 "WDI API call before module is initialized - Fail request");
5392
5393 return WDI_STATUS_E_NOT_ALLOWED;
5394 }
5395
5396 /*------------------------------------------------------------------------
5397 Fill in Event data and post to the Main FSM
5398 ------------------------------------------------------------------------*/
5399 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5400 wdiEventData.pEventData = pwdiSwitchChReqParams;
5401 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5402 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5403 wdiEventData.pUserData = pUserData;
5404
5405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5406
5407}/*WDI_SwitchChReq_V1*/
5408
Jeff Johnson295189b2012-06-20 16:38:30 -07005409
5410/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wishes to add or update a STA in HW. Upon the call of
5413 this API the WLAN DAL will pack and send a HAL Start
5414 message request message to the lower RIVA sub-system if
5415 DAL is in state STARTED.
5416
5417 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005419
5420 WDI_Start must have been called.
5421
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005424
Jeff Johnson295189b2012-06-20 16:38:30 -07005425 wdiConfigSTARspCb: callback for passing back the
5426 response of the config STA operation received from the
5427 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 callback
5431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 @see WDI_Start
5433 @return Result of the function call
5434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005436WDI_ConfigSTAReq
5437(
5438 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5439 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5440 void* pUserData
5441)
5442{
5443 WDI_EventInfoType wdiEventData;
5444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5445
5446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 ------------------------------------------------------------------------*/
5449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5450 {
5451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5452 "WDI API call before module is initialized - Fail request");
5453
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 }
5456
5457 /*------------------------------------------------------------------------
5458 Fill in Event data and post to the Main FSM
5459 ------------------------------------------------------------------------*/
5460 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5462 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5463 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiEventData.pUserData = pUserData;
5465
5466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5467
5468}/*WDI_ConfigSTAReq*/
5469
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005470 /**
5471 @brief WDI_UpdateChannelReq will be called when the upper MAC
5472 wants to update the channel list on change in country code.
5473
5474 In state BUSY this request will be queued. Request won't
5475 be allowed in any other state.
5476
5477 WDI_UpdateChannelReq must have been called.
5478
5479 @param wdiUpdateChannelReqParams: the updated channel parameters
5480 as specified by the Device Interface
5481
5482 wdiUpdateChannelRspCb: callback for passing back the
5483 response of the update channel operation received from
5484 the device
5485
5486 pUserData: user data will be passed back with the
5487 callback
5488
5489 @return Result of the function call
5490*/
5491WDI_Status
5492WDI_UpdateChannelReq
5493(
5494 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5495 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5496 void* pUserData
5497)
5498{
5499 WDI_EventInfoType wdiEventData = {{0}};
5500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5501
5502 /*------------------------------------------------------------------------
5503 Sanity Check
5504 ------------------------------------------------------------------------*/
5505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5506 {
5507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5508 "WDI API call before module is initialized - Fail request");
5509
5510 return WDI_STATUS_E_NOT_ALLOWED;
5511 }
5512
5513 /*------------------------------------------------------------------------
5514 Fill in Event data and post to the Main FSM
5515 ------------------------------------------------------------------------*/
5516 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5517 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5518 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5519 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5520 wdiEventData.pUserData = pUserData;
5521
5522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5523
5524}/*WDI_UpdateChannelReq*/
5525
Jeff Johnson295189b2012-06-20 16:38:30 -07005526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005527 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 wants to change the state of an ongoing link. Upon the
5529 call of this API the WLAN DAL will pack and send a HAL
5530 Start message request message to the lower RIVA
5531 sub-system if DAL is in state STARTED.
5532
5533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005535
5536 WDI_JoinStartReq must have been called.
5537
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 wdiSetLinkStateRspCb: callback for passing back the
5542 response of the set link state operation received from
5543 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005544
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005546 callback
5547
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 @see WDI_JoinStartReq
5549 @return Result of the function call
5550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005552WDI_SetLinkStateReq
5553(
5554 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5555 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5556 void* pUserData
5557)
5558{
5559 WDI_EventInfoType wdiEventData;
5560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5561
5562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 ------------------------------------------------------------------------*/
5565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5566 {
5567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5568 "WDI API call before module is initialized - Fail request");
5569
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 }
5572
5573 /*------------------------------------------------------------------------
5574 Fill in Event data and post to the Main FSM
5575 ------------------------------------------------------------------------*/
5576 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5578 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5579 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 wdiEventData.pUserData = pUserData;
5581
5582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5583
5584}/*WDI_SetLinkStateReq*/
5585
5586
5587/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 to get statistics (MIB counters) from the device. Upon
5590 the call of this API the WLAN DAL will pack and send a
5591 HAL Start request message to the lower RIVA sub-system
5592 if DAL is in state STARTED.
5593
5594 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005596
5597 WDI_Start must have been called.
5598
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005601
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 wdiGetStatsRspCb: callback for passing back the response
5603 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005604
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005606 callback
5607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 @see WDI_Start
5609 @return Result of the function call
5610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005612WDI_GetStatsReq
5613(
5614 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5615 WDI_GetStatsRspCb wdiGetStatsRspCb,
5616 void* pUserData
5617)
5618{
5619 WDI_EventInfoType wdiEventData;
5620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5621
5622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005624 ------------------------------------------------------------------------*/
5625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5626 {
5627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5628 "WDI API call before module is initialized - Fail request");
5629
Jeff Johnsone7245742012-09-05 17:12:55 -07005630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005631 }
5632
5633 /*------------------------------------------------------------------------
5634 Fill in Event data and post to the Main FSM
5635 ------------------------------------------------------------------------*/
5636 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005637 wdiEventData.pEventData = pwdiGetStatsReqParams;
5638 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5639 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 wdiEventData.pUserData = pUserData;
5641
5642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5643
5644}/*WDI_GetStatsReq*/
5645
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005646#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005647/**
5648 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5649 to get roam rssi from the device. Upon
5650 the call of this API the WLAN DAL will pack and send a
5651 HAL Start request message to the lower RIVA sub-system
5652 if DAL is in state STARTED.
5653
5654 In state BUSY this request will be queued. Request won't
5655 be allowed in any other state.
5656
5657 WDI_Start must have been called.
5658
5659 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5660 specified by the Device Interface
5661
5662 wdiGetRoamRssiRspCb: callback for passing back the response
5663 of the get stats operation received from the device
5664
5665 pUserData: user data will be passed back with the
5666 callback
5667
5668 @see WDI_Start
5669 @return Result of the function call
5670*/
5671WDI_Status
5672WDI_GetRoamRssiReq
5673(
5674 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5675 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5676 void* pUserData
5677)
5678{
5679 WDI_EventInfoType wdiEventData;
5680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5681
5682 /*------------------------------------------------------------------------
5683 Sanity Check
5684 ------------------------------------------------------------------------*/
5685 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5686 {
5687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5688 "WDI API call before module is initialized - Fail request");
5689
5690 return WDI_STATUS_E_NOT_ALLOWED;
5691 }
5692 /*------------------------------------------------------------------------
5693 Fill in Event data and post to the Main FSM
5694 ------------------------------------------------------------------------*/
5695 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5696 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5697 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5698 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5699 wdiEventData.pUserData = pUserData;
5700
5701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5702
5703}/*WDI_GetRoamRssiReq*/
5704#endif
5705
Jeff Johnson295189b2012-06-20 16:38:30 -07005706
5707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 it wishes to change the configuration of the WLAN
5710 Device. Upon the call of this API the WLAN DAL will pack
5711 and send a HAL Update CFG request message to the lower
5712 RIVA sub-system if DAL is in state STARTED.
5713
5714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005716
5717 WDI_Start must have been called.
5718
Jeff Johnsone7245742012-09-05 17:12:55 -07005719 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005721
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 wdiUpdateCfgsRspCb: callback for passing back the
5723 response of the update cfg operation received from the
5724 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005725
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 callback
5728
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 @see WDI_Start
5730 @return Result of the function call
5731*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005732WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005733WDI_UpdateCfgReq
5734(
5735 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5736 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5737 void* pUserData
5738)
5739{
5740 WDI_EventInfoType wdiEventData;
5741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5742
5743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 ------------------------------------------------------------------------*/
5746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5747 {
5748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5749 "WDI API call before module is initialized - Fail request");
5750
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 }
5753
5754 /*------------------------------------------------------------------------
5755 Fill in Event data and post to the Main FSM
5756 ------------------------------------------------------------------------*/
5757 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5759 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5760 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 wdiEventData.pUserData = pUserData;
5762
5763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5764
5765}/*WDI_UpdateCfgReq*/
5766
5767
5768
5769/**
5770 @brief WDI_AddBAReq will be called when the upper MAC has setup
5771 successfully a BA session and needs to notify the HW for
5772 the appropriate settings to take place. Upon the call of
5773 this API the WLAN DAL will pack and send a HAL Add BA
5774 request message to the lower RIVA sub-system if DAL is
5775 in state STARTED.
5776
5777 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005778 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005779
5780 WDI_PostAssocReq must have been called.
5781
5782 @param wdiAddBAReqParams: the add BA parameters as specified by
5783 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiAddBARspCb: callback for passing back the response of
5786 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 callback
5790
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 @see WDI_PostAssocReq
5792 @return Result of the function call
5793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005795WDI_AddBAReq
5796(
5797 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5798 WDI_AddBARspCb wdiAddBARspCb,
5799 void* pUserData
5800)
5801{
5802 WDI_EventInfoType wdiEventData;
5803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5804
5805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 ------------------------------------------------------------------------*/
5808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5809 {
5810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5811 "WDI API call before module is initialized - Fail request");
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 }
5815
5816 /*------------------------------------------------------------------------
5817 Fill in Event data and post to the Main FSM
5818 ------------------------------------------------------------------------*/
5819 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005820 wdiEventData.pEventData = pwdiAddBAReqParams;
5821 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5822 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 wdiEventData.pUserData = pUserData;
5824
5825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5826
5827}/*WDI_AddBAReq*/
5828
5829
5830/**
5831 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5832 successfully a BA session and needs to notify the HW for
5833 the appropriate settings to take place. Upon the call of
5834 this API the WLAN DAL will pack and send a HAL Add BA
5835 request message to the lower RIVA sub-system if DAL is
5836 in state STARTED.
5837
5838 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005840
5841 WDI_PostAssocReq must have been called.
5842
5843 @param wdiAddBAReqParams: the add BA parameters as specified by
5844 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005845
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 wdiAddBARspCb: callback for passing back the response of
5847 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005848
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 callback
5851
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 @see WDI_PostAssocReq
5853 @return Result of the function call
5854*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005855WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005856WDI_TriggerBAReq
5857(
5858 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5859 WDI_TriggerBARspCb wdiTriggerBARspCb,
5860 void* pUserData
5861)
5862{
5863 WDI_EventInfoType wdiEventData;
5864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5865
5866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 ------------------------------------------------------------------------*/
5869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5870 {
5871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5872 "WDI API call before module is initialized - Fail request");
5873
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 }
5876
5877 /*------------------------------------------------------------------------
5878 Fill in Event data and post to the Main FSM
5879 ------------------------------------------------------------------------*/
5880 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5882 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5883 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 wdiEventData.pUserData = pUserData;
5885
5886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5887
5888}/*WDI_AddBAReq*/
5889
5890/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 wishes to update any of the Beacon parameters used by HW.
5893 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5894 message to the lower RIVA sub-system if DAL is in state
5895 STARTED.
5896
5897 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005899
5900 WDI_PostAssocReq must have been called.
5901
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 wdiUpdateBeaconParamsRspCb: callback for passing back the
5906 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 callback
5910
Jeff Johnson295189b2012-06-20 16:38:30 -07005911 @see WDI_PostAssocReq
5912 @return Result of the function call
5913*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005914WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005915WDI_UpdateBeaconParamsReq
5916(
5917 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5918 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5919 void* pUserData
5920)
5921{
5922 WDI_EventInfoType wdiEventData;
5923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5924
5925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005927 ------------------------------------------------------------------------*/
5928 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5929 {
5930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5931 "WDI API call before module is initialized - Fail request");
5932
Jeff Johnsone7245742012-09-05 17:12:55 -07005933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 }
5935
5936 /*------------------------------------------------------------------------
5937 Fill in Event data and post to the Main FSM
5938 ------------------------------------------------------------------------*/
5939 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5941 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5942 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 wdiEventData.pUserData = pUserData;
5944
5945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5946
5947}/*WDI_UpdateBeaconParamsReq*/
5948
5949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 wishes to update the Beacon template used by HW.
5952 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5953 message to the lower RIVA sub-system if DAL is in state
5954 STARTED.
5955
5956 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005958
5959 WDI_PostAssocReq must have been called.
5960
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005962 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 wdiSendBeaconParamsRspCb: callback for passing back the
5965 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 callback
5969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 @see WDI_PostAssocReq
5971 @return Result of the function call
5972*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005974WDI_SendBeaconParamsReq
5975(
5976 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5977 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5978 void* pUserData
5979)
5980{
5981 WDI_EventInfoType wdiEventData;
5982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5983
5984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 ------------------------------------------------------------------------*/
5987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5990 "WDI API call before module is initialized - Fail request");
5991
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /*------------------------------------------------------------------------
5996 Fill in Event data and post to the Main FSM
5997 ------------------------------------------------------------------------*/
5998 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005999 wdiEventData.pEventData = pwdiSendBeaconParams;
6000 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6001 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 wdiEventData.pUserData = pUserData;
6003
6004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6005
6006}/*WDI_SendBeaconParamsReq*/
6007
6008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 upper MAC wants to update the probe response template to
6011 be transmitted as Soft AP
6012 Upon the call of this API the WLAN DAL will
6013 pack and send the probe rsp template message to the
6014 lower RIVA sub-system if DAL is in state STARTED.
6015
6016 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006017 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006018
6019
Jeff Johnsone7245742012-09-05 17:12:55 -07006020 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 wdiSendBeaconParamsRspCb: callback for passing back the
6024 response of the Send Beacon Params operation received
6025 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006026
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006028 callback
6029
Jeff Johnson295189b2012-06-20 16:38:30 -07006030 @see WDI_AddBAReq
6031 @return Result of the function call
6032*/
6033
Jeff Johnsone7245742012-09-05 17:12:55 -07006034WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006035WDI_UpdateProbeRspTemplateReq
6036(
6037 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6038 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6039 void* pUserData
6040)
6041{
6042 WDI_EventInfoType wdiEventData;
6043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6044
6045 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006046 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 ------------------------------------------------------------------------*/
6048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6049 {
6050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6051 "WDI API call before module is initialized - Fail request");
6052
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 }
6055
6056 /*------------------------------------------------------------------------
6057 Fill in Event data and post to the Main FSM
6058 ------------------------------------------------------------------------*/
6059 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6061 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6062 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006063 wdiEventData.pUserData = pUserData;
6064
6065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6066
6067}/*WDI_UpdateProbeRspTemplateReq*/
6068
6069/**
6070 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6071 to the NV memory.
6072
6073
6074 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6075 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 wdiNvDownloadRspCb: callback for passing back the response of
6078 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 callback
6082
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 @see WDI_PostAssocReq
6084 @return Result of the function call
6085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006087WDI_NvDownloadReq
6088(
6089 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6090 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6091 void* pUserData
6092)
6093{
6094 WDI_EventInfoType wdiEventData;
6095
6096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006098 ------------------------------------------------------------------------*/
6099 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6100 {
6101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6102 "WDI API call before module is initialized - Fail request");
6103
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006105 }
6106
6107 /*------------------------------------------------------------------------
6108 Fill in Event data and post to the Main FSM
6109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006110 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6111 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6112 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6113 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 wdiEventData.pUserData = pUserData;
6115
6116 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6117
6118}/*WDI_NVDownloadReq*/
6119
Jeff Johnson295189b2012-06-20 16:38:30 -07006120/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 upper MAC wants to send Notice of Absence
6123 Upon the call of this API the WLAN DAL will
6124 pack and send the probe rsp template message to the
6125 lower RIVA sub-system if DAL is in state STARTED.
6126
6127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006129
6130
Jeff Johnsone7245742012-09-05 17:12:55 -07006131 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006133
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 wdiSendBeaconParamsRspCb: callback for passing back the
6135 response of the Send Beacon Params operation received
6136 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006137
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006139 callback
6140
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 @see WDI_AddBAReq
6142 @return Result of the function call
6143*/
6144WDI_Status
6145WDI_SetP2PGONOAReq
6146(
6147 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6148 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6149 void* pUserData
6150)
6151{
6152 WDI_EventInfoType wdiEventData;
6153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6154
6155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 ------------------------------------------------------------------------*/
6158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6159 {
6160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6161 "WDI API call before module is initialized - Fail request");
6162
Jeff Johnsone7245742012-09-05 17:12:55 -07006163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006164 }
6165
6166 /*------------------------------------------------------------------------
6167 Fill in Event data and post to the Main FSM
6168 ------------------------------------------------------------------------*/
6169 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6171 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6172 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 wdiEventData.pUserData = pUserData;
6174
6175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6176
6177}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006178
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306179#ifdef FEATURE_WLAN_TDLS
6180/**
6181 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6182 upper MAC wants to send TDLS Link Establish Request Parameters
6183 Upon the call of this API the WLAN DAL will
6184 pack and send the TDLS Link Establish Request message to the
6185 lower RIVA sub-system if DAL is in state STARTED.
6186
6187 In state BUSY this request will be queued. Request won't
6188 be allowed in any other state.
6189
6190
6191 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6192 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6193
6194 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6195 response of the TDLS Link Establish request received
6196 from the device
6197
6198 pUserData: user data will be passed back with the
6199 callback
6200
6201 @see
6202 @return Result of the function call
6203*/
6204WDI_Status
6205WDI_SetTDLSLinkEstablishReq
6206(
6207 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6208 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6209 void* pUserData
6210)
6211{
6212 WDI_EventInfoType wdiEventData;
6213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6214
6215 /*------------------------------------------------------------------------
6216 Sanity Check
6217 ------------------------------------------------------------------------*/
6218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6219 {
6220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6221 "WDI API call before module is initialized - Fail request");
6222
6223 return WDI_STATUS_E_NOT_ALLOWED;
6224 }
6225
6226 /*------------------------------------------------------------------------
6227 Fill in Event data and post to the Main FSM
6228 ------------------------------------------------------------------------*/
6229 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6230 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6231 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6232 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6233 wdiEventData.pUserData = pUserData;
6234
6235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6236
6237}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306238
6239//tdlsoffchan
6240/**
6241 @brief WDI_SetTDLSChanSwitchReq will be called when the
6242 upper MAC wants to send TDLS Chan Switch Request Parameters
6243 Upon the call of this API the WLAN DAL will
6244 pack and send the TDLS Link Establish Request message to the
6245 lower RIVA sub-system if DAL is in state STARTED.
6246
6247 In state BUSY this request will be queued. Request won't
6248 be allowed in any other state.
6249
6250
6251 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6252 for Link Establishment (Used for TDLS Off Channel ...)
6253
6254 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6255 response of the TDLS Chan Switch request received
6256 from the device
6257
6258 pUserData: user data will be passed back with the
6259 callback
6260
6261 @see
6262 @return Result of the function call
6263*/
6264WDI_Status
6265WDI_SetTDLSChanSwitchReq
6266(
6267 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6268 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6269 void* pUserData
6270)
6271{
6272 WDI_EventInfoType wdiEventData;
6273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6274
6275 /*------------------------------------------------------------------------
6276 Sanity Check
6277 ------------------------------------------------------------------------*/
6278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6279 {
6280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6281 "WDI API call before module is initialized - Fail request");
6282
6283 return WDI_STATUS_E_NOT_ALLOWED;
6284 }
6285
6286 /*------------------------------------------------------------------------
6287 Fill in Event data and post to the Main FSM
6288 ------------------------------------------------------------------------*/
6289 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6290 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6291 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6292 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6293 wdiEventData.pUserData = pUserData;
6294
6295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6296
6297}/*WDI_SetTDLSChanSwitchReq*/
6298
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306299#endif
6300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 UMAC wanted to add STA self while opening any new session
6304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006306
6307
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 callback
6313
6314 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 @return Result of the function call
6316*/
6317WDI_Status
6318WDI_AddSTASelfReq
6319(
6320 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6321 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6322 void* pUserData
6323)
6324{
6325 WDI_EventInfoType wdiEventData;
6326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6327
6328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 ------------------------------------------------------------------------*/
6331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6332 {
6333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6334 "WDI API call before module is initialized - Fail request");
6335
Jeff Johnsone7245742012-09-05 17:12:55 -07006336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006337 }
6338
6339 /*------------------------------------------------------------------------
6340 Fill in Event data and post to the Main FSM
6341 ------------------------------------------------------------------------*/
6342 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006343 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6344 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6345 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 wdiEventData.pUserData = pUserData;
6347
6348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6349
6350}/*WDI_AddSTASelfReq*/
6351
6352
Jeff Johnsone7245742012-09-05 17:12:55 -07006353#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006354/**
6355 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6356 the device of a successful add TSpec negotiation. HW
6357 needs to receive the TSpec Info from the UMAC in order
6358 to configure properly the QoS data traffic. Upon the
6359 call of this API the WLAN DAL will pack and send a HAL
6360 Add TS request message to the lower RIVA sub-system if
6361 DAL is in state STARTED.
6362
6363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006365
6366 WDI_PostAssocReq must have been called.
6367
6368 @param wdiAddTsReqParams: the add TS parameters as specified by
6369 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 wdiAddTsRspCb: callback for passing back the response of
6372 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006375 callback
6376
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 @see WDI_PostAssocReq
6378 @return Result of the function call
6379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006381WDI_AggrAddTSReq
6382(
6383 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6384 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6385 void* pUserData
6386)
6387{
6388 WDI_EventInfoType wdiEventData;
6389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6390
6391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 ------------------------------------------------------------------------*/
6394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6395 {
6396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6397 "WDI API call before module is initialized - Fail request");
6398
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 }
6401
6402 /*------------------------------------------------------------------------
6403 Fill in Event data and post to the Main FSM
6404 ------------------------------------------------------------------------*/
6405 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006406 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6407 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6408 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 wdiEventData.pUserData = pUserData;
6410
6411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6412
6413}/*WDI_AggrAddTSReq*/
6414
6415#endif /* WLAN_FEATURE_VOWIFI_11R */
6416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417/**
6418 @brief WDI_FTMCommandReq
6419 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006420
6421 @param ftmCommandReq: FTM Command Body
6422 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006424
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 @see
6426 @return Result of the function call
6427*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006428WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006429WDI_FTMCommandReq
6430(
6431 WDI_FTMCommandReqType *ftmCommandReq,
6432 WDI_FTMCommandRspCb ftmCommandRspCb,
6433 void *pUserData
6434)
6435{
6436 WDI_EventInfoType wdiEventData;
6437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6438
6439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 ------------------------------------------------------------------------*/
6442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6443 {
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6445 "WDI API call before module is initialized - Fail request");
6446
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 }
6449
6450 /*------------------------------------------------------------------------
6451 Fill in Event data and post to the Main FSM
6452 ------------------------------------------------------------------------*/
6453 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6454 wdiEventData.pEventData = (void *)ftmCommandReq;
6455 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6456 wdiEventData.pCBfnc = ftmCommandRspCb;
6457 wdiEventData.pUserData = pUserData;
6458
6459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6460}
Jeff Johnson295189b2012-06-20 16:38:30 -07006461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
6464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006466
6467
6468 @param pwdiResumeReqParams: as specified by
6469 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006470
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 wdiResumeReqRspCb: callback for passing back the response of
6472 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006473
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006475 callback
6476
6477 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 @return Result of the function call
6479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006481WDI_HostResumeReq
6482(
6483 WDI_ResumeParamsType* pwdiResumeReqParams,
6484 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6485 void* pUserData
6486)
6487{
6488 WDI_EventInfoType wdiEventData;
6489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6490
6491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 ------------------------------------------------------------------------*/
6494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6495 {
6496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6497 "WDI API call before module is initialized - Fail request");
6498
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 }
6501
6502 /*------------------------------------------------------------------------
6503 Fill in Event data and post to the Main FSM
6504 ------------------------------------------------------------------------*/
6505 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006506 wdiEventData.pEventData = pwdiResumeReqParams;
6507 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6508 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 wdiEventData.pUserData = pUserData;
6510
6511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6512
6513}/*WDI_HostResumeReq*/
6514
6515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006517
6518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006520
6521
6522 @param pwdiDelStaSelfReqParams: as specified by
6523 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006524
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 wdiDelStaSelfRspCb: callback for passing back the response of
6526 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006527
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 callback
6530
Jeff Johnson295189b2012-06-20 16:38:30 -07006531 @see WDI_PostAssocReq
6532 @return Result of the function call
6533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006535WDI_DelSTASelfReq
6536(
6537 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6538 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6539 void* pUserData
6540)
6541{
6542 WDI_EventInfoType wdiEventData;
6543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6544
6545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ------------------------------------------------------------------------*/
6548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6551 "WDI API call before module is initialized - Fail request");
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006554 }
6555
6556 /*------------------------------------------------------------------------
6557 Fill in Event data and post to the Main FSM
6558 ------------------------------------------------------------------------*/
6559 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6561 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6562 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 wdiEventData.pUserData = pUserData;
6564
6565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6566
6567}/*WDI_AggrAddTSReq*/
6568
6569/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6571 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 Upon the call of this API the WLAN DAL will pack
6573 and send a HAL Set Tx Per Tracking request message to the
6574 lower RIVA sub-system if DAL is in state STARTED.
6575
6576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006578
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006581
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 pwdiSetTxPerTrackingRspCb: callback for passing back the
6583 response of the set Tx PER Tracking configurations operation received
6584 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006585
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 callback
6588
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 @return Result of the function call
6590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006592WDI_SetTxPerTrackingReq
6593(
6594 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6595 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6596 void* pUserData
6597)
6598{
6599 WDI_EventInfoType wdiEventData;
6600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6601
6602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 ------------------------------------------------------------------------*/
6605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6606 {
6607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6608 "WDI API call before module is initialized - Fail request");
6609
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 }
6612
6613 /*------------------------------------------------------------------------
6614 Fill in Event data and post to the Main FSM
6615 ------------------------------------------------------------------------*/
6616 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 wdiEventData.pUserData = pUserData;
6621
6622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6623
6624}/*WDI_SetTxPerTrackingReq*/
6625
6626/**
6627 @brief WDI_SetTmLevelReq
6628 If HW Thermal condition changed, driver should react based on new
6629 HW thermal condition.
6630
6631 @param pwdiSetTmLevelReq: New thermal condition information
6632
6633 pwdiSetTmLevelRspCb: callback
6634
6635 usrData: user data will be passed back with the
6636 callback
6637
6638 @return Result of the function call
6639*/
6640WDI_Status
6641WDI_SetTmLevelReq
6642(
6643 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6644 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6645 void *usrData
6646)
6647{
6648 WDI_EventInfoType wdiEventData;
6649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6650
6651 /*------------------------------------------------------------------------
6652 Sanity Check
6653 ------------------------------------------------------------------------*/
6654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6655 {
6656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6657 "WDI API call before module is initialized - Fail request");
6658
6659 return WDI_STATUS_E_NOT_ALLOWED;
6660 }
6661
6662 /*------------------------------------------------------------------------
6663 Fill in Event data and post to the Main FSM
6664 ------------------------------------------------------------------------*/
6665 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6666 wdiEventData.pEventData = pwdiSetTmLevelReq;
6667 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6668 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6669 wdiEventData.pUserData = usrData;
6670
6671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6672}
6673
6674/**
6675 @brief WDI_HostSuspendInd
6676
6677 Suspend Indication from the upper layer will be sent
6678 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006679
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006681
6682 @see
6683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 @return Status of the request
6685*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006687WDI_HostSuspendInd
6688(
6689 WDI_SuspendParamsType* pwdiSuspendIndParams
6690)
6691{
6692
6693 WDI_EventInfoType wdiEventData;
6694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6695
6696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 ------------------------------------------------------------------------*/
6699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6700 {
6701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6702 "WDI API call before module is initialized - Fail request");
6703
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 }
6706
6707 /*------------------------------------------------------------------------
6708 Fill in Event data and post to the Main FSM
6709 ------------------------------------------------------------------------*/
6710 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 wdiEventData.pEventData = pwdiSuspendIndParams;
6712 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6713 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 wdiEventData.pUserData = NULL;
6715
6716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6717
6718}/*WDI_HostSuspendInd*/
6719
6720/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006721 @brief WDI_TrafficStatsInd
6722 Traffic Stats from the upper layer will be sent
6723 down to HAL
6724
6725 @param WDI_TrafficStatsIndType
6726
6727 @see
6728
6729 @return Status of the request
6730*/
6731WDI_Status
6732WDI_TrafficStatsInd
6733(
6734 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6735)
6736{
6737
6738 WDI_EventInfoType wdiEventData;
6739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6740
6741 /*------------------------------------------------------------------------
6742 Sanity Check
6743 ------------------------------------------------------------------------*/
6744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6745 {
6746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6747 "WDI API call before module is initialized - Fail request");
6748
6749 return WDI_STATUS_E_NOT_ALLOWED;
6750 }
6751
6752 /*------------------------------------------------------------------------
6753 Fill in Event data and post to the Main FSM
6754 ------------------------------------------------------------------------*/
6755 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6756 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6757 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6758 wdiEventData.pCBfnc = NULL;
6759 wdiEventData.pUserData = NULL;
6760
6761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6762
6763}/*WDI_TrafficStatsInd*/
6764
Chet Lanctot186b5732013-03-18 10:26:30 -07006765#ifdef WLAN_FEATURE_11W
6766/**
6767 @brief WDI_ExcludeUnencryptedInd
6768 Register with HAL to receive/drop unencrypted frames
6769
6770 @param WDI_ExcludeUnencryptIndType
6771
6772 @see
6773
6774 @return Status of the request
6775*/
6776WDI_Status
6777WDI_ExcludeUnencryptedInd
6778(
6779 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6780)
6781{
6782
6783 WDI_EventInfoType wdiEventData;
6784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6785
6786 /*------------------------------------------------------------------------
6787 Sanity Check
6788 ------------------------------------------------------------------------*/
6789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6790 {
6791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6792 "WDI API call before module is initialized - Fail request");
6793
6794 return WDI_STATUS_E_NOT_ALLOWED;
6795 }
6796
6797 /*------------------------------------------------------------------------
6798 Fill in Event data and post to the Main FSM
6799 ------------------------------------------------------------------------*/
6800 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6801 wdiEventData.pEventData = pWdiExcUnencParams;
6802 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6803 wdiEventData.pCBfnc = NULL;
6804 wdiEventData.pUserData = NULL;
6805
6806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6807
6808}/*WDI_TrafficStatsInd*/
6809#endif
6810
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006811/**
Yue Mab9c86f42013-08-14 15:59:08 -07006812 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6813
6814 @param addPeriodicTxPtrnParams: Add Pattern parameters
6815
6816 @see
6817
6818 @return Status of the request
6819*/
6820WDI_Status
6821WDI_AddPeriodicTxPtrnInd
6822(
6823 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6824)
6825{
6826 WDI_EventInfoType wdiEventData;
6827
6828 /*-------------------------------------------------------------------------
6829 Sanity Check
6830 ------------------------------------------------------------------------*/
6831 if (eWLAN_PAL_FALSE == gWDIInitialized)
6832 {
6833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6834 "WDI API call before module is initialized - Fail request!");
6835
6836 return WDI_STATUS_E_NOT_ALLOWED;
6837 }
6838
6839 /*-------------------------------------------------------------------------
6840 Fill in Event data and post to the Main FSM
6841 ------------------------------------------------------------------------*/
6842 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6843 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6844 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6845 wdiEventData.pCBfnc = NULL;
6846 wdiEventData.pUserData = NULL;
6847
6848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6849}
6850
6851/**
6852 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6853
6854 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6855
6856 @see
6857
6858 @return Status of the request
6859*/
6860WDI_Status
6861WDI_DelPeriodicTxPtrnInd
6862(
6863 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6864)
6865{
6866 WDI_EventInfoType wdiEventData;
6867
6868 /*-------------------------------------------------------------------------
6869 Sanity Check
6870 ------------------------------------------------------------------------*/
6871 if (eWLAN_PAL_FALSE == gWDIInitialized)
6872 {
6873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6874 "WDI API call before module is initialized - Fail request!");
6875
6876 return WDI_STATUS_E_NOT_ALLOWED;
6877 }
6878
6879 /*-------------------------------------------------------------------------
6880 Fill in Event data and post to the Main FSM
6881 ------------------------------------------------------------------------*/
6882 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6883 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6884 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6885 wdiEventData.pCBfnc = NULL;
6886 wdiEventData.pUserData = NULL;
6887
6888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6889}
6890
6891/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 @brief WDI_HALDumpCmdReq
6893 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006894
6895 @param halDumpCmdReqParams: Hal Dump Command Body
6896 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006898
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 @see
6900 @return Result of the function call
6901*/
6902WDI_Status WDI_HALDumpCmdReq
6903(
6904 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6905 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6906 void *pUserData
6907)
6908{
6909 WDI_EventInfoType wdiEventData;
6910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6911
6912 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 ------------------------------------------------------------------------*/
6915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6916 {
6917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6918 "WDI API call before module is initialized - Fail request");
6919
Jeff Johnsone7245742012-09-05 17:12:55 -07006920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 }
6922
6923 /*------------------------------------------------------------------------
6924 Fill in Event data and post to the Main FSM
6925 ------------------------------------------------------------------------*/
6926 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6927 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6928 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6929 wdiEventData.pCBfnc = halDumpCmdRspCb;
6930 wdiEventData.pUserData = pUserData;
6931
6932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6933}
6934
Jeff Johnsone7245742012-09-05 17:12:55 -07006935/*============================================================================
6936
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006938
Jeff Johnson295189b2012-06-20 16:38:30 -07006939 ============================================================================*/
6940
6941/**
6942 @brief Main FSM Start function for all states except BUSY
6943
Jeff Johnsone7245742012-09-05 17:12:55 -07006944
6945 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 wdiEV: event posted to the main DAL FSM
6947 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 structure
6949
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 @see
6951 @return Result of the function call
6952*/
6953WDI_Status
6954WDI_PostMainEvent
6955(
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 WDI_ControlBlockType* pWDICtx,
6957 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006959)
6960{
Jeff Johnsone7245742012-09-05 17:12:55 -07006961 WDI_Status wdiStatus;
6962 WDI_MainFuncType pfnWDIMainEvHdlr;
6963 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306964 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6966
6967 /*-------------------------------------------------------------------------
6968 Sanity check
6969 -------------------------------------------------------------------------*/
6970 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6971 ( wdiEV >= WDI_MAX_EVENT ))
6972 {
6973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6974 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6975 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 }
6978
6979 /*Access to the global state must be locked */
6980 wpalMutexAcquire(&pWDICtx->wptMutex);
6981
6982 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006984
6985 wdiOldState = pWDICtx->uGlobalState;
6986
6987 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6989 response comes from CCPU for the request sent by host:
6990 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 -07006991 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 -07006992 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 CCPU:
6994 don't change the state */
6995 if ( WDI_RESPONSE_EVENT != wdiEV)
6996 {
6997 /*Transition to BUSY State - the request is now being processed by the FSM,
6998 if the request fails we shall transition back to the old state, if not
6999 the request will manage its own state transition*/
7000 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7001 }
7002 /* If the state function associated with the EV is NULL it means that this
7003 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 {
7006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 }
7011 else
7012 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307013 if (!(failCnt & 0xF))
7014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307017 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 }
7020
7021 /* If a request handles itself well it will end up in a success or in a
7022 pending
7023 Success - means that the request was processed and the proper state
7024 transition already occurred or will occur when the resp is received
7025 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007026
Jeff Johnson295189b2012-06-20 16:38:30 -07007027 Pending - means the request could not be processed at this moment in time
7028 because the FSM was already busy so no state transition or dequeueing
7029 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007030
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 Success for synchronous case means that the transition may occur and
7032 processing of pending requests may continue - so it should go through
7033 and restores the state and continue processing queued requests*/
7034 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7035 ( WDI_STATUS_PENDING != wdiStatus ))
7036 {
7037 if ( WDI_RESPONSE_EVENT != wdiEV)
7038 {
7039 /*The request has failed or could not be processed - transition back to
7040 the old state - check to see if anything was queued and try to execute
7041 The dequeue logic should post a message to a thread and return - no
7042 actual processing can occur */
7043 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7044 }
7045 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007046
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 }
7048
7049 /* we have completed processing the event */
7050 wpalMutexRelease(&pWDICtx->wptMutex);
7051
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053
7054}/*WDI_PostMainEvent*/
7055
7056
7057/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007059--------------------------------------------------------------------------*/
7060/**
7061 @brief Main FSM Start function for all states except BUSY
7062
Jeff Johnsone7245742012-09-05 17:12:55 -07007063
7064 @param pWDICtx: pointer to the WLAN DAL context
7065 pEventData: pointer to the event information structure
7066
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 @see
7068 @return Result of the function call
7069*/
7070WDI_Status
7071WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007072(
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 WDI_ControlBlockType* pWDICtx,
7074 WDI_EventInfoType* pEventData
7075)
7076{
7077
7078 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 ----------------------------------------------------------------------*/
7081 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7082 {
7083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007084 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 pWDICtx, pEventData);
7086 return WDI_STATUS_E_FAILURE;
7087 }
7088
7089 wpalMutexAcquire(&pWDICtx->wptMutex);
7090
7091 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 ----------------------------------------------------------------------*/
7094 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7095 {
7096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7097 "Control Transport not yet Open - queueing the request");
7098
7099 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007101
7102 wpalMutexRelease(&pWDICtx->wptMutex);
7103 return WDI_STATUS_PENDING;
7104 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007105
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 wpalMutexRelease(&pWDICtx->wptMutex);
7107
7108 /*Return Success*/
7109 return WDI_ProcessRequest( pWDICtx, pEventData );
7110
7111}/*WDI_MainStart*/
7112
7113/**
7114 @brief Main FSM Response function for state INIT
7115
Jeff Johnsone7245742012-09-05 17:12:55 -07007116
7117 @param pWDICtx: pointer to the WLAN DAL context
7118 pEventData: pointer to the event information structure
7119
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 @see
7121 @return Result of the function call
7122*/
7123WDI_Status
7124WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007125(
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 WDI_ControlBlockType* pWDICtx,
7127 WDI_EventInfoType* pEventData
7128)
7129{
7130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007133 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007134
7135 /*Return Success*/
7136 return WDI_STATUS_E_NOT_ALLOWED;
7137}/* WDI_MainRspInit */
7138
7139/**
7140 @brief Main FSM Close function for all states except BUSY
7141
Jeff Johnsone7245742012-09-05 17:12:55 -07007142
7143 @param pWDICtx: pointer to the WLAN DAL context
7144 pEventData: pointer to the event information structure
7145
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 @see
7147 @return Result of the function call
7148*/
7149WDI_Status
7150WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007151(
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 WDI_ControlBlockType* pWDICtx,
7153 WDI_EventInfoType* pEventData
7154)
7155{
7156
7157 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 ----------------------------------------------------------------------*/
7160 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7161 {
7162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007163 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pWDICtx, pEventData);
7165 return WDI_STATUS_E_FAILURE;
7166 }
7167
7168 /*Return Success*/
7169 return WDI_ProcessRequest( pWDICtx, pEventData );
7170
7171}/*WDI_MainClose*/
7172/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007174--------------------------------------------------------------------------*/
7175/**
7176 @brief Main FSM Start function for state STARTED
7177
Jeff Johnsone7245742012-09-05 17:12:55 -07007178
7179 @param pWDICtx: pointer to the WLAN DAL context
7180 pEventData: pointer to the event information structure
7181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 @see
7183 @return Result of the function call
7184*/
7185WDI_Status
7186WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007187(
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 WDI_ControlBlockType* pWDICtx,
7189 WDI_EventInfoType* pEventData
7190)
7191{
7192 WDI_StartRspCb wdiStartRspCb = NULL;
7193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7194
7195 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 ----------------------------------------------------------------------*/
7198 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7199 {
7200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007201 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 pWDICtx, pEventData);
7203 return WDI_STATUS_E_FAILURE;
7204 }
7205
7206 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 ----------------------------------------------------------------------*/
7209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007211
7212 wpalMutexAcquire(&pWDICtx->wptMutex);
7213
7214 /*Transition back to started because the post function transitioned us to
7215 busy*/
7216 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7217
7218 /*Check to see if any request is pending*/
7219 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007220
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 wpalMutexRelease(&pWDICtx->wptMutex);
7222
7223 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7225
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307227 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007228
7229 /*Return Success*/
7230 return WDI_STATUS_SUCCESS;
7231
7232}/*WDI_MainStartStarted*/
7233
7234/**
7235 @brief Main FSM Stop function for state STARTED
7236
Jeff Johnsone7245742012-09-05 17:12:55 -07007237
7238 @param pWDICtx: pointer to the WLAN DAL context
7239 pEventData: pointer to the event information structure
7240
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 @see
7242 @return Result of the function call
7243*/
7244WDI_Status
7245WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007246(
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 WDI_ControlBlockType* pWDICtx,
7248 WDI_EventInfoType* pEventData
7249)
7250{
7251 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 ----------------------------------------------------------------------*/
7254 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7255 {
7256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007257 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pWDICtx, pEventData);
7259 return WDI_STATUS_E_FAILURE;
7260 }
7261
7262 /*State at this point is BUSY - because we enter this state before posting
7263 an event to the FSM in order to prevent potential race conditions*/
7264
7265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7266 "Processing stop request in FSM");
7267
7268 /*Return Success*/
7269 return WDI_ProcessRequest( pWDICtx, pEventData );
7270
7271}/*WDI_MainStopStarted*/
7272/**
7273 @brief Main FSM Request function for state started
7274
Jeff Johnsone7245742012-09-05 17:12:55 -07007275
7276 @param pWDICtx: pointer to the WLAN DAL context
7277 pEventData: pointer to the event information structure
7278
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 @see
7280 @return Result of the function call
7281*/
7282WDI_Status
7283WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007284(
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 WDI_ControlBlockType* pWDICtx,
7286 WDI_EventInfoType* pEventData
7287)
7288{
7289
7290 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 ----------------------------------------------------------------------*/
7293 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7294 {
7295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007296 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 pWDICtx, pEventData);
7298 return WDI_STATUS_E_FAILURE;
7299 }
7300
7301 /*State at this point is BUSY - because we enter this state before posting
7302 an event to the FSM in order to prevent potential race conditions*/
7303
7304 /*Return Success*/
7305 return WDI_ProcessRequest( pWDICtx, pEventData );
7306
7307}/*WDI_MainReqStarted*/
7308
7309/**
7310 @brief Main FSM Response function for all states except INIT
7311
Jeff Johnsone7245742012-09-05 17:12:55 -07007312
7313 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007315
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 @see
7317 @return Result of the function call
7318*/
7319WDI_Status
7320WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007321(
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 WDI_ControlBlockType* pWDICtx,
7323 WDI_EventInfoType* pEventData
7324)
7325{
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 wpt_boolean expectedResponse;
7328
7329 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 ----------------------------------------------------------------------*/
7332 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7333 {
7334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007335 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 pWDICtx, pEventData);
7337 return WDI_STATUS_E_FAILURE;
7338 }
7339
7340 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7341 {
7342 /* we received an expected response */
7343 expectedResponse = eWLAN_PAL_TRUE;
7344
7345 /*We expect that we will transition to started after this processing*/
7346 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7347
7348 /* we are no longer expecting a response */
7349 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7350 }
7351 else
7352 {
7353 /* we received an indication or unexpected response */
7354 expectedResponse = eWLAN_PAL_FALSE;
7355 /* for indications no need to update state from what it is right
7356 now, unless it explicitly does it in the indication handler (say
7357 for device failure ind) */
7358 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7359 }
7360
7361 /*Process the response and indication */
7362 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7363
7364 /*Lock the CB as we are about to do a state transition*/
7365 wpalMutexAcquire(&pWDICtx->wptMutex);
7366
7367 /*Transition to the expected state after the response processing
7368 - this should always be started state with the following exceptions:
7369 1. processing of a failed start response
7370 2. device failure detected while processing response
7371 3. stop response received*/
7372 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007373
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 /*Dequeue request that may have been queued while we were waiting for the
7375 response */
7376 if ( expectedResponse )
7377 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 }
7380
7381 wpalMutexRelease(&pWDICtx->wptMutex);
7382
7383 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007385
7386}/*WDI_MainRsp*/
7387
7388/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007390--------------------------------------------------------------------------*/
7391/**
7392 @brief Main FSM Stop function for state STOPPED
7393
Jeff Johnsone7245742012-09-05 17:12:55 -07007394
7395 @param pWDICtx: pointer to the WLAN DAL context
7396 pEventData: pointer to the event information structure
7397
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 @see
7399 @return Result of the function call
7400*/
7401WDI_Status
7402WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007403(
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 WDI_ControlBlockType* pWDICtx,
7405 WDI_EventInfoType* pEventData
7406)
7407{
7408 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 ----------------------------------------------------------------------*/
7411 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7412 {
7413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007414 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pWDICtx, pEventData);
7416 return WDI_STATUS_E_FAILURE;
7417 }
7418
7419 /*We should normally not get a STOP request if we are already stopped
7420 since we should normally be stopped by the UMAC. However in some
7421 error situations we put ourselves in the stopped state without the
7422 UMAC knowing, so when we get a STOP request in this state we still
7423 process it since we need to clean up the underlying state */
7424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7425 "Processing stop request while stopped in FSM");
7426
7427 /*Return Success*/
7428 return WDI_ProcessRequest( pWDICtx, pEventData );
7429
7430}/*WDI_MainStopStopped*/
7431
7432/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007434--------------------------------------------------------------------------*/
7435/**
7436 @brief Main FSM Start function for state BUSY
7437
Jeff Johnsone7245742012-09-05 17:12:55 -07007438
7439 @param pWDICtx: pointer to the WLAN DAL context
7440 pEventData: pointer to the event information structure
7441
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 @see
7443 @return Result of the function call
7444*/
7445WDI_Status
7446WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007447(
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WDI_ControlBlockType* pWDICtx,
7449 WDI_EventInfoType* pEventData
7450)
7451{
7452 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 ----------------------------------------------------------------------*/
7455 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7456 {
7457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007458 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 pWDICtx, pEventData);
7460 return WDI_STATUS_E_FAILURE;
7461 }
7462
7463 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 ----------------------------------------------------------------------*/
7466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7467 "WDI Busy state - queue start request");
7468
7469 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007470 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007471
7472 /*Return Success*/
7473 return WDI_STATUS_PENDING;
7474}/*WDI_MainStartBusy*/
7475
7476/**
7477 @brief Main FSM Stop function for state BUSY
7478
Jeff Johnsone7245742012-09-05 17:12:55 -07007479
7480 @param pWDICtx: pointer to the WLAN DAL context
7481 pEventData: pointer to the event information structure
7482
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 @see
7484 @return Result of the function call
7485*/
7486WDI_Status
7487WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007488(
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 WDI_ControlBlockType* pWDICtx,
7490 WDI_EventInfoType* pEventData
7491)
7492{
7493 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 ----------------------------------------------------------------------*/
7496 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7497 {
7498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007499 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 pWDICtx, pEventData);
7501 return WDI_STATUS_E_FAILURE;
7502 }
7503
7504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 ----------------------------------------------------------------------*/
7507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7508 "WDI Busy state - queue stop request");
7509
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
Jeff Johnson295189b2012-06-20 16:38:30 -07007513}/*WDI_MainStopBusy*/
7514
7515/**
7516 @brief Main FSM Request function for state BUSY
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518
7519 @param pWDICtx: pointer to the WLAN DAL context
7520 pEventData: pointer to the event information structure
7521
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 @see
7523 @return Result of the function call
7524*/
7525WDI_Status
7526WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007527(
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 WDI_ControlBlockType* pWDICtx,
7529 WDI_EventInfoType* pEventData
7530)
7531{
7532 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 ----------------------------------------------------------------------*/
7535 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7536 {
7537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007538 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 pWDICtx, pEventData);
7540 return WDI_STATUS_E_FAILURE;
7541 }
7542
7543 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 ----------------------------------------------------------------------*/
7546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7547 "WDI Busy state - queue request %d because waiting for response %d",
7548 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7549
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007552
Jeff Johnson295189b2012-06-20 16:38:30 -07007553}/*WDI_MainReqBusy*/
7554/**
7555 @brief Main FSM Close function for state BUSY
7556
Jeff Johnsone7245742012-09-05 17:12:55 -07007557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_EventInfoType* pEventData
7569)
7570{
7571 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 ----------------------------------------------------------------------*/
7574 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7575 {
7576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007577 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 pWDICtx, pEventData);
7579 return WDI_STATUS_E_FAILURE;
7580 }
7581
7582 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 ----------------------------------------------------------------------*/
7585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7586 "WDI Busy state - queue close request");
7587
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007590
Jeff Johnson295189b2012-06-20 16:38:30 -07007591}/*WDI_MainCloseBusy*/
7592
7593/**
7594 @brief Main FSM Shutdown function for INIT & STARTED states
7595
7596
7597 @param pWDICtx: pointer to the WLAN DAL context
7598 pEventData: pointer to the event information structure
7599
7600 @see
7601 @return Result of the function call
7602*/
7603WDI_Status
7604WDI_MainShutdown
7605(
7606 WDI_ControlBlockType* pWDICtx,
7607 WDI_EventInfoType* pEventData
7608)
7609{
7610 /*--------------------------------------------------------------------
7611 Sanity Check
7612 ----------------------------------------------------------------------*/
7613 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7614 {
7615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007616 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 pWDICtx, pEventData);
7618 return WDI_STATUS_E_FAILURE;
7619 }
7620
7621 /*State at this point is BUSY - because we enter this state before posting
7622 an event to the FSM in order to prevent potential race conditions*/
7623
7624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7625 "Processing shutdown request in FSM");
7626
7627 /*Return Success*/
7628 return WDI_ProcessRequest( pWDICtx, pEventData );
7629
7630}/*WDI_MainShutdown*/
7631
7632/**
7633 @brief Main FSM Shutdown function for BUSY state
7634
7635
7636 @param pWDICtx: pointer to the WLAN DAL context
7637 pEventData: pointer to the event information structure
7638
7639 @see
7640 @return Result of the function call
7641*/
7642WDI_Status
7643WDI_MainShutdownBusy
7644(
7645 WDI_ControlBlockType* pWDICtx,
7646 WDI_EventInfoType* pEventData
7647)
7648{
7649 /*--------------------------------------------------------------------
7650 Sanity Check
7651 ----------------------------------------------------------------------*/
7652 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7653 {
7654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007655 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 pWDICtx, pEventData);
7657 return WDI_STATUS_E_FAILURE;
7658 }
7659
7660 /* If you are waiting for a HAL response at this stage, you are not
7661 * going to get it. Riva is already shutdown/crashed.
7662 */
7663 wpalTimerStop(&gWDICb.wptResponseTimer);
7664
7665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7666 "Processing shutdown request in FSM: Busy state ");
7667
7668 return WDI_ProcessRequest( pWDICtx, pEventData );
7669
7670}/*WDI_MainShutdownBusy*/
7671
7672
Jeff Johnsone7245742012-09-05 17:12:55 -07007673/*=======================================================================
7674
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007676
Jeff Johnson295189b2012-06-20 16:38:30 -07007677*=======================================================================*/
7678
7679/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007681========================================================================*/
7682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007685
7686 @param pWDICtx: pointer to the WLAN DAL context
7687 pEventData: pointer to the event information structure
7688
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 @see
7690 @return Result of the function call
7691*/
7692WDI_Status
7693WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007694(
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 WDI_ControlBlockType* pWDICtx,
7696 WDI_EventInfoType* pEventData
7697)
7698{
7699 WDI_StartReqParamsType* pwdiStartParams = NULL;
7700 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 wpt_uint16 usDataOffset = 0;
7703 wpt_uint16 usSendSize = 0;
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 tHalMacStartReqMsg halStartReq;
7706 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7708
7709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 -------------------------------------------------------------------------*/
7712 if (( NULL == pEventData ) ||
7713 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7714 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7715 {
7716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 }
7721
7722 /*-----------------------------------------------------------------------
7723 Get message buffer
7724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 pwdiStartParams->usConfigBufferLen;
7727
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 usLen,
7730 &pSendBuffer, &usDataOffset, &usSendSize))||
7731 ( usSendSize < (usDataOffset + usLen )))
7732 {
7733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007734 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pEventData, pwdiStartParams, wdiStartRspCb);
7736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 }
7739
7740 /*-----------------------------------------------------------------------
7741 Fill in the message
7742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halStartReq.startReqParams.driverType =
7744 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halStartReq.startReqParams.uConfigBufferLen =
7747 pwdiStartParams->usConfigBufferLen;
7748 wpalMemoryCopy( pSendBuffer+usDataOffset,
7749 &halStartReq.startReqParams,
7750 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 usDataOffset += sizeof(halStartReq.startReqParams);
7753 wpalMemoryCopy( pSendBuffer+usDataOffset,
7754 pwdiStartParams->pConfigBuffer,
7755 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007759
7760 /*Save Low Level Ind CB and associated user data - it will be used further
7761 on when an indication is coming from the lower MAC*/
7762 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7771
Jeff Johnsone7245742012-09-05 17:12:55 -07007772
Jeff Johnson295189b2012-06-20 16:38:30 -07007773}/*WDI_ProcessStartReq*/
7774
7775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007778
7779 @param pWDICtx: pointer to the WLAN DAL context
7780 pEventData: pointer to the event information structure
7781
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 @see
7783 @return Result of the function call
7784*/
7785WDI_Status
7786WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007787(
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 WDI_ControlBlockType* pWDICtx,
7789 WDI_EventInfoType* pEventData
7790)
7791{
7792 WDI_StopReqParamsType* pwdiStopParams = NULL;
7793 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 wpt_uint16 usDataOffset = 0;
7796 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007797 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007798 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7800
7801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 -------------------------------------------------------------------------*/
7804 if (( NULL == pEventData ) ||
7805 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7806 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7807 {
7808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007811 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 }
7813
7814 /*-----------------------------------------------------------------------
7815 Get message buffer
7816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 sizeof(halStopReq.stopReqParams),
7819 &pSendBuffer, &usDataOffset, &usSendSize))||
7820 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7821 {
7822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007823 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 pEventData, pwdiStopParams, wdiStopRspCb);
7825 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007826 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 }
7828
7829 /*-----------------------------------------------------------------------
7830 Fill in the message
7831 -----------------------------------------------------------------------*/
7832 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7833 pwdiStopParams->wdiStopReason);
7834
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 wpalMemoryCopy( pSendBuffer+usDataOffset,
7836 &halStopReq.stopReqParams,
7837 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
7839 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007841
7842 /*! TO DO: stop the data services */
7843 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7844 {
7845 /*Stop the STA Table !UT- check this logic again
7846 It is safer to do it here than on the response - because a stop is imminent*/
7847 WDI_STATableStop(pWDICtx);
7848
7849 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007850 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7851 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 {
7853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7854 "WDI Init failed to reset power state event");
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007857 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 }
7859 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007860 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7861 if( eWLAN_PAL_STATUS_SUCCESS != status )
7862 {
7863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007864 "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 -08007865 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007866 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007867 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007871 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7872 WDI_SET_POWER_STATE_TIMEOUT);
7873 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7876 "WDI Init failed to wait on an event");
7877
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007879 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 }
7881 }
7882
7883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7888
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007889fail:
7890 // Release the message buffer so we don't leak
7891 wpalMemoryFree(pSendBuffer);
7892
7893failRequest:
7894 //WDA should have failure check to avoid the memory leak
7895 return WDI_STATUS_E_FAILURE;
7896
Jeff Johnson295189b2012-06-20 16:38:30 -07007897}/*WDI_ProcessStopReq*/
7898
7899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007902
7903 @param pWDICtx: pointer to the WLAN DAL context
7904 pEventData: pointer to the event information structure
7905
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 @see
7907 @return Result of the function call
7908*/
7909WDI_Status
7910WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007911(
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 WDI_ControlBlockType* pWDICtx,
7913 WDI_EventInfoType* pEventData
7914)
7915{
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7918
7919 /*Lock control block for cleanup*/
7920 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007921
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 /*Clear all pending request*/
7923 WDI_ClearPendingRequests(pWDICtx);
7924
7925 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007927
7928 /* Close Data transport*/
7929 /* FTM mode does not open Data Path */
7930 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7931 {
7932 WDTS_Close(pWDICtx);
7933 }
7934
7935 /*Close the STA Table !UT- check this logic again*/
7936 WDI_STATableClose(pWDICtx);
7937
7938 /*close the PAL */
7939 wptStatus = wpalClose(pWDICtx->pPALContext);
7940 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7941 {
7942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7943 "Failed to wpal Close %d", wptStatus);
7944 WDI_ASSERT(0);
7945 }
7946
7947 /*Transition back to init state*/
7948 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7949
7950 wpalMutexRelease(&pWDICtx->wptMutex);
7951
7952 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956}/*WDI_ProcessCloseReq*/
7957
7958
7959/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007961===========================================================================*/
7962
7963/**
7964 @brief Process Init Scan Request function (called when Main FSM
7965 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007966
7967 @param pWDICtx: pointer to the WLAN DAL context
7968 pEventData: pointer to the event information structure
7969
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 @see
7971 @return Result of the function call
7972*/
7973WDI_Status
7974WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007975(
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 WDI_ControlBlockType* pWDICtx,
7977 WDI_EventInfoType* pEventData
7978)
7979{
7980 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7981 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 wpt_uint16 usDataOffset = 0;
7984 wpt_uint16 usSendSize = 0;
7985 wpt_uint8 i = 0;
7986
7987 tHalInitScanReqMsg halInitScanReqMsg;
7988
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 * It shold be removed once host and riva changes are in sync*/
7991 tHalInitScanConReqMsg halInitScanConReqMsg;
7992
7993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7994
7995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 -------------------------------------------------------------------------*/
7998 if (( NULL == pEventData ) ||
7999 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8000 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8001 {
8002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 }
8007
8008#if 0
8009 wpalMutexAcquire(&pWDICtx->wptMutex);
8010 /*-----------------------------------------------------------------------
8011 Check to see if SCAN is already in progress - if so reject the req
8012 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 -----------------------------------------------------------------------*/
8015 if ( pWDICtx->bScanInProgress )
8016 {
8017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "Scan is already in progress - subsequent scan is not allowed"
8019 " until the first scan completes");
8020
8021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 }
8024
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8026 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008027
8028 wpalMutexRelease(&pWDICtx->wptMutex);
8029#endif
Viral Modid86bde22012-12-10 13:09:21 -08008030 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 * It shold be removed once host and riva changes are in sync*/
8034 /*-----------------------------------------------------------------------
8035 Get message buffer
8036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 sizeof(halInitScanConReqMsg.initScanParams),
8039 &pSendBuffer, &usDataOffset, &usSendSize))||
8040 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8041 {
8042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008043 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 }
8048
8049
8050 /*-----------------------------------------------------------------------
8051 Fill in the message
8052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8055
8056 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8057 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8058
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8065
8066 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8067 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8068
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8070 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8074
8075 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8076 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8079 }
8080
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 wpalMemoryCopy( pSendBuffer+usDataOffset,
8082 &halInitScanConReqMsg.initScanParams,
8083 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 }
8085 else
8086 {
8087 /*-----------------------------------------------------------------------
8088 Get message buffer
8089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 sizeof(halInitScanReqMsg.initScanParams),
8092 &pSendBuffer, &usDataOffset, &usSendSize))||
8093 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8094 {
8095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008096 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 }
8101
8102
8103 /*-----------------------------------------------------------------------
8104 Fill in the message
8105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8108
8109 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8110 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8111
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8118
8119 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8120 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8124
8125 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8126 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8129 }
8130
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 wpalMemoryCopy( pSendBuffer+usDataOffset,
8132 &halInitScanReqMsg.initScanParams,
8133 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 }
8135
8136 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8144
8145}/*WDI_ProcessInitScanReq*/
8146
8147/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008150
8151 @param pWDICtx: pointer to the WLAN DAL context
8152 pEventData: pointer to the event information structure
8153
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 @see
8155 @return Result of the function call
8156*/
8157WDI_Status
8158WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008159(
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_ControlBlockType* pWDICtx,
8161 WDI_EventInfoType* pEventData
8162)
8163{
8164 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8165 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 wpt_uint16 usDataOffset = 0;
8168 wpt_uint16 usSendSize = 0;
8169
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8172
8173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 -------------------------------------------------------------------------*/
8176 if (( NULL == pEventData ) ||
8177 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8178 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8179 {
8180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 }
8185
8186#if 0
8187 wpalMutexAcquire(&pWDICtx->wptMutex);
8188 /*-----------------------------------------------------------------------
8189 Check to see if SCAN is already in progress - start scan is only
8190 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8195 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8196 {
8197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8198 "Scan start not allowed in this state %d %d",
8199 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 }
8204
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
8207 wpalMutexRelease(&pWDICtx->wptMutex);
8208#endif
8209
8210 /*-----------------------------------------------------------------------
8211 Get message buffer
8212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 sizeof(halStartScanReqMsg.startScanParams),
8215 &pSendBuffer, &usDataOffset, &usSendSize))||
8216 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8217 {
8218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008219 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 }
8224
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 wpalMemoryCopy( pSendBuffer+usDataOffset,
8228 &halStartScanReqMsg.startScanParams,
8229 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233
8234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8239}/*WDI_ProcessStartScanReq*/
8240
8241
8242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008245
8246 @param pWDICtx: pointer to the WLAN DAL context
8247 pEventData: pointer to the event information structure
8248
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 @see
8250 @return Result of the function call
8251*/
8252WDI_Status
8253WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008254(
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 WDI_ControlBlockType* pWDICtx,
8256 WDI_EventInfoType* pEventData
8257)
8258{
8259 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8260 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 wpt_uint16 usDataOffset = 0;
8263 wpt_uint16 usSendSize = 0;
8264
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8267
8268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 -------------------------------------------------------------------------*/
8271 if (( NULL == pEventData ) ||
8272 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8273 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8274 {
8275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 }
8280
Jeff Johnsone7245742012-09-05 17:12:55 -07008281 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8282 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 * forwarded to HAL and result in hang*/
8284#if 0
8285 wpalMutexAcquire(&pWDICtx->wptMutex);
8286 /*-----------------------------------------------------------------------
8287 Check to see if SCAN is already in progress - end scan is only
8288 allowed when a scan is ongoing and the state of the scan procedure
8289 is started
8290 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8293 {
8294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8295 "End start not allowed in this state %d %d",
8296 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008297
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 }
8301
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303
8304 wpalMutexRelease(&pWDICtx->wptMutex);
8305#endif
8306
8307 /*-----------------------------------------------------------------------
8308 Get message buffer
8309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 sizeof(halEndScanReqMsg.endScanParams),
8312 &pSendBuffer, &usDataOffset, &usSendSize))||
8313 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008316 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321
8322 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8323
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 wpalMemoryCopy( pSendBuffer+usDataOffset,
8325 &halEndScanReqMsg.endScanParams,
8326 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330
8331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8336}/*WDI_ProcessEndScanReq*/
8337
8338
8339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
8343 @param pWDICtx: pointer to the WLAN DAL context
8344 pEventData: pointer to the event information structure
8345
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 @see
8347 @return Result of the function call
8348*/
8349WDI_Status
8350WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008351(
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 WDI_ControlBlockType* pWDICtx,
8353 WDI_EventInfoType* pEventData
8354)
8355{
8356 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8357 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 wpt_uint16 usDataOffset = 0;
8360 wpt_uint16 usSendSize = 0;
8361 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008362 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8365
8366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 -------------------------------------------------------------------------*/
8369 if (( NULL == pEventData ) ||
8370 ( NULL == pEventData->pEventData) ||
8371 ( NULL == pEventData->pCBfnc))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
8378
8379 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8380 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8382 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 * forwarded to HAL and result in hang*/
8384#if 0
8385 wpalMutexAcquire(&pWDICtx->wptMutex);
8386 /*-----------------------------------------------------------------------
8387 Check to see if SCAN is already in progress
8388 Finish scan gets invoked any scan states. ie. abort scan
8389 It should be allowed in any states.
8390 -----------------------------------------------------------------------*/
8391 if ( !pWDICtx->bScanInProgress )
8392 {
8393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8394 "Finish start not allowed in this state %d",
8395 pWDICtx->bScanInProgress );
8396
8397 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 }
8400
8401 /*-----------------------------------------------------------------------
8402 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8406 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 wpalMutexRelease(&pWDICtx->wptMutex);
8408#endif
8409
8410 if ( pWDICtx->bInBmps )
8411 {
8412 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008413 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8414 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8415 {
8416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008417 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008418 WDI_ASSERT(0);
8419 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 }
8421
8422 /*-----------------------------------------------------------------------
8423 Get message buffer
8424 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 sizeof(halFinishScanReqMsg.finishScanParams),
8427 &pSendBuffer, &usDataOffset, &usSendSize))||
8428 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8429 {
8430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008431 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 }
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8445
8446 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8447 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8458
8459 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8460 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8463 }
8464
8465 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8466 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 wpalMemoryCopy( pSendBuffer+usDataOffset,
8469 &halFinishScanReqMsg.finishScanParams,
8470 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008471
8472 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008474
8475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8480}/*WDI_ProcessFinishScanReq*/
8481
8482
8483/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008485==========================================================================*/
8486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 @brief Process BSS Join for a given Session
8488
8489 @param pWDICtx: pointer to the WLAN DAL context
8490 pEventData: pointer to the event information structure
8491
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 @see
8493 @return Result of the function call
8494*/
8495WDI_Status
8496WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008497(
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WDI_ControlBlockType* pWDICtx,
8499 WDI_JoinReqParamsType* pwdiJoinParams,
8500 WDI_JoinRspCb wdiJoinRspCb,
8501 void* pUserData
8502)
8503{
8504 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 wpt_uint16 usDataOffset = 0;
8507 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8512
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008513 wpalMutexAcquire(&pWDICtx->wptMutex);
8514
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 /*------------------------------------------------------------------------
8516 Check to see if we have any session with this BSSID already stored, we
8517 should not
8518 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8520 pwdiJoinParams->wdiReqInfo.macBSSID,
8521 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
8523 if ( NULL != pBSSSes )
8524 {
8525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008526 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8527 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008529 /*reset the bAssociationInProgress otherwise the next
8530 *join request will be queued*/
8531 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8532 wpalMutexRelease(&pWDICtx->wptMutex);
8533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 }
8535
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 if ( NULL == pBSSSes )
8541 {
8542
8543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8544 "DAL has no free sessions - cannot run another join");
8545
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008546 /*reset the bAssociationInProgress otherwise the next
8547 *join request will be queued*/
8548 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 }
8552
8553 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8555 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 WDI_MAC_ADDR_LEN);
8557
8558 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008561
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 wpalMutexRelease(&pWDICtx->wptMutex);
8563
8564 /*-----------------------------------------------------------------------
8565 Get message buffer
8566 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 sizeof(halJoinReqMsg.joinReqParams),
8569 &pSendBuffer, &usDataOffset, &usSendSize))||
8570 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8571 {
8572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008573 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 pUserData, pwdiJoinParams, wdiJoinRspCb);
8575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 }
8578
8579 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008581
8582 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 pwdiJoinParams->wdiReqInfo.macSTASelf,
8584 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008585
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8588
8589 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8590
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008591#ifdef WLAN_FEATURE_VOWIFI
8592 halJoinReqMsg.joinReqParams.maxTxPower =
8593 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8594#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8597#endif
8598
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8601 wdiSecondaryChannelOffset);
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 wpalMemoryCopy( pSendBuffer+usDataOffset,
8604 &halJoinReqMsg.joinReqParams,
8605 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
8607 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8614 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008615
8616}/*WDI_ProcessBSSSessionJoinReq*/
8617
8618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008621
8622 @param pWDICtx: pointer to the WLAN DAL context
8623 pEventData: pointer to the event information structure
8624
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 @see
8626 @return Result of the function call
8627*/
8628WDI_Status
8629WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008630(
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_ControlBlockType* pWDICtx,
8632 WDI_EventInfoType* pEventData
8633)
8634{
8635 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8636 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8637 WDI_JoinRspCb wdiJoinRspCb = NULL;
8638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8639
8640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 -------------------------------------------------------------------------*/
8643 if (( NULL == pEventData ) ||
8644 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8645 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8646 {
8647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008652
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 /*-------------------------------------------------------------------------
8654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 wpalMutexAcquire(&pWDICtx->wptMutex);
8658
8659 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8660 {
8661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8662 "Association is currently in progress, queueing new join req");
8663
8664 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 pwdiJoinParams->wdiReqInfo.macBSSID);
8667
8668 wpalMutexRelease(&pWDICtx->wptMutex);
8669
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 }
8672
8673 /*Starting a new association */
8674 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8675 wpalMutexRelease(&pWDICtx->wptMutex);
8676
8677 /*Process the Join Request*/
8678 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8679 wdiJoinRspCb,pEventData->pUserData);
8680
8681}/*WDI_ProcessJoinReq*/
8682
8683
8684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008687
8688 @param pWDICtx: pointer to the WLAN DAL context
8689 pEventData: pointer to the event information structure
8690
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 @see
8692 @return Result of the function call
8693*/
8694WDI_Status
8695WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008696(
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 WDI_ControlBlockType* pWDICtx,
8698 WDI_EventInfoType* pEventData
8699)
8700{
8701 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8702 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 wpt_uint16 uMsgSize = 0;
8706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 wpt_uint16 usDataOffset = 0;
8708 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8713
8714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 -------------------------------------------------------------------------*/
8717 if (( NULL == pEventData ) ||
8718 ( NULL == pEventData->pEventData ) ||
8719 ( NULL == pEventData->pCBfnc ))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 }
8726
Abhishek Singh6927fa02014-06-27 17:19:55 +05308727 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8729 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8730 /*-------------------------------------------------------------------------
8731 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 -------------------------------------------------------------------------*/
8734 wpalMutexAcquire(&pWDICtx->wptMutex);
8735
8736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8740 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8741 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008742
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 {
8745#ifdef WLAN_FEATURE_VOWIFI_11R
8746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 if ( NULL == pBSSSes )
8751 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008752
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8754 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008755
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008759
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8762 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008764
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8768#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 * Request in case of IBSS*/
8771 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8772 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8773 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8774 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8775 {
8776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 if ( NULL == pBSSSes )
8781 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8784 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008785
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008789
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8792 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008794
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8798 }
8799 else
8800 {
8801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8803 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8804 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8805
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 /* for IBSS testing */
8807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 }
8810#endif
8811 }
8812
8813 /*------------------------------------------------------------------------
8814 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 ------------------------------------------------------------------------*/
8817 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8818 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8820 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8821 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8822 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008825
8826 wpalMutexRelease(&pWDICtx->wptMutex);
8827
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 }
8830
8831 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8833 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 sizeof(pWDICtx->wdiCachedConfigBssReq));
8835
8836 wpalMutexRelease(&pWDICtx->wptMutex);
8837
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8839#ifdef WLAN_FEATURE_11AC
8840 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008841 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 else
8843#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008844 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008845
8846 /*-----------------------------------------------------------------------
8847 Get message buffer
8848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8851 ( usSendSize < (usDataOffset + uMsgSize )))
8852 {
8853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008854 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 }
8859
8860 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008861#ifdef WLAN_FEATURE_11AC
8862 if (WDI_getFwWlanFeatCaps(DOT11AC))
8863 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8864 &pwdiConfigBSSParams->wdiReqInfo);
8865 else
8866#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 &pwdiConfigBSSParams->wdiReqInfo);
8869
8870 /* Need to fill in the STA Index to invalid, since at this point we have not
8871 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
8874 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8876
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008877#ifdef WLAN_FEATURE_11AC
8878 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8879 wpalMemoryCopy( pSendBuffer+usDataOffset,
8880 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8881 uMsgSize);
8882 }else
8883#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008884 {
8885 if ( uMsgSize <= sizeof(tConfigBssParams) )
8886 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008887 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008888 &halConfigBssReqMsg.uBssParams.configBssParams,
8889 uMsgSize);
8890 }
8891 else
8892 {
8893 return WDI_STATUS_E_FAILURE;
8894 }
8895 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
8897 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308899 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8904 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 WDI_CONFIG_BSS_RESP);
8906
8907}/*WDI_ProcessConfigBSSReq*/
8908
8909
8910/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008913
8914 @param pWDICtx: pointer to the WLAN DAL context
8915 pEventData: pointer to the event information structure
8916
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 @see
8918 @return Result of the function call
8919*/
8920WDI_Status
8921WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008922(
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 WDI_ControlBlockType* pWDICtx,
8924 WDI_EventInfoType* pEventData
8925)
8926{
8927 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8928 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 wpt_uint16 usDataOffset = 0;
8933 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8938
8939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 -------------------------------------------------------------------------*/
8942 if (( NULL == pEventData ) ||
8943 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8944 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8945 {
8946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951
8952 /*-------------------------------------------------------------------------
8953 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 -------------------------------------------------------------------------*/
8956 wpalMutexAcquire(&pWDICtx->wptMutex);
8957
8958 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8962 pwdiDelBSSParams->ucBssIdx,
8963 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 {
8967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 "%s: BSS does not yet exist. ucBssIdx %d",
8969 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008970
8971 wpalMutexRelease(&pWDICtx->wptMutex);
8972
8973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008975
8976 /*------------------------------------------------------------------------
8977 Check if this BSS is being currently processed or queued,
8978 if queued - queue the new request as well
8979 ------------------------------------------------------------------------*/
8980 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8983 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8984 __func__, pwdiDelBSSParams->ucBssIdx);
8985
8986 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8987
8988 wpalMutexRelease(&pWDICtx->wptMutex);
8989
8990 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008992
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 /*-----------------------------------------------------------------------
8994 If we receive a Del BSS request for an association that is already in
8995 progress, it indicates that the assoc has failed => we no longer have
8996 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 -----------------------------------------------------------------------*/
8999 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9000 {
9001 /*We can switch to false here because even if a subsequent Join comes in
9002 it will only be processed when DAL transitions out of BUSY state which
9003 happens when the Del BSS request comes */
9004 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9005
9006 /*Former association is complete - prepare next pending assoc for
9007 processing */
9008 WDI_DequeueAssocRequest(pWDICtx);
9009 }
9010
9011 wpalMutexRelease(&pWDICtx->wptMutex);
9012 /*-----------------------------------------------------------------------
9013 Get message buffer
9014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 sizeof(halBssReqMsg.deleteBssParams),
9017 &pSendBuffer, &usDataOffset, &usSendSize))||
9018 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9019 {
9020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009021 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 }
9026
9027 /*Fill in the message request structure*/
9028
9029 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009030 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009031
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 wpalMemoryCopy( pSendBuffer+usDataOffset,
9033 &halBssReqMsg.deleteBssParams,
9034 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
9036 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
Jeff Johnsone7245742012-09-05 17:12:55 -07009039
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9045
Jeff Johnsone7245742012-09-05 17:12:55 -07009046
Jeff Johnson295189b2012-06-20 16:38:30 -07009047}/*WDI_ProcessDelBSSReq*/
9048
9049/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009052
9053 @param pWDICtx: pointer to the WLAN DAL context
9054 pEventData: pointer to the event information structure
9055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 @see
9057 @return Result of the function call
9058*/
9059WDI_Status
9060WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009061(
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 WDI_ControlBlockType* pWDICtx,
9063 WDI_EventInfoType* pEventData
9064)
9065{
9066 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9067 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 wpt_uint16 usDataOffset = 0;
9072 wpt_uint16 usSendSize = 0;
9073 wpt_uint16 uMsgSize = 0;
9074 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9079
9080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 -------------------------------------------------------------------------*/
9083 if (( NULL == pEventData ) ||
9084 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9085 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9086 {
9087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 }
9092
9093 /*-------------------------------------------------------------------------
9094 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 -------------------------------------------------------------------------*/
9097 wpalMutexAcquire(&pWDICtx->wptMutex);
9098
9099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9103 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9104 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106 if ( NULL == pBSSSes )
9107 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9109 "%s: Association sequence for this BSS does not yet exist - "
9110 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9111 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009112
9113 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 }
9116
9117 /*------------------------------------------------------------------------
9118 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 ------------------------------------------------------------------------*/
9121 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9122 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9124 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9125 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 wpalMutexRelease(&pWDICtx->wptMutex);
9130
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 }
9133
9134 /*-----------------------------------------------------------------------
9135 If Post Assoc was not yet received - the current association must
9136 be in progress
9137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9140 {
9141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9142 "Association sequence for this BSS association no longer in "
9143 "progress - not allowed");
9144
9145 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 }
9148
9149 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 -----------------------------------------------------------------------*/
9152 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9153 {
9154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9155 "Post Assoc not allowed before JOIN - failing request");
9156
9157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 }
9160
9161 wpalMutexRelease(&pWDICtx->wptMutex);
9162
9163 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9164 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9165 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9170 ( usSendSize < (usDataOffset + uMsgSize )))
9171 {
9172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009173 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
9178
9179 /*Copy the STA parameters */
9180 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9181 &pwdiPostAssocParams->wdiSTAParams );
9182
9183 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 WDI_STATableFindStaidByAddr(pWDICtx,
9186 pwdiPostAssocParams->wdiSTAParams.macSTA,
9187 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9188 {
9189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009190 MAC_ADDRESS_STR
9191 ": This station does not exist in the WDI Station Table",
9192 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009194 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
9198 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 pBSSSes->ucBSSIdx;
9201
9202 /*Copy the BSS parameters */
9203 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9204 &pwdiPostAssocParams->wdiBSSParams);
9205
9206 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_STATableFindStaidByAddr(pWDICtx,
9209 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 {
9212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009213 MAC_ADDRESS_STR
9214 ": This station does not exist in the WDI Station Table",
9215 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009217 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220
9221 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pBSSSes->ucBSSIdx;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225
9226 wpalMemoryCopy( pSendBuffer+usDataOffset,
9227 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9228 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009229
9230 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9233 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9234 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009235
Jeff Johnsone7245742012-09-05 17:12:55 -07009236
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009239
Jeff Johnsone7245742012-09-05 17:12:55 -07009240
9241 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009244
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309245 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252
Jeff Johnson295189b2012-06-20 16:38:30 -07009253}/*WDI_ProcessPostAssocReq*/
9254
9255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009258
9259 @param pWDICtx: pointer to the WLAN DAL context
9260 pEventData: pointer to the event information structure
9261
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 @see
9263 @return Result of the function call
9264*/
9265WDI_Status
9266WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009267(
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 WDI_ControlBlockType* pWDICtx,
9269 WDI_EventInfoType* pEventData
9270)
9271{
9272 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9273 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 wpt_uint16 usDataOffset = 0;
9278 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9281
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9284
9285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 -------------------------------------------------------------------------*/
9288 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9289 ( NULL == pEventData->pCBfnc ))
9290 {
9291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 }
9296
9297 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9298 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9299 /*-------------------------------------------------------------------------
9300 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 -------------------------------------------------------------------------*/
9303 wpalMutexAcquire(&pWDICtx->wptMutex);
9304
9305 /*------------------------------------------------------------------------
9306 Find the BSS for which the request is made and identify WDI session
9307 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9309 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 &macBSSID))
9311 {
9312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009313 "This station does not exist in the WDI Station Table %d",
9314 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 }
9318
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9320 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9323 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9324 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009325
9326 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 }
9329
9330 /*------------------------------------------------------------------------
9331 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 ------------------------------------------------------------------------*/
9334 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9335 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9337 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9338 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009339
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 }
9344
9345 wpalMutexRelease(&pWDICtx->wptMutex);
9346 /*-----------------------------------------------------------------------
9347 Get message buffer
9348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 sizeof(halDelStaReqMsg.delStaParams),
9351 &pSendBuffer, &usDataOffset, &usSendSize))||
9352 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9353 {
9354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009355 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9362 wpalMemoryCopy( pSendBuffer+usDataOffset,
9363 &halDelStaReqMsg.delStaParams,
9364 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009365
9366 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368
9369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9374
9375}/*WDI_ProcessDelSTAReq*/
9376
9377
9378/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009380==========================================================================*/
9381/**
9382 @brief Process Set BSS Key Request function (called when Main FSM
9383 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009384
9385 @param pWDICtx: pointer to the WLAN DAL context
9386 pEventData: pointer to the event information structure
9387
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 @see
9389 @return Result of the function call
9390*/
9391WDI_Status
9392WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009393(
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 WDI_ControlBlockType* pWDICtx,
9395 WDI_EventInfoType* pEventData
9396)
9397{
9398 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9399 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 wpt_uint16 usDataOffset = 0;
9404 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9407 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309408 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
9410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9411
9412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 -------------------------------------------------------------------------*/
9415 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9416 ( NULL == pEventData->pCBfnc ))
9417 {
9418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 }
9423
9424 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9425 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9426 /*-------------------------------------------------------------------------
9427 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 -------------------------------------------------------------------------*/
9430 wpalMutexAcquire(&pWDICtx->wptMutex);
9431
9432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9436 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9437 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009438
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 {
9441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9443 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009444
9445 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 }
9448
9449 /*------------------------------------------------------------------------
9450 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 ------------------------------------------------------------------------*/
9453 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9454 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9456 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9457 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009458
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 }
9463
9464
9465 wpalMutexRelease(&pWDICtx->wptMutex);
9466 /*-----------------------------------------------------------------------
9467 Get message buffer
9468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9471 &pSendBuffer, &usDataOffset, &usSendSize))||
9472 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9473 {
9474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009475 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
9480
9481 /*-----------------------------------------------------------------------
9482 Copy the Key parameters into the HAL message
9483 -----------------------------------------------------------------------*/
9484
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9489
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9492
9493 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9494 keyIndex++)
9495 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9498 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9499 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9500 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9501 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309502
9503 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9504 {
9505 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9506 {
9507 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9508 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9509 }
9510
9511 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9512 {
9513 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9514 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9515 }
9516
9517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9518 "%s: Negated Keys", __func__);
9519 }
9520 else
9521 {
9522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9523 "%s: No change in Keys", __func__);
9524 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309527 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9528 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9529 WDI_MAX_KEY_LENGTH);
9530 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309535 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009536
9537 wpalMemoryCopy( pSendBuffer+usDataOffset,
9538 &halSetBssKeyReqMsg.setBssKeyParams,
9539 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
9541 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009543
9544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9548 wdiSetBSSKeyRspCb, pEventData->pUserData,
9549 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
9551}/*WDI_ProcessSetBssKeyReq*/
9552
9553/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009556
9557 @param pWDICtx: pointer to the WLAN DAL context
9558 pEventData: pointer to the event information structure
9559
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 @see
9561 @return Result of the function call
9562*/
9563WDI_Status
9564WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009565(
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 WDI_ControlBlockType* pWDICtx,
9567 WDI_EventInfoType* pEventData
9568)
9569{
9570 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9571 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 wpt_uint16 usDataOffset = 0;
9576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9580
9581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 -------------------------------------------------------------------------*/
9584 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9585 ( NULL == pEventData->pCBfnc ))
9586 {
9587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 }
9592
9593 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9594 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9595 /*-------------------------------------------------------------------------
9596 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 -------------------------------------------------------------------------*/
9599 wpalMutexAcquire(&pWDICtx->wptMutex);
9600
9601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9605 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9606 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 {
9610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9612 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 }
9617
9618 /*------------------------------------------------------------------------
9619 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 ------------------------------------------------------------------------*/
9622 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9623 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9625 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9626 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009627
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 }
9632
9633
9634 wpalMutexRelease(&pWDICtx->wptMutex);
9635
9636 /*-----------------------------------------------------------------------
9637 Get message buffer
9638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9641 &pSendBuffer, &usDataOffset, &usSendSize))||
9642 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9643 {
9644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009645 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650 /*-----------------------------------------------------------------------
9651 Copy the Key parameters into the HAL message
9652 -----------------------------------------------------------------------*/
9653 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9654
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9657
9658 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9662
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 wpalMemoryCopy( pSendBuffer+usDataOffset,
9664 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9665 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009666
9667 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009669
9670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009676}/*WDI_ProcessRemoveBssKeyReq*/
9677
9678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009681
9682 @param pWDICtx: pointer to the WLAN DAL context
9683 pEventData: pointer to the event information structure
9684
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 @see
9686 @return Result of the function call
9687*/
9688WDI_Status
9689WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009690(
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 WDI_ControlBlockType* pWDICtx,
9692 WDI_EventInfoType* pEventData
9693)
9694{
9695 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9696 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9697 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpt_uint16 usDataOffset = 0;
9700 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9705 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309706 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009707
9708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9709
9710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 -------------------------------------------------------------------------*/
9713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9714 ( NULL == pEventData->pCBfnc ))
9715 {
9716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 }
9721
9722 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9723 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9724 /*-------------------------------------------------------------------------
9725 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 -------------------------------------------------------------------------*/
9728 wpalMutexAcquire(&pWDICtx->wptMutex);
9729
9730 /*------------------------------------------------------------------------
9731 Find the BSS for which the request is made and identify WDI session
9732 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9734 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 &macBSSID))
9736 {
9737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009738 "This station does not exist in the WDI Station Table %d",
9739 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 }
9743
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9745 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9748 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9749 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009750
9751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009754
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 /*------------------------------------------------------------------------
9756 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 ------------------------------------------------------------------------*/
9759 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9760 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9762 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9763 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009764
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 }
9769
9770
9771 wpalMutexRelease(&pWDICtx->wptMutex);
9772 /*-----------------------------------------------------------------------
9773 Get message buffer
9774 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9777 &pSendBuffer, &usDataOffset, &usSendSize))||
9778 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9779 {
9780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009781 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 }
9786 /*-----------------------------------------------------------------------
9787 Copy the STA Key parameters into the HAL message
9788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9791
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9794
9795 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9796
9797 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9798
9799 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9802 keyIndex++)
9803 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9806 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9807 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9808 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9809 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309810
9811 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9812 {
9813 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9814 {
9815 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9816 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9817 }
9818
9819 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9820 {
9821 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9822 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9823 }
9824
9825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9826 "%s: Negated Keys", __func__);
9827 }
9828 else
9829 {
9830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9831 "%s: No change in Keys", __func__);
9832 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309835 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9836 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9837 WDI_MAX_KEY_LENGTH);
9838 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309843 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 wpalMemoryCopy( pSendBuffer+usDataOffset,
9846 &halSetStaKeyReqMsg.setStaKeyParams,
9847 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009848
9849 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309851 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9856 wdiSetSTAKeyRspCb, pEventData->pUserData,
9857 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009858
9859}/*WDI_ProcessSetSTAKeyReq*/
9860
9861/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009864
9865 @param pWDICtx: pointer to the WLAN DAL context
9866 pEventData: pointer to the event information structure
9867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 @see
9869 @return Result of the function call
9870*/
9871WDI_Status
9872WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009873(
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 WDI_ControlBlockType* pWDICtx,
9875 WDI_EventInfoType* pEventData
9876)
9877{
9878 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9879 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9880 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 wpt_uint16 usDataOffset = 0;
9883 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 wpt_macAddr macBSSID;
9886 wpt_uint8 ucCurrentBSSSesIdx;
9887 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9889
9890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 -------------------------------------------------------------------------*/
9893 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9894 ( NULL == pEventData->pCBfnc ))
9895 {
9896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 }
9901
9902 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9903 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9904 /*-------------------------------------------------------------------------
9905 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 -------------------------------------------------------------------------*/
9908 wpalMutexAcquire(&pWDICtx->wptMutex);
9909
9910 /*------------------------------------------------------------------------
9911 Find the BSS for which the request is made and identify WDI session
9912 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9914 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 &macBSSID))
9916 {
9917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009918 "This station does not exist in the WDI Station Table %d",
9919 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 }
9923
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9925 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9928 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9929 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009934
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 /*------------------------------------------------------------------------
9936 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 ------------------------------------------------------------------------*/
9939 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9940 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9942 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009944
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 }
9949
9950
9951
9952 wpalMutexRelease(&pWDICtx->wptMutex);
9953 /*-----------------------------------------------------------------------
9954 Get message buffer
9955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9958 &pSendBuffer, &usDataOffset, &usSendSize))||
9959 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9960 {
9961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009962 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 }
9967
9968 /*-----------------------------------------------------------------------
9969 Copy the Key parameters into the HAL message
9970 -----------------------------------------------------------------------*/
9971
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9977
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9983
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 wpalMemoryCopy( pSendBuffer+usDataOffset,
9985 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9986 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
9988 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990
9991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009997
9998}/*WDI_ProcessRemoveSTAKeyReq*/
9999
10000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010003
10004 @param pWDICtx: pointer to the WLAN DAL context
10005 pEventData: pointer to the event information structure
10006
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 @see
10008 @return Result of the function call
10009*/
10010WDI_Status
10011WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010012(
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_ControlBlockType* pWDICtx,
10014 WDI_EventInfoType* pEventData
10015)
10016{
10017 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10018 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpt_uint16 usDataOffset = 0;
10022 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10027 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010028 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10031
10032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 -------------------------------------------------------------------------*/
10035 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10036 ( NULL == pEventData->pCBfnc ))
10037 {
10038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 }
10043
10044 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10045 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10046 /*-------------------------------------------------------------------------
10047 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
10050 wpalMutexAcquire(&pWDICtx->wptMutex);
10051
10052 /*------------------------------------------------------------------------
10053 Find the BSS for which the request is made and identify WDI session
10054 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10056 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 &macBSSID))
10058 {
10059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010060 "This station does not exist in the WDI Station Table %d",
10061 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 }
10065
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10067 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 {
10069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010070 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010072
10073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010076
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 /*------------------------------------------------------------------------
10078 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 ------------------------------------------------------------------------*/
10081 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10082 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10084 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10085 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 }
10091
10092
10093 wpalMutexRelease(&pWDICtx->wptMutex);
10094 /*-----------------------------------------------------------------------
10095 Get message buffer
10096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10099 &pSendBuffer, &usDataOffset, &usSendSize))||
10100 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10101 {
10102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010103 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 }
10108 /*-----------------------------------------------------------------------
10109 Copy the STA Key parameters into the HAL message
10110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10113
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10116
10117 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10118
10119 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10120
10121 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10122
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10124 keyIndex++)
10125 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10128 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10129 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10130 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10131 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010132
10133 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10134 {
10135 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10136 {
10137 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10138 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10139 }
10140
10141 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10142 {
10143 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10144 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10145 }
10146
10147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10148 "%s: Negated Keys", __func__);
10149 }
10150 else
10151 {
10152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10153 "%s: No change in Keys", __func__);
10154 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010157 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10158 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10159 WDI_MAX_KEY_LENGTH);
10160 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010165 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 wpalMemoryCopy( pSendBuffer+usDataOffset,
10167 &halSetStaKeyReqMsg.setStaKeyParams,
10168 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010169
10170 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172
10173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10177 wdiSetSTAKeyRspCb, pEventData->pUserData,
10178 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010179
10180}/*WDI_ProcessSetSTABcastKeyReq*/
10181
10182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010185
10186 @param pWDICtx: pointer to the WLAN DAL context
10187 pEventData: pointer to the event information structure
10188
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 @see
10190 @return Result of the function call
10191*/
10192WDI_Status
10193WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010194(
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 WDI_ControlBlockType* pWDICtx,
10196 WDI_EventInfoType* pEventData
10197)
10198{
10199 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10200 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10201 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 wpt_uint16 usDataOffset = 0;
10204 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 wpt_macAddr macBSSID;
10207 wpt_uint8 ucCurrentBSSSesIdx;
10208 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10210
10211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 -------------------------------------------------------------------------*/
10214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10215 ( NULL == pEventData->pCBfnc ))
10216 {
10217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 }
10222
10223 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10224 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10225 /*-------------------------------------------------------------------------
10226 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 -------------------------------------------------------------------------*/
10229 wpalMutexAcquire(&pWDICtx->wptMutex);
10230
10231 /*------------------------------------------------------------------------
10232 Find the BSS for which the request is made and identify WDI session
10233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10235 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 &macBSSID))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010239 "This station does not exist in the WDI Station Table %d",
10240 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 }
10244
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10246 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10249 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10250 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010255
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 /*------------------------------------------------------------------------
10257 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 ------------------------------------------------------------------------*/
10260 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10261 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10263 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10264 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 }
10270
10271
10272
10273 wpalMutexRelease(&pWDICtx->wptMutex);
10274 /*-----------------------------------------------------------------------
10275 Get message buffer
10276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10279 &pSendBuffer, &usDataOffset, &usSendSize))||
10280 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10281 {
10282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010283 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 }
10288
10289 /*-----------------------------------------------------------------------
10290 Copy the Key parameters into the HAL message
10291 -----------------------------------------------------------------------*/
10292
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10295
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10298
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10301
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10304
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 wpalMemoryCopy( pSendBuffer+usDataOffset,
10306 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10307 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010308
10309 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
10312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010318
10319}/*WDI_ProcessRemoveSTABcastKeyReq*/
10320
10321/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010323==========================================================================*/
10324/**
10325 @brief Process Add TSpec Request function (called when Main FSM
10326 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010327
10328 @param pWDICtx: pointer to the WLAN DAL context
10329 pEventData: pointer to the event information structure
10330
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 @see
10332 @return Result of the function call
10333*/
10334WDI_Status
10335WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010336(
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 WDI_ControlBlockType* pWDICtx,
10338 WDI_EventInfoType* pEventData
10339)
10340{
10341 WDI_AddTSReqParamsType* pwdiAddTSParams;
10342 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpt_uint16 usDataOffset = 0;
10347 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 wpt_macAddr macBSSID;
10350 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010351
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10353
10354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 -------------------------------------------------------------------------*/
10357 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10358 ( NULL == pEventData->pCBfnc ))
10359 {
10360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 }
10365
10366 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10367 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10368 /*-------------------------------------------------------------------------
10369 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 -------------------------------------------------------------------------*/
10372 wpalMutexAcquire(&pWDICtx->wptMutex);
10373
10374 /*------------------------------------------------------------------------
10375 Find the BSS for which the request is made and identify WDI session
10376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10378 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 &macBSSID))
10380 {
10381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010382 "This station does not exist in the WDI Station Table %d",
10383 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 }
10387
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10389 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10392 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10393 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010394
10395 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010398
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 /*------------------------------------------------------------------------
10400 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 ------------------------------------------------------------------------*/
10403 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10404 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10406 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10407 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010408
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 }
10413
10414 wpalMutexRelease(&pWDICtx->wptMutex);
10415 /*-----------------------------------------------------------------------
10416 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10420 sizeof(halAddTsParams),
10421 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 &usSendSize))||
10423 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010426 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 }
10431
10432 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10433 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10434
10435 //TSPEC IE
10436 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10437 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10468
10469 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10484
10485 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10490
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 wpalMemoryCopy( pSendBuffer+usDataOffset,
10492 &halAddTsParams,
10493 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
10495 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497
10498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010504}/*WDI_ProcessAddTSpecReq*/
10505
10506
10507/**
10508 @brief Process Del TSpec Request function (called when Main FSM
10509 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010510
10511 @param pWDICtx: pointer to the WLAN DAL context
10512 pEventData: pointer to the event information structure
10513
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 @see
10515 @return Result of the function call
10516*/
10517WDI_Status
10518WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010519(
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 WDI_ControlBlockType* pWDICtx,
10521 WDI_EventInfoType* pEventData
10522)
10523{
10524 WDI_DelTSReqParamsType* pwdiDelTSParams;
10525 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 wpt_uint16 usDataOffset = 0;
10530 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10533
10534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 -------------------------------------------------------------------------*/
10537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10538 ( NULL == pEventData->pCBfnc ))
10539 {
10540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 }
10545
10546 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10547 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10548
10549 /*-------------------------------------------------------------------------
10550 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 -------------------------------------------------------------------------*/
10553 wpalMutexAcquire(&pWDICtx->wptMutex);
10554
10555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10559 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10560 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010561
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10565 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10566 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10567
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
10572 /*------------------------------------------------------------------------
10573 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 ------------------------------------------------------------------------*/
10576 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10579 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10580 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 }
10586
10587
10588 wpalMutexRelease(&pWDICtx->wptMutex);
10589 /*-----------------------------------------------------------------------
10590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10595 &pSendBuffer, &usDataOffset, &usSendSize))||
10596 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10597 {
10598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010599 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 }
10604
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 wpalMemoryCopy( pSendBuffer+usDataOffset,
10606 &pwdiDelTSParams->wdiDelTSInfo,
10607 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010608
10609 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10616 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010617}/*WDI_ProcessDelTSpecReq*/
10618
10619/**
10620 @brief Process Update EDCA Params Request function (called when
10621 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010622
10623 @param pWDICtx: pointer to the WLAN DAL context
10624 pEventData: pointer to the event information structure
10625
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 @see
10627 @return Result of the function call
10628*/
10629WDI_Status
10630WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010631(
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 WDI_ControlBlockType* pWDICtx,
10633 WDI_EventInfoType* pEventData
10634)
10635{
10636 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10637 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 wpt_uint16 usDataOffset = 0;
10642 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10645
10646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 -------------------------------------------------------------------------*/
10649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10650 ( NULL == pEventData->pCBfnc ))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
10658 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10659 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10660 /*-------------------------------------------------------------------------
10661 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 -------------------------------------------------------------------------*/
10664 wpalMutexAcquire(&pWDICtx->wptMutex);
10665
10666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10670 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10671 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 {
10675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10677 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010678
10679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 }
10682
10683 /*------------------------------------------------------------------------
10684 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 ------------------------------------------------------------------------*/
10687 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10688 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10690 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10691 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
10698
10699 wpalMutexRelease(&pWDICtx->wptMutex);
10700 /*-----------------------------------------------------------------------
10701 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10706 &pSendBuffer, &usDataOffset, &usSendSize))||
10707 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10708 {
10709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010710 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 }
10715
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 wpalMemoryCopy( pSendBuffer+usDataOffset,
10717 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10718 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010719
10720 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722
10723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10727 wdiUpdateEDCARspCb, pEventData->pUserData,
10728 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010729}/*WDI_ProcessUpdateEDCAParamsReq*/
10730
10731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010734
10735 @param pWDICtx: pointer to the WLAN DAL context
10736 pEventData: pointer to the event information structure
10737
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 @see
10739 @return Result of the function call
10740*/
10741WDI_Status
10742WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010743(
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ControlBlockType* pWDICtx,
10745 WDI_EventInfoType* pEventData
10746)
10747{
10748 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10749 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_uint16 usDataOffset = 0;
10754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 wpt_macAddr macBSSID;
10757
10758 tAddBASessionReqMsg halAddBASessionReq;
10759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10760
10761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 -------------------------------------------------------------------------*/
10764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10765 ( NULL == pEventData->pCBfnc ))
10766 {
10767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 }
10772
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10777 /*-------------------------------------------------------------------------
10778 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 -------------------------------------------------------------------------*/
10781 wpalMutexAcquire(&pWDICtx->wptMutex);
10782
10783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10787 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 &macBSSID))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010791 "This station does not exist in the WDI Station Table %d",
10792 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 }
10796
10797
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010799
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10803 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10804 __func__, MAC_ADDR_ARRAY(macBSSID));
10805
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 }
10809
10810 /*------------------------------------------------------------------------
10811 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 ------------------------------------------------------------------------*/
10814 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10815 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10817 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10818 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010819
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 }
10824
10825
10826 wpalMutexRelease(&pWDICtx->wptMutex);
10827 /*-----------------------------------------------------------------------
10828 Get message buffer
10829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10831 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 sizeof(halAddBASessionReq.addBASessionParams),
10833 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10836 {
10837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010838 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 }
10843
10844 halAddBASessionReq.addBASessionParams.staIdx =
10845 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10846 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10847 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10848 WDI_MAC_ADDR_LEN);
10849 halAddBASessionReq.addBASessionParams.baTID =
10850 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10851 halAddBASessionReq.addBASessionParams.baPolicy =
10852 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10853 halAddBASessionReq.addBASessionParams.baBufferSize =
10854 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10855 halAddBASessionReq.addBASessionParams.baTimeout =
10856 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10857 halAddBASessionReq.addBASessionParams.baSSN =
10858 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10859 halAddBASessionReq.addBASessionParams.baDirection =
10860 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10861
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpalMemoryCopy( pSendBuffer+usDataOffset,
10863 &halAddBASessionReq.addBASessionParams,
10864 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010868
10869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10873 wdiAddBASessionRspCb, pEventData->pUserData,
10874 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010875}/*WDI_ProcessAddBASessionReq*/
10876
10877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010880
10881 @param pWDICtx: pointer to the WLAN DAL context
10882 pEventData: pointer to the event information structure
10883
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 @see
10885 @return Result of the function call
10886*/
10887WDI_Status
10888WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010889(
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 WDI_ControlBlockType* pWDICtx,
10891 WDI_EventInfoType* pEventData
10892)
10893{
10894 WDI_DelBAReqParamsType* pwdiDelBAParams;
10895 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 wpt_uint16 usDataOffset = 0;
10900 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 wpt_macAddr macBSSID;
10903 tDelBAParams halDelBAparam;
10904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10905
10906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 -------------------------------------------------------------------------*/
10909 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10910 ( NULL == pEventData->pCBfnc ))
10911 {
10912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 }
10917
10918 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10919 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10920 /*-------------------------------------------------------------------------
10921 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 -------------------------------------------------------------------------*/
10924 wpalMutexAcquire(&pWDICtx->wptMutex);
10925
10926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10930 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 &macBSSID))
10932 {
10933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010934 "This station does not exist in the WDI Station Table %d",
10935 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 }
10939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010941
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10945 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10946 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010947
10948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 }
10951
10952 /*------------------------------------------------------------------------
10953 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 ------------------------------------------------------------------------*/
10956 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10957 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10959 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10960 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010961
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 }
10966
10967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 sizeof(halDelBAparam),
10970 &pSendBuffer, &usDataOffset, &usSendSize))||
10971 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10972 {
10973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010974 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 }
10979
10980 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10981 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10982 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10983
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 wpalMemoryCopy( pSendBuffer+usDataOffset,
10985 &halDelBAparam,
10986 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010987
10988 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010990
10991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10995 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010996}/*WDI_ProcessDelBAReq*/
10997
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010998#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010999
11000WDI_Status
11001WDI_ProcessTSMStatsReq
11002(
11003 WDI_ControlBlockType* pWDICtx,
11004 WDI_EventInfoType* pEventData
11005)
11006{
11007 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11008 WDI_TsmRspCb wdiTSMRspCb;
11009 wpt_uint8 ucCurrentBSSSesIdx = 0;
11010 WDI_BSSSessionType* pBSSSes = NULL;
11011 wpt_uint8* pSendBuffer = NULL;
11012 wpt_uint16 usDataOffset = 0;
11013 wpt_uint16 usSendSize = 0;
11014 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11015 tTsmStatsParams halTsmStatsReqParams = {0};
11016
11017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11018
11019 /*-------------------------------------------------------------------------
11020 Sanity check
11021 -------------------------------------------------------------------------*/
11022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11023 ( NULL == pEventData->pCBfnc ))
11024 {
11025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 WDI_ASSERT(0);
11028 return WDI_STATUS_E_FAILURE;
11029 }
11030
11031 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11032 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11033 /*-------------------------------------------------------------------------
11034 Check to see if we are in the middle of an association, if so queue, if
11035 not it means it is free to process request
11036 -------------------------------------------------------------------------*/
11037 wpalMutexAcquire(&pWDICtx->wptMutex);
11038
11039 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11040 if ( NULL == pBSSSes )
11041 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11043 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11044 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011045
11046 wpalMutexRelease(&pWDICtx->wptMutex);
11047 return WDI_STATUS_E_NOT_ALLOWED;
11048 }
11049
11050 /*------------------------------------------------------------------------
11051 Check if this BSS is being currently processed or queued,
11052 if queued - queue the new request as well
11053 ------------------------------------------------------------------------*/
11054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011059
11060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11061 wpalMutexRelease(&pWDICtx->wptMutex);
11062 return wdiStatus;
11063 }
11064
11065 wpalMutexRelease(&pWDICtx->wptMutex);
11066 /*-----------------------------------------------------------------------
11067 Get message buffer
11068 ! TO DO : proper conversion into the HAL Message Request Format
11069 -----------------------------------------------------------------------*/
11070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11071 sizeof(halTsmStatsReqParams),
11072 &pSendBuffer, &usDataOffset, &usSendSize))||
11073 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11074 {
11075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011076 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 pEventData, pwdiTSMParams, wdiTSMRspCb);
11078 WDI_ASSERT(0);
11079 return WDI_STATUS_E_FAILURE;
11080 }
11081
11082 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11083 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11084 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11085 WDI_MAC_ADDR_LEN);
11086 wpalMemoryCopy( pSendBuffer+usDataOffset,
11087 &halTsmStatsReqParams,
11088 sizeof(halTsmStatsReqParams));
11089
11090 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11091 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11092
11093 /*-------------------------------------------------------------------------
11094 Send TSM Stats Request to HAL
11095 -------------------------------------------------------------------------*/
11096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11097 wdiTSMRspCb, pEventData->pUserData,
11098 WDI_TSM_STATS_RESP);
11099}/*WDI_ProcessTSMStatsReq*/
11100
11101#endif
11102
11103
11104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011107
11108 @param pWDICtx: pointer to the WLAN DAL context
11109 pEventData: pointer to the event information structure
11110
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 @see
11112 @return Result of the function call
11113*/
11114WDI_Status
11115WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011116(
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 WDI_ControlBlockType* pWDICtx,
11118 WDI_EventInfoType* pEventData
11119)
11120{
11121 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11122 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 wpt_uint16 usDataOffset = 0;
11125 wpt_uint16 usSendSize = 0;
11126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11127
11128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 -------------------------------------------------------------------------*/
11131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11132 ( NULL == pEventData->pCBfnc ))
11133 {
11134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 }
11139
11140 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11141 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11142 /*-----------------------------------------------------------------------
11143 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11148 &pSendBuffer, &usDataOffset, &usSendSize))||
11149 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11150 {
11151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011152 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 }
11157
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 wpalMemoryCopy( pSendBuffer+usDataOffset,
11159 &pwdiFlushAcParams->wdiFlushAcInfo,
11160 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011161
11162 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011164
11165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11169 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011170}/*WDI_ProcessFlushAcReq*/
11171
11172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011175
11176 @param pWDICtx: pointer to the WLAN DAL context
11177 pEventData: pointer to the event information structure
11178
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 @see
11180 @return Result of the function call
11181*/
11182WDI_Status
11183WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011184(
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 WDI_ControlBlockType* pWDICtx,
11186 WDI_EventInfoType* pEventData
11187)
11188{
11189 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11190 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 wpt_uint16 usDataOffset = 0;
11193 wpt_uint16 usSendSize = 0;
11194
11195 tBtAmpEventMsg haltBtAmpEventMsg;
11196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11197
11198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 -------------------------------------------------------------------------*/
11201 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11202 ( NULL == pEventData->pCBfnc ))
11203 {
11204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 }
11209
11210 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11211 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11212 /*-----------------------------------------------------------------------
11213 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11218 &pSendBuffer, &usDataOffset, &usSendSize))||
11219 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11220 {
11221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011222 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 }
11227
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011229 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 wpalMemoryCopy( pSendBuffer+usDataOffset,
11231 &haltBtAmpEventMsg.btAmpEventParams,
11232 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011233
11234 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236
11237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11241 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011242}/*WDI_ProcessBtAmpEventReq*/
11243
11244/**
11245 @brief Process Add STA self Request function (called when Main FSM
11246 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011247
11248 @param pWDICtx: pointer to the WLAN DAL context
11249 pEventData: pointer to the event information structure
11250
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 @see
11252 @return Result of the function call
11253*/
11254WDI_Status
11255WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011256(
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 WDI_ControlBlockType* pWDICtx,
11258 WDI_EventInfoType* pEventData
11259)
11260{
11261 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11262 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 wpt_uint16 usDataOffset = 0;
11265 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011266 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11268
11269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 -------------------------------------------------------------------------*/
11272 if (( NULL == pEventData ) ||
11273 ( NULL == pEventData->pEventData) ||
11274 ( NULL == pEventData->pCBfnc))
11275 {
11276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 }
11281
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11286 /*-----------------------------------------------------------------------
11287 Get message buffer
11288 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11290 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011291 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011293 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 {
11295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011296 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 }
11301
11302 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11305
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011307 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11308 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11309 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11310 {
11311 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11312 }
11313 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11314 VOS_P2P_CLIENT_MODE) ||
11315 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11316 VOS_P2P_DEVICE))
11317 {
11318 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11319 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011321 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011322
11323 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325
11326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11330 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11331 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011332}/*WDI_ProcessAddSTASelfReq*/
11333
11334
11335
11336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011339
11340 @param pWDICtx: pointer to the WLAN DAL context
11341 pEventData: pointer to the event information structure
11342
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 @see
11344 @return Result of the function call
11345*/
11346WDI_Status
11347WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011348(
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 WDI_ControlBlockType* pWDICtx,
11350 WDI_EventInfoType* pEventData
11351)
11352{
11353 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11354 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 wpt_uint16 usDataOffset = 0;
11357 wpt_uint16 usSendSize = 0;
11358 tDelStaSelfParams halSetDelSelfSTAParams;
11359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11360
11361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 -------------------------------------------------------------------------*/
11364 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11365 ( NULL == pEventData->pCBfnc ))
11366 {
11367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 }
11372
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11375 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11376
11377 /*-----------------------------------------------------------------------
11378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11383 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11386 {
11387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011388 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 }
11393
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11396
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11398 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011399
11400 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011402
11403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11407 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 WDI_DEL_STA_SELF_RESP);
11409
11410}
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412#ifdef FEATURE_OEM_DATA_SUPPORT
11413/**
11414 @brief Process Start Oem Data Request function (called when Main
11415 FSM allows it)
11416
11417 @param pWDICtx: pointer to the WLAN DAL context
11418 pEventData: pointer to the event information structure
11419
11420 @see
11421 @return Result of the function call
11422*/
11423WDI_Status
11424WDI_ProcessStartOemDataReq
11425(
11426 WDI_ControlBlockType* pWDICtx,
11427 WDI_EventInfoType* pEventData
11428)
11429{
11430 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11431 WDI_oemDataRspCb wdiOemDataRspCb;
11432 wpt_uint8* pSendBuffer = NULL;
11433 wpt_uint16 usDataOffset = 0;
11434 wpt_uint16 usSendSize = 0;
11435 wpt_uint16 reqLen;
11436 tStartOemDataReqParams* halStartOemDataReqParams;
11437
11438 /*-------------------------------------------------------------------------
11439 Sanity check
11440 -------------------------------------------------------------------------*/
11441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11442 ( NULL == pEventData->pCBfnc ))
11443 {
11444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011445 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 WDI_ASSERT(0);
11447 return WDI_STATUS_E_FAILURE;
11448 }
11449
11450 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11451 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11452
11453 /*-----------------------------------------------------------------------
11454 Get message buffer
11455 -----------------------------------------------------------------------*/
11456
11457 reqLen = sizeof(tStartOemDataReqParams);
11458
11459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11460 WDI_START_OEM_DATA_REQ, reqLen,
11461 &pSendBuffer, &usDataOffset, &usSendSize))||
11462 (usSendSize < (usDataOffset + reqLen)))
11463 {
11464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011465 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11467 WDI_ASSERT(0);
11468 return WDI_STATUS_E_FAILURE;
11469 }
11470
11471 //copying WDI OEM DATA REQ PARAMS to shared memory
11472 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11473
11474 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11475 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11476
11477 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11478 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11479
11480 /*-------------------------------------------------------------------------
11481 Send Start Request to HAL
11482 -------------------------------------------------------------------------*/
11483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11484 wdiOemDataRspCb, pEventData->pUserData,
11485 WDI_START_OEM_DATA_RESP);
11486}/*WDI_ProcessStartOemDataReq*/
11487#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011488
11489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011492
11493 @param pWDICtx: pointer to the WLAN DAL context
11494 pEventData: pointer to the event information structure
11495
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 @see
11497 @return Result of the function call
11498*/
11499WDI_Status
11500WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011501(
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 WDI_ControlBlockType* pWDICtx,
11503 WDI_EventInfoType* pEventData
11504)
11505{
11506 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11507 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 wpt_uint16 usDataOffset = 0;
11510 wpt_uint16 usSendSize = 0;
11511 tHalWlanHostResumeReqParam halResumeReqParams;
11512
11513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11514
11515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 -------------------------------------------------------------------------*/
11518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11519 ( NULL == pEventData->pCBfnc ))
11520 {
11521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011522 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 }
11526
11527 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11528 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11529
11530 /*-----------------------------------------------------------------------
11531 Get message buffer
11532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11535 &pSendBuffer, &usDataOffset, &usSendSize))||
11536 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11537 {
11538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011539 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 }
11544
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011547
11548 wpalMemoryCopy( pSendBuffer+usDataOffset,
11549 &halResumeReqParams,
11550 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011551
11552 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011554
11555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11559 wdiHostResumeRspCb, pEventData->pUserData,
11560 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011561}/*WDI_ProcessHostResumeReq*/
11562
11563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011566
11567 @param pWDICtx: pointer to the WLAN DAL context
11568 pEventData: pointer to the event information structure
11569
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 @see
11571 @return Result of the function call
11572*/
11573WDI_Status
11574WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011575(
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 WDI_ControlBlockType* pWDICtx,
11577 WDI_EventInfoType* pEventData
11578)
11579{
11580 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11581 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 wpt_uint16 usDataOffset = 0;
11584 wpt_uint16 usSendSize = 0;
11585 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11587
11588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 -------------------------------------------------------------------------*/
11591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11592 ( NULL == pEventData->pCBfnc ))
11593 {
11594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011595 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 }
11599
11600 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11601 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011602
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 /*-----------------------------------------------------------------------
11604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 sizeof(halTxPerTrackingReqParam),
11609 &pSendBuffer, &usDataOffset, &usSendSize))||
11610 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11611 {
11612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011613 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011618
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11620 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11621 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11622 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011623
11624 wpalMemoryCopy( pSendBuffer+usDataOffset,
11625 &halTxPerTrackingReqParam,
11626 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011627
11628 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011630
11631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11635 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011636}/*WDI_ProcessSetTxPerTrackingReq*/
11637
11638/*=========================================================================
11639 Indications
11640=========================================================================*/
11641
11642/**
11643 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011644
11645 @param pWDICtx: pointer to the WLAN DAL context
11646 pEventData: pointer to the event information structure
11647
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 @see
11649 @return Result of the function call
11650*/
11651WDI_Status
11652WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011653(
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 WDI_ControlBlockType* pWDICtx,
11655 WDI_EventInfoType* pEventData
11656)
11657{
11658 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 wpt_uint16 usDataOffset = 0;
11661 wpt_uint16 usSendSize = 0;
11662 WDI_Status wdiStatus;
11663 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11665
11666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 -------------------------------------------------------------------------*/
11669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11670 {
11671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011672 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 }
11676
11677 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11678
11679 /*-----------------------------------------------------------------------
11680 Get message buffer
11681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11683 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 sizeof(halWlanSuspendIndparams),
11685 &pSendBuffer, &usDataOffset, &usSendSize))||
11686 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11687 {
11688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11689 "Unable to get send buffer in Suspend Ind ");
11690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 }
11693
11694 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11695 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11696
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011698 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11701 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011702
11703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 -------------------------------------------------------------------------*/
11706 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011708
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11711}/*WDI_ProcessHostSuspendInd*/
11712
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011713
11714
11715/**
11716 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11717
11718 @param pWDICtx: pointer to the WLAN DAL context
11719 pEventData: pointer to the event information structure
11720
11721 @see
11722 @return Result of the function call
11723*/
11724WDI_Status
11725WDI_ProcessTrafficStatsInd
11726(
11727 WDI_ControlBlockType* pWDICtx,
11728 WDI_EventInfoType* pEventData
11729)
11730{
11731 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11732 wpt_uint8* pSendBuffer = NULL;
11733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
11735 WDI_Status wdiStatus;
11736 tStatsClassBIndParams* pStatsClassBIndParams;
11737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11738
11739 /*-------------------------------------------------------------------------
11740 Sanity check
11741 -------------------------------------------------------------------------*/
11742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11743 {
11744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11745 "%s: Invalid parameters in Traffic Stats ind",__func__);
11746 WDI_ASSERT(0);
11747 return WDI_STATUS_E_FAILURE;
11748 }
11749
11750 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11751
11752 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11753 {
11754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11755 "%s: Invalid parameters in Traffic Stats ind",__func__);
11756 WDI_ASSERT(0);
11757 return WDI_STATUS_E_FAILURE;
11758 }
11759
11760 /*-----------------------------------------------------------------------
11761 Get message buffer
11762 -----------------------------------------------------------------------*/
11763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11764 WDI_TRAFFIC_STATS_IND,
11765 sizeof(tStatsClassBIndParams),
11766 &pSendBuffer, &usDataOffset, &usSendSize))||
11767 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11768 {
11769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11770 "Unable to get send buffer in Traffic Stats Ind ");
11771 WDI_ASSERT(0);
11772 return WDI_STATUS_E_FAILURE;
11773 }
11774
11775 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11776
11777 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11778
11779 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11780 pTrafficStatsIndParams->pTrafficStats,
11781 pTrafficStatsIndParams->length);
11782
11783 /*-------------------------------------------------------------------------
11784 Send Suspend Request to HAL
11785 -------------------------------------------------------------------------*/
11786 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11787 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11788
11789 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11790 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11791}/*WDI_ProcessTrafficStatsInd*/
11792
Chet Lanctot186b5732013-03-18 10:26:30 -070011793#ifdef WLAN_FEATURE_11W
11794/**
11795 @brief Process Exclude Unencrypted Indications function (called
11796 when Main FSM allows it)
11797
11798 @param pWDICtx: pointer to the WLAN DAL context
11799 pEventData: pointer to the event information structure
11800
11801 @see
11802 @return Result of the function call
11803*/
11804WDI_Status
11805WDI_ProcessExcludeUnencryptInd
11806(
11807 WDI_ControlBlockType* pWDICtx,
11808 WDI_EventInfoType* pEventData
11809)
11810{
11811 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11812 wpt_uint8* pSendBuffer = NULL;
11813 wpt_uint16 usDataOffset = 0;
11814 wpt_uint16 usSendSize = 0;
11815 WDI_Status wdiStatus;
11816 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11818
11819 /*-------------------------------------------------------------------------
11820 Sanity check
11821 -------------------------------------------------------------------------*/
11822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11823 {
11824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11825 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11826 WDI_ASSERT(0);
11827 return WDI_STATUS_E_FAILURE;
11828 }
11829
11830 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11831
11832 /*-----------------------------------------------------------------------
11833 Get message buffer
11834 -----------------------------------------------------------------------*/
11835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11836 WDI_EXCLUDE_UNENCRYPTED_IND,
11837 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11838 &pSendBuffer, &usDataOffset, &usSendSize))||
11839 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11840 {
11841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11842 "Unable to get send buffer in Exclude Unencrypted Ind ");
11843 WDI_ASSERT(0);
11844 return WDI_STATUS_E_FAILURE;
11845 }
11846
11847 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11848
11849 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11850
11851 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11852 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11853
11854 /*-------------------------------------------------------------------------
11855 Send Suspend Request to HAL
11856 -------------------------------------------------------------------------*/
11857 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11858 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11859
11860 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11861 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11862}/*WDI_ProcessExcludeUnencryptInd*/
11863#endif
11864
Yue Mab9c86f42013-08-14 15:59:08 -070011865/**
11866 @brief Process Add Periodic Tx Pattern Indication function (called when
11867 Main FSM allows it)
11868
11869 @param pWDICtx: pointer to the WLAN DAL context
11870 pEventData: pointer to the event information structure
11871
11872 @see
11873 @return Result of the function call
11874*/
11875WDI_Status
11876WDI_ProcessAddPeriodicTxPtrnInd
11877(
11878 WDI_ControlBlockType* pWDICtx,
11879 WDI_EventInfoType* pEventData
11880)
11881{
11882 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11883 wpt_uint8* pSendBuffer = NULL;
11884 wpt_uint16 usDataOffset = 0;
11885 wpt_uint16 usSendSize = 0;
11886 WDI_Status wdiStatus;
11887 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11888 wpt_uint8 selfStaIdx = 0;
11889
11890 /*-------------------------------------------------------------------------
11891 Sanity check
11892 -------------------------------------------------------------------------*/
11893 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11894 {
11895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11896 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11897 WDI_ASSERT(0);
11898 return WDI_STATUS_E_FAILURE;
11899 }
11900
11901 pAddPeriodicTxPtrnParams =
11902 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11903
11904 /*------------------------------------------------------------------------
11905 Get message buffer
11906 ------------------------------------------------------------------------*/
11907 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11908 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11909 &pSendBuffer, &usDataOffset, &usSendSize))||
11910 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11911 {
11912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11913 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11914 __func__);
11915 WDI_ASSERT(0);
11916 return WDI_STATUS_E_FAILURE;
11917 }
11918
11919 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11920
11921 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11922 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11923 &selfStaIdx))
11924 {
11925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11926 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011927 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011928
11929 return WDI_STATUS_E_FAILURE;
11930 }
11931
11932 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11933 halAddPeriodicTxPtrn->ucPtrnId =
11934 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11935 halAddPeriodicTxPtrn->usPtrnSize =
11936 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11937 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11938 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11939
11940 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11941 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11942 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11943
11944 /*-------------------------------------------------------------------------
11945 Send Indication to HAL
11946 -------------------------------------------------------------------------*/
11947 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11948 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11949
11950 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11951
11952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11953 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11954
11955 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11956} /* WDI_ProcessAddPeriodicTxPtrnInd */
11957
11958/**
11959 @brief Process Delete Periodic Tx Pattern Indication function (called when
11960 Main FSM allows it)
11961
11962 @param pWDICtx: pointer to the WLAN DAL context
11963 pEventData: pointer to the event information structure
11964
11965 @see
11966 @return Result of the function call
11967*/
11968WDI_Status
11969WDI_ProcessDelPeriodicTxPtrnInd
11970(
11971 WDI_ControlBlockType* pWDICtx,
11972 WDI_EventInfoType* pEventData
11973)
11974{
11975 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11976 wpt_uint8* pSendBuffer = NULL;
11977 wpt_uint16 usDataOffset = 0;
11978 wpt_uint16 usSendSize = 0;
11979 WDI_Status wdiStatus;
11980 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11981 wpt_uint8 selfStaIdx = 0;
11982
11983 /*-------------------------------------------------------------------------
11984 Sanity check
11985 -------------------------------------------------------------------------*/
11986 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11987 {
11988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11989 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11990 WDI_ASSERT(0);
11991 return WDI_STATUS_E_FAILURE;
11992 }
11993
11994 pDelPeriodicTxPtrnParams =
11995 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11996
11997 /*------------------------------------------------------------------------
11998 Get message buffer
11999 ------------------------------------------------------------------------*/
12000 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12001 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12002 &pSendBuffer, &usDataOffset, &usSendSize))||
12003 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12004 {
12005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12006 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12007 __func__);
12008 WDI_ASSERT(0);
12009 return WDI_STATUS_E_FAILURE;
12010 }
12011
12012 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12013
12014 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12015 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12016 &selfStaIdx))
12017 {
12018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12019 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012020 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012021
12022 return WDI_STATUS_E_FAILURE;
12023 }
12024
12025 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12026 halDelPeriodicTxPtrn->uPatternIdBitmap =
12027 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12028
12029 /*-------------------------------------------------------------------------
12030 Send Indication to HAL
12031 -------------------------------------------------------------------------*/
12032 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12033 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12034
12035 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12036
12037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12038 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12039
12040 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12041} /* WDI_ProcessDelPeriodicTxPtrnInd */
12042
Jeff Johnson295189b2012-06-20 16:38:30 -070012043/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012045==========================================================================*/
12046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012049
12050 @param pWDICtx: pointer to the WLAN DAL context
12051 pEventData: pointer to the event information structure
12052
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 @see
12054 @return Result of the function call
12055*/
12056WDI_Status
12057WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012058(
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 WDI_ControlBlockType* pWDICtx,
12060 WDI_EventInfoType* pEventData
12061)
12062{
12063 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12064 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 wpt_uint16 usDataOffset = 0;
12067 wpt_uint16 usSendSize = 0;
12068 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12070
12071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 -------------------------------------------------------------------------*/
12074 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12075 ( NULL == pEventData->pCBfnc ))
12076 {
12077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 }
12082
12083 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12084 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12085 /*-----------------------------------------------------------------------
12086 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 sizeof(halSwitchChannelReq.switchChannelParams),
12091 &pSendBuffer, &usDataOffset, &usSendSize))||
12092 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12093 {
12094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012095 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103#ifndef WLAN_FEATURE_VOWIFI
12104 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12106#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12109
12110#ifdef WLAN_FEATURE_VOWIFI
12111 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12114 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12115 WDI_MAC_ADDR_LEN);
12116 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12117 pwdiSwitchChParams->wdiChInfo.macBSSId,
12118 WDI_MAC_ADDR_LEN);
12119#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 wpalMemoryCopy( pSendBuffer+usDataOffset,
12121 &halSwitchChannelReq.switchChannelParams,
12122 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012123
12124 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126
12127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12131 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012132}/*WDI_ProcessChannelSwitchReq*/
12133
12134/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012135 @brief Process Channel Switch Request function (called when
12136 Main FSM allows it)
12137
12138 @param pWDICtx: pointer to the WLAN DAL context
12139 pEventData: pointer to the event information structure
12140
12141 @see
12142 @return Result of the function call
12143*/
12144WDI_Status WDI_ProcessChannelSwitchReq_V1
12145(
12146 WDI_ControlBlockType* pWDICtx,
12147 WDI_EventInfoType* pEventData
12148)
12149{
12150 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12151 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12152 wpt_uint8* pSendBuffer = NULL;
12153 wpt_uint16 usDataOffset = 0;
12154 wpt_uint16 usSendSize = 0;
12155 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12157
12158 /*-------------------------------------------------------------------------
12159 Sanity check
12160 -------------------------------------------------------------------------*/
12161 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12162 ( NULL == pEventData->pCBfnc ))
12163 {
12164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12165 "%s: Invalid parameters", __func__);
12166 WDI_ASSERT(0);
12167 return WDI_STATUS_E_FAILURE;
12168 }
12169
12170 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12171 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12172 /*-----------------------------------------------------------------------
12173 Get message buffer
12174 ! TO DO : proper conversion into the HAL Message Request Format
12175 -----------------------------------------------------------------------*/
12176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12177 WDI_CH_SWITCH_REQ_V1,
12178 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12179 &pSendBuffer, &usDataOffset, &usSendSize))||
12180 ( usSendSize < (usDataOffset +
12181 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12182 {
12183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12184 "Unable to get send buffer in channel switch req %p %p %p",
12185 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12186 WDI_ASSERT(0);
12187 return WDI_STATUS_E_FAILURE;
12188 }
12189
12190 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12191 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12192
12193 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12194 pwdiSwitchChParams->wdiChInfo.ucChannel;
12195#ifndef WLAN_FEATURE_VOWIFI
12196 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12197 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12198#endif
12199 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12200 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12201
12202#ifdef WLAN_FEATURE_VOWIFI
12203 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12204 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12205 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12206 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12207 WDI_MAC_ADDR_LEN);
12208 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12209 pwdiSwitchChParams->wdiChInfo.macBSSId,
12210 WDI_MAC_ADDR_LEN);
12211#endif
12212 wpalMemoryCopy( pSendBuffer+usDataOffset,
12213 &halSwitchChannelReq.switchChannelParams_V1,
12214 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12215
12216 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12217 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12218
12219 /*-------------------------------------------------------------------------
12220 Send Switch Channel Request to HAL
12221 -------------------------------------------------------------------------*/
12222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12223 wdiSwitchChRspCb, pEventData->pUserData,
12224 WDI_CH_SWITCH_RESP_V1);
12225}/*WDI_ProcessChannelSwitchReq_V1*/
12226
12227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012230
12231 @param pWDICtx: pointer to the WLAN DAL context
12232 pEventData: pointer to the event information structure
12233
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 @see
12235 @return Result of the function call
12236*/
12237WDI_Status
12238WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012239(
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 WDI_ControlBlockType* pWDICtx,
12241 WDI_EventInfoType* pEventData
12242)
12243{
12244 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12245 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 wpt_uint16 usDataOffset = 0;
12250 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 tConfigStaReqMsg halConfigStaReqMsg;
12254 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12256
12257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 -------------------------------------------------------------------------*/
12260 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12261 ( NULL == pEventData->pCBfnc ))
12262 {
12263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 }
12268
Abhishek Singh6927fa02014-06-27 17:19:55 +053012269 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12271 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12272 /*-------------------------------------------------------------------------
12273 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 -------------------------------------------------------------------------*/
12276 wpalMutexAcquire(&pWDICtx->wptMutex);
12277
12278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12282 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012284
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12288 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12289 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012290
12291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 }
12294
12295 /*------------------------------------------------------------------------
12296 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 ------------------------------------------------------------------------*/
12299 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12300 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12302 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12303 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012304
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 }
12309
12310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012311
12312 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12313#ifdef WLAN_FEATURE_11AC
12314 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012315 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 else
12317#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012318 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012319
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 /*-----------------------------------------------------------------------
12321 Get message buffer
12322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12324 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012329 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
12335 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 &pwdiConfigSTAParams->wdiReqInfo);
12338
12339 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12340 {
12341 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 WDI_STATableFindStaidByAddr(pWDICtx,
12344 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 {
12347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012348 MAC_ADDRESS_STR
12349 ": This station does not exist in the WDI Station Table",
12350 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012352 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 }
12355 }
12356 else
12357 {
12358 /* Need to fill in the STA Index to invalid, since at this point we have not
12359 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012360 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 }
12362
12363 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012365
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 wpalMemoryCopy( pSendBuffer+usDataOffset,
12367 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012368 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012369
12370 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12374 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 sizeof(pWDICtx->wdiCachedConfigStaReq));
12376
12377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12381 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012382}/*WDI_ProcessConfigStaReq*/
12383
12384
12385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012388
12389 @param pWDICtx: pointer to the WLAN DAL context
12390 pEventData: pointer to the event information structure
12391
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 @see
12393 @return Result of the function call
12394*/
12395WDI_Status
12396WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012397(
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 WDI_ControlBlockType* pWDICtx,
12399 WDI_EventInfoType* pEventData
12400)
12401{
12402 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12403 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 wpt_uint16 usDataOffset = 0;
12408 wpt_uint16 usSendSize = 0;
12409 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12412
12413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -------------------------------------------------------------------------*/
12416 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12417 ( NULL == pEventData->pCBfnc ))
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 }
12424
12425 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12426 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12427 /*-------------------------------------------------------------------------
12428 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 -------------------------------------------------------------------------*/
12431 wpalMutexAcquire(&pWDICtx->wptMutex);
12432
12433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12437 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12438 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12444 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 }
12446 else
12447 {
12448 /*------------------------------------------------------------------------
12449 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 ------------------------------------------------------------------------*/
12452 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12455 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12456 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12457
12458 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 }
12462 }
12463 /* If the link is set to enter IDLE - the Session allocated for this BSS
12464 will be deleted on the Set Link State response coming from HAL
12465 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12468
12469 wpalMutexRelease(&pWDICtx->wptMutex);
12470 /*-----------------------------------------------------------------------
12471 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012474
12475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 sizeof(halLinkStateReqMsg),
12477 &pSendBuffer, &usDataOffset, &usSendSize))||
12478 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12479 {
12480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012481 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 }
12486
12487 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12488 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12489
12490 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12491 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12495
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 wpalMemoryCopy( pSendBuffer+usDataOffset,
12497 &halLinkStateReqMsg,
12498 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502
12503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12507 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012508}/*WDI_ProcessSetLinkStateReq*/
12509
12510
12511/**
12512 @brief Process Get Stats Request function (called when Main FSM
12513 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012514
12515 @param pWDICtx: pointer to the WLAN DAL context
12516 pEventData: pointer to the event information structure
12517
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 @see
12519 @return Result of the function call
12520*/
12521WDI_Status
12522WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012523(
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 WDI_ControlBlockType* pWDICtx,
12525 WDI_EventInfoType* pEventData
12526)
12527{
12528 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12529 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 wpt_uint16 usDataOffset = 0;
12532 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 WDI_BSSSessionType* pBSSSes = NULL;
12535 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 tHalStatsReqMsg halStatsReqMsg;
12538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12539
12540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 -------------------------------------------------------------------------*/
12543 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12544 ( NULL == pEventData->pCBfnc ) )
12545 {
12546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
12551
12552 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12553 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12554
12555 /*-------------------------------------------------------------------------
12556 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 -------------------------------------------------------------------------*/
12559 wpalMutexAcquire(&pWDICtx->wptMutex);
12560
12561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12565 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 &macBSSID))
12567 {
12568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012569 "This station does not exist in the WDI Station Table %d",
12570 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 }
12574
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12576 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12579 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12580 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012581
12582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 }
12585
12586 /*------------------------------------------------------------------------
12587 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 ------------------------------------------------------------------------*/
12590 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12593 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12594 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012595
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 }
12600
12601
12602 wpalMutexRelease(&pWDICtx->wptMutex);
12603
12604 /*-----------------------------------------------------------------------
12605 Get message buffer
12606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 sizeof(halStatsReqMsg.statsReqParams),
12609 &pSendBuffer, &usDataOffset, &usSendSize))||
12610 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12611 {
12612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012613 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 }
12618
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 wpalMemoryCopy( pSendBuffer+usDataOffset,
12624 &halStatsReqMsg.statsReqParams,
12625 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629
12630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12634 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012635}/*WDI_ProcessGetStatsReq*/
12636
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012637#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012638/**
12639 @brief Process Get Roam Rssi Request function (called when Main FSM
12640 allows it)
12641
12642 @param pWDICtx: pointer to the WLAN DAL context
12643 pEventData: pointer to the event information structure
12644
12645 @see
12646 @return Result of the function call
12647*/
12648WDI_Status
12649WDI_ProcessGetRoamRssiReq
12650(
12651 WDI_ControlBlockType* pWDICtx,
12652 WDI_EventInfoType* pEventData
12653)
12654{
12655 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12656 WDI_GetStatsRspCb wdiGetStatsRspCb;
12657 wpt_uint8* pSendBuffer = NULL;
12658 wpt_uint16 usDataOffset = 0;
12659 wpt_uint16 usSendSize = 0;
12660 wpt_uint8 ucCurrentBSSSesIdx = 0;
12661 WDI_BSSSessionType* pBSSSes = NULL;
12662 wpt_macAddr macBSSID;
12663 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12664 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12666 /*-------------------------------------------------------------------------
12667 Sanity check
12668 -------------------------------------------------------------------------*/
12669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12670 ( NULL == pEventData->pCBfnc ) )
12671 {
12672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12673 "%s: Invalid parameters", __func__);
12674 WDI_ASSERT(0);
12675 return WDI_STATUS_E_FAILURE;
12676 }
12677
12678 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12679 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12680
12681 /*-------------------------------------------------------------------------
12682 Check to see if we are in the middle of an association, if so queue, if
12683 not it means it is free to process request
12684 -------------------------------------------------------------------------*/
12685 wpalMutexAcquire(&pWDICtx->wptMutex);
12686
12687 /*------------------------------------------------------------------------
12688 Find the BSS for which the request is made
12689 ------------------------------------------------------------------------*/
12690 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12691 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12692 &macBSSID))
12693 {
12694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012695 "This station does not exist in the WDI Station Table %d",
12696 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012697 wpalMutexRelease(&pWDICtx->wptMutex);
12698 return WDI_STATUS_E_FAILURE;
12699 }
12700
12701 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12702 if ( NULL == pBSSSes )
12703 {
12704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12705 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12706 __func__, MAC_ADDR_ARRAY(macBSSID));
12707
12708 wpalMutexRelease(&pWDICtx->wptMutex);
12709 return WDI_STATUS_E_NOT_ALLOWED;
12710 }
12711
12712 /*------------------------------------------------------------------------
12713 Check if this BSS is being currently processed or queued,
12714 if queued - queue the new request as well
12715 ------------------------------------------------------------------------*/
12716 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12717 {
12718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12719 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12720 __func__, MAC_ADDR_ARRAY(macBSSID));
12721
12722 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12723 wpalMutexRelease(&pWDICtx->wptMutex);
12724 return wdiStatus;
12725 }
12726
12727 wpalMutexRelease(&pWDICtx->wptMutex);
12728
12729 /*-----------------------------------------------------------------------
12730 Get message buffer
12731 -----------------------------------------------------------------------*/
12732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12733 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12734 &pSendBuffer, &usDataOffset, &usSendSize))||
12735 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12736 {
12737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012738 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012739 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12740 WDI_ASSERT(0);
12741 return WDI_STATUS_E_FAILURE;
12742 }
12743
12744 halRssiRoamReqMsg.roamRssiReqParams.staId =
12745 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12746 wpalMemoryCopy( pSendBuffer+usDataOffset,
12747 &halRssiRoamReqMsg.roamRssiReqParams,
12748 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12749
12750 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12751 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12752
12753 /*-------------------------------------------------------------------------
12754 Send Get STA Request to HAL
12755 -------------------------------------------------------------------------*/
12756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12757 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12758}/*WDI_ProcessGetRoamRssiReq*/
12759#endif
12760
Jeff Johnson295189b2012-06-20 16:38:30 -070012761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012764
12765 @param pWDICtx: pointer to the WLAN DAL context
12766 pEventData: pointer to the event information structure
12767
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 @see
12769 @return Result of the function call
12770*/
12771WDI_Status
12772WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012773(
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 WDI_ControlBlockType* pWDICtx,
12775 WDI_EventInfoType* pEventData
12776)
12777{
12778 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12779 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12780
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 wpt_uint16 usDataOffset = 0;
12783 wpt_uint16 usSendSize = 0;
12784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12785
12786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 -------------------------------------------------------------------------*/
12789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12790 ( NULL == pEventData->pCBfnc))
12791 {
12792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 }
12797
12798 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12799 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12800
12801 /*-----------------------------------------------------------------------
12802 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 -----------------------------------------------------------------------*/
12805
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12808 &pSendBuffer, &usDataOffset, &usSendSize))||
12809 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12810 {
12811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012812 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 }
12817
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 wpalMemoryCopy( pSendBuffer+usDataOffset,
12819 &pwdiUpdateCfgParams->uConfigBufferLen,
12820 sizeof(wpt_uint32));
12821 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12822 pwdiUpdateCfgParams->pConfigBuffer,
12823 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
12825 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012827
12828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 -------------------------------------------------------------------------*/
12831
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12833 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012834
12835}/*WDI_ProcessUpdateCfgReq*/
12836
12837
12838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012841
12842 @param pWDICtx: pointer to the WLAN DAL context
12843 pEventData: pointer to the event information structure
12844
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 @see
12846 @return Result of the function call
12847*/
12848WDI_Status
12849WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012850(
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 WDI_ControlBlockType* pWDICtx,
12852 WDI_EventInfoType* pEventData
12853)
12854{
12855 WDI_AddBAReqParamsType* pwdiAddBAParams;
12856 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 wpt_uint16 usDataOffset = 0;
12861 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 wpt_macAddr macBSSID;
12864
12865 tAddBAReqMsg halAddBAReq;
12866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12867
12868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 -------------------------------------------------------------------------*/
12871 if (( NULL == pEventData ) ||
12872 ( NULL == pEventData->pEventData) ||
12873 ( NULL == pEventData->pCBfnc ))
12874 {
12875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 }
12880
12881 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12882 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12883
12884 /*-------------------------------------------------------------------------
12885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 -------------------------------------------------------------------------*/
12888 wpalMutexAcquire(&pWDICtx->wptMutex);
12889
12890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12894 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 &macBSSID))
12896 {
12897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012898 "This station does not exist in the WDI Station Table %d",
12899 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12905 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12908 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12909 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 }
12914
12915 /*------------------------------------------------------------------------
12916 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 ------------------------------------------------------------------------*/
12919 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12920 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12922 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12923 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012924
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 }
12929
12930
12931 wpalMutexRelease(&pWDICtx->wptMutex);
12932 /*-----------------------------------------------------------------------
12933 Get message buffer
12934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 sizeof(halAddBAReq.addBAParams),
12937 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12940 {
12941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012942 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 }
12947
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12950 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12951#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012953 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12954#endif
12955
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 wpalMemoryCopy( pSendBuffer+usDataOffset,
12957 &halAddBAReq.addBAParams,
12958 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012959
12960 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012962
12963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12967 wdiAddBARspCb, pEventData->pUserData,
12968 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012969}/*WDI_ProcessAddBAReq*/
12970
12971
12972
12973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012976
12977 @param pWDICtx: pointer to the WLAN DAL context
12978 pEventData: pointer to the event information structure
12979
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 @see
12981 @return Result of the function call
12982*/
12983WDI_Status
12984WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012985(
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 WDI_ControlBlockType* pWDICtx,
12987 WDI_EventInfoType* pEventData
12988)
12989{
12990 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12991 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 wpt_uint16 usDataOffset = 0;
12996 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 wpt_uint16 index;
12999 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013000
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 tTriggerBAReqMsg halTriggerBAReq;
13002 tTriggerBaReqCandidate* halTriggerBACandidate;
13003 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13005
13006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 -------------------------------------------------------------------------*/
13009 if (( NULL == pEventData ) ||
13010 ( NULL == pEventData->pEventData ) ||
13011 ( NULL == pEventData->pCBfnc ))
13012 {
13013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 }
13018
13019 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13020 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13021 /*-------------------------------------------------------------------------
13022 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 -------------------------------------------------------------------------*/
13025 wpalMutexAcquire(&pWDICtx->wptMutex);
13026
13027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13031 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 &macBSSID))
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013035 "This station does not exist in the WDI Station Table %d",
13036 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 }
13040
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13042 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13045 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13046 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013047
13048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 }
13051
13052 /*------------------------------------------------------------------------
13053 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 ------------------------------------------------------------------------*/
13056 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13057 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13059 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13060 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013061
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 }
13066
13067
13068 wpalMutexRelease(&pWDICtx->wptMutex);
13069 /*-----------------------------------------------------------------------
13070 Get message buffer
13071 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13073 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13077 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013080 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13082 {
13083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013084 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 }
13089
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13094
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 wpalMemoryCopy( pSendBuffer+usDataOffset,
13096 &halTriggerBAReq.triggerBAParams,
13097 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013098
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13101 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13102 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013103
13104 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 index++)
13106 {
13107 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13108 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13109 halTriggerBACandidate++;
13110 wdiTriggerBACandidate++;
13111 }
13112
13113 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013115
13116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13120 wdiTriggerBARspCb, pEventData->pUserData,
13121 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013122}/*WDI_ProcessTriggerBAReq*/
13123
13124
13125
13126/**
13127 @brief Process Update Beacon Params Request function (called when Main FSM
13128 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013129
13130 @param pWDICtx: pointer to the WLAN DAL context
13131 pEventData: pointer to the event information structure
13132
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 @see
13134 @return Result of the function call
13135*/
13136WDI_Status
13137WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013138(
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 WDI_ControlBlockType* pWDICtx,
13140 WDI_EventInfoType* pEventData
13141)
13142{
13143 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13144 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 wpt_uint16 usDataOffset = 0;
13147 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13150
13151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 -------------------------------------------------------------------------*/
13154 if (( NULL == pEventData ) ||
13155 ( NULL == pEventData->pEventData) ||
13156 ( NULL == pEventData->pCBfnc))
13157 {
13158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 }
13163
13164 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13165 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13166 /*-----------------------------------------------------------------------
13167 Get message buffer
13168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 sizeof(halUpdateBeaconParams),
13171 &pSendBuffer, &usDataOffset, &usSendSize))||
13172 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13173 {
13174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013175 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 }
13180
13181 /*BSS Index of the BSS*/
13182 halUpdateBeaconParams.bssIdx =
13183 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13184 /*shortPreamble mode. HAL should update all the STA rates when it
13185 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13188 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13191 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13194
13195 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13208 halUpdateBeaconParams.fRIFSMode =
13209 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13212
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13214 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013218
13219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13223 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224}/*WDI_ProcessUpdateBeaconParamsReq*/
13225
13226
13227
13228/**
13229 @brief Process Send Beacon template Request function (called when Main FSM
13230 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013231
13232 @param pWDICtx: pointer to the WLAN DAL context
13233 pEventData: pointer to the event information structure
13234
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 @see
13236 @return Result of the function call
13237*/
13238WDI_Status
13239WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013240(
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 WDI_ControlBlockType* pWDICtx,
13242 WDI_EventInfoType* pEventData
13243)
13244{
13245 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13246 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 wpt_uint16 usDataOffset = 0;
13249 wpt_uint16 usSendSize = 0;
13250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13251
13252 tSendBeaconReqMsg halSendBeaconReq;
13253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 -------------------------------------------------------------------------*/
13256 if (( NULL == pEventData ) ||
13257 ( NULL == pEventData->pEventData ) ||
13258 ( NULL == pEventData->pCBfnc ))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 }
13265
13266 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13267 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13268 /*-----------------------------------------------------------------------
13269 Get message buffer
13270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 sizeof(halSendBeaconReq.sendBeaconParam),
13273 &pSendBuffer, &usDataOffset, &usSendSize))||
13274 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13275 {
13276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013277 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13284 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13285 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13288 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13289 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13290 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013293 /* usP2PIeOffset should be atleast greater than timIeOffset */
13294 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13295 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13296 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13297 {
13298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13299 "Invalid usP2PIeOffset %hu",
13300 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13301 WDI_ASSERT(0);
13302 return WDI_STATUS_E_FAILURE;
13303 }
13304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013307
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 wpalMemoryCopy( pSendBuffer+usDataOffset,
13309 &halSendBeaconReq.sendBeaconParam,
13310 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013311
13312 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314
13315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13319 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013320}/*WDI_ProcessSendBeaconParamsReq*/
13321
13322/**
13323 @brief Process Update Beacon Params Request function (called when Main FSM
13324 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013325
13326 @param pWDICtx: pointer to the WLAN DAL context
13327 pEventData: pointer to the event information structure
13328
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 @see
13330 @return Result of the function call
13331*/
13332WDI_Status
13333WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013334(
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 WDI_ControlBlockType* pWDICtx,
13336 WDI_EventInfoType* pEventData
13337)
13338{
13339 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13340 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 wpt_uint16 usDataOffset = 0;
13343 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13346
13347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 -------------------------------------------------------------------------*/
13350 if (( NULL == pEventData ) ||
13351 ( NULL == pEventData->pEventData) ||
13352 ( NULL == pEventData->pCBfnc))
13353 {
13354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 }
13359
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13364 /*-----------------------------------------------------------------------
13365 Get message buffer
13366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 sizeof(halUpdateProbeRspTmplParams),
13369 &pSendBuffer, &usDataOffset, &usSendSize))||
13370 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13371 {
13372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013373 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 WDI_MAC_ADDR_LEN);
13382
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13385
13386 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13387 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013389
13390
13391 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13392 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13393 WDI_PROBE_REQ_BITMAP_IE_LEN);
13394
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 wpalMemoryCopy( pSendBuffer+usDataOffset,
13396 &halUpdateProbeRspTmplParams,
13397 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013398
13399 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013401
13402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13406 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13407 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13409
13410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013413
13414 @param pWDICtx: pointer to the WLAN DAL context
13415 pEventData: pointer to the event information structure
13416
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 @see
13418 @return Result of the function call
13419*/
13420WDI_Status
13421WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013422(
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 WDI_ControlBlockType* pWDICtx,
13424 WDI_EventInfoType* pEventData
13425)
13426{
13427
13428 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13429 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13430
13431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 -------------------------------------------------------------------------*/
13434 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13439 {
13440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 }
13445
13446 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13449
13450 /*cache the wdi nv request message here if the the first fragment
13451 * To issue the request to HAL for the next fragment */
13452 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13455 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13457
13458 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13459 pWDICtx->pRspCBUserData = pEventData->pUserData;
13460 }
13461
13462 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13463}
13464
13465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013468
13469 @param pWDICtx: pointer to the WLAN DAL context
13470 pEventData: pointer to the event information structure
13471
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 @see
13473 @return Result of the function call
13474*/
13475WDI_Status WDI_ProcessSetMaxTxPowerReq
13476(
13477 WDI_ControlBlockType* pWDICtx,
13478 WDI_EventInfoType* pEventData
13479)
13480{
13481 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13482 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 wpt_uint16 usDataOffset = 0;
13485 wpt_uint16 usSendSize = 0;
13486 tSetMaxTxPwrReq halSetMaxTxPower;
13487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13488
13489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -------------------------------------------------------------------------*/
13492 if (( NULL == pEventData ) ||
13493 ( NULL == pEventData->pEventData ) ||
13494 ( NULL == pEventData->pCBfnc ))
13495 {
13496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13505
13506 /*-----------------------------------------------------------------------
13507 Get message buffer
13508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013509if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13511 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013513)))
13514 {
13515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013516 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 }
13521
13522 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13523 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13524 WDI_MAC_ADDR_LEN);
13525
13526 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13527 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13528 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013531
13532 wpalMemoryCopy( pSendBuffer+usDataOffset,
13533 &halSetMaxTxPower.setMaxTxPwrParams,
13534 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13543 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13544 WDI_SET_MAX_TX_POWER_RESP);
13545
Jeff Johnson295189b2012-06-20 16:38:30 -070013546}
13547
Arif Hussaina5ebce02013-08-09 15:09:58 -070013548/*
13549 @brief Process Set Max Tx Power Per Band Request function (called when Main
13550 FSM allows it)
13551
13552 @param pWDICtx: pointer to the WLAN DAL context
13553 pEventData: pointer to the event information structure
13554
13555 @see
13556 @return Result of the function call
13557*/
13558WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13559(
13560 WDI_ControlBlockType* pWDICtx,
13561 WDI_EventInfoType* pEventData
13562)
13563{
13564 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13565 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13566 wpt_uint8* pSendBuffer = NULL;
13567 wpt_uint16 usDataOffset = 0;
13568 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013569 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013570 WDI_Status rValue = WDI_STATUS_SUCCESS;
13571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13572
13573 /*-------------------------------------------------------------------------
13574 Sanity check
13575 -------------------------------------------------------------------------*/
13576 if (( NULL == pEventData ) ||
13577 ( NULL == pEventData->pEventData ) ||
13578 ( NULL == pEventData->pCBfnc ))
13579 {
13580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13581 "%s: Invalid parameters", __func__);
13582 WDI_ASSERT(0);
13583 return WDI_STATUS_E_FAILURE;
13584 }
13585 pwdiSetMaxTxPowerPerBandParams = \
13586 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13587
13588 wdiSetMaxTxPowerPerBandRspCb = \
13589 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13590
13591 /*-----------------------------------------------------------------------
13592 Get message buffer
13593 -----------------------------------------------------------------------*/
13594
13595 rValue = WDI_GetMessageBuffer(pWDICtx,
13596 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13597 sizeof(tSetMaxTxPwrPerBandParams),
13598 &pSendBuffer, &usDataOffset, &usSendSize);
13599
13600 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13601 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13602 {
13603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13604 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13605 pEventData, pwdiSetMaxTxPowerPerBandParams,
13606 wdiSetMaxTxPowerPerBandRspCb);
13607 WDI_ASSERT(0);
13608 return WDI_STATUS_E_FAILURE;
13609 }
13610
13611
Arif Hussainf8f080c2014-04-03 09:48:36 -070013612 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13613 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013614 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13615
Arif Hussainf8f080c2014-04-03 09:48:36 -070013616 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013617 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13618
13619 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13620 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13621
13622 /*-------------------------------------------------------------------------
13623 Send Set Max Tx Power Per Band Request to HAL
13624 -------------------------------------------------------------------------*/
13625 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13626 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13627 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13628}
13629
schang86c22c42013-03-13 18:41:24 -070013630/**
13631 @brief Process Set Tx Power Request function (called when Main
13632 FSM allows it)
13633
13634 @param pWDICtx: pointer to the WLAN DAL context
13635 pEventData: pointer to the event information structure
13636
13637 @see
13638 @return Result of the function call
13639*/
13640WDI_Status WDI_ProcessSetTxPowerReq
13641(
13642 WDI_ControlBlockType* pWDICtx,
13643 WDI_EventInfoType* pEventData
13644)
13645{
13646 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13647 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13648 wpt_uint8* pSendBuffer = NULL;
13649 wpt_uint16 usDataOffset = 0;
13650 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013651 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13653
13654 /*-------------------------------------------------------------------------
13655 Sanity check
13656 -------------------------------------------------------------------------*/
13657 if (( NULL == pEventData ) ||
13658 ( NULL == pEventData->pEventData ) ||
13659 ( NULL == pEventData->pCBfnc ))
13660 {
13661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13662 "%s: Invalid parameters", __func__);
13663 WDI_ASSERT(0);
13664 return WDI_STATUS_E_FAILURE;
13665 }
13666
13667 pwdiSetTxPowerParams =
13668 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13669 wdiSetTxPowerRspCb =
13670 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13671
13672 /*-----------------------------------------------------------------------
13673 Get message buffer
13674 -----------------------------------------------------------------------*/
13675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13676 sizeof(tSetTxPwrReqParams),
13677 &pSendBuffer, &usDataOffset, &usSendSize))||
13678 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13679 )))
13680 {
13681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013682 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013683 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13684 WDI_ASSERT(0);
13685 return WDI_STATUS_E_FAILURE;
13686 }
13687
Leo Chang9a43db92013-03-25 17:39:58 -070013688 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13689 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13690 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013691
13692 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13693 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13694
13695 /*-------------------------------------------------------------------------
13696 Send Set Tx Power Request to HAL
13697 -------------------------------------------------------------------------*/
13698 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13699 wdiSetTxPowerRspCb, pEventData->pUserData,
13700 WDI_SET_TX_POWER_RESP);
13701}
Jeff Johnson295189b2012-06-20 16:38:30 -070013702
13703/**
13704 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13705 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013706
13707 @param pWDICtx: pointer to the WLAN DAL context
13708 pEventData: pointer to the event information structure
13709
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 @see
13711 @return Result of the function call
13712*/
13713WDI_Status
13714WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013715(
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 WDI_ControlBlockType* pWDICtx,
13717 WDI_EventInfoType* pEventData
13718)
13719{
13720 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13721 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 wpt_uint16 usDataOffset = 0;
13724 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13727
13728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 -------------------------------------------------------------------------*/
13731 if (( NULL == pEventData ) ||
13732 ( NULL == pEventData->pEventData) ||
13733 ( NULL == pEventData->pCBfnc))
13734 {
13735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 }
13740
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13745 /*-----------------------------------------------------------------------
13746 Get message buffer
13747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13749 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 sizeof(halSetP2PGONOAParams),
13751 &pSendBuffer, &usDataOffset, &usSendSize))||
13752 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13753 {
13754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013755 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13757 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 }
13760
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13765 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13774
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 wpalMemoryCopy( pSendBuffer+usDataOffset,
13776 &halSetP2PGONOAParams,
13777 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013781
13782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13786 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13787 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013788}/*WDI_ProcessP2PGONOAReq*/
13789
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013790#ifdef FEATURE_WLAN_TDLS
13791
13792/**
13793 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13794 allows it)
13795
13796 @param pWDICtx: pointer to the WLAN DAL context
13797 pEventData: pointer to the event information structure
13798
13799 @see
13800 @return Result of the function call
13801*/
13802WDI_Status
13803WDI_ProcessTdlsLinkEstablishReq
13804(
13805 WDI_ControlBlockType* pWDICtx,
13806 WDI_EventInfoType* pEventData
13807)
13808{
13809 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13810 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13811 wpt_uint8* pSendBuffer = NULL;
13812 wpt_uint16 usDataOffset = 0;
13813 wpt_uint16 usSendSize = 0;
13814
13815 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13817
13818 /*-------------------------------------------------------------------------
13819 Sanity check
13820 -------------------------------------------------------------------------*/
13821 if (( NULL == pEventData ) ||
13822 ( NULL == pEventData->pEventData) ||
13823 ( NULL == pEventData->pCBfnc))
13824 {
13825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13826 "%s: Invalid parameters", __func__);
13827 WDI_ASSERT(0);
13828 return WDI_STATUS_E_FAILURE;
13829 }
13830 pwdiTDLSLinkEstablishReqParams =
13831 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13832 wdiTDLSLinkEstablishReqRspCb =
13833 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13834
13835
13836 /*-----------------------------------------------------------------------
13837 Get message buffer
13838 -----------------------------------------------------------------------*/
13839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13840 WDI_TDLS_LINK_ESTABLISH_REQ,
13841 sizeof(halSetTDLSLinkEstablishParams),
13842 &pSendBuffer, &usDataOffset, &usSendSize))||
13843 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13844 {
13845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013846 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013847 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13848 WDI_ASSERT(0);
13849 return WDI_STATUS_E_FAILURE;
13850 }
13851
13852 halSetTDLSLinkEstablishParams.staIdx =
13853 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13854 halSetTDLSLinkEstablishParams.bIsResponder =
13855 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13856 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13857 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13858 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13859 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13860 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13861 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13862 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13863 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13864 halSetTDLSLinkEstablishParams.aAck = 0;
13865 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13866 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13867 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013868 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13869 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13870
13871 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13872 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13873 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13874 halSetTDLSLinkEstablishParams.validChannelsLen =
13875 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13876
13877 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13878 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13879 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13880 halSetTDLSLinkEstablishParams.validOperClassesLen =
13881 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013882
13883 wpalMemoryCopy( pSendBuffer+usDataOffset,
13884 &halSetTDLSLinkEstablishParams,
13885 sizeof(halSetTDLSLinkEstablishParams));
13886
13887 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13888 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13889
13890 /*-------------------------------------------------------------------------
13891 Send Update Probe Resp Template Request to HAL
13892 -------------------------------------------------------------------------*/
13893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13894 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13895 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13896 return 0;
13897}/*WDI_ProcessTdlsLinkEstablishReq*/
13898
13899
Atul Mittalc0f739f2014-07-31 13:47:47 +053013900/**
13901 @brief sends the channel switch command to f/w (called when Main FSM
13902 allows it)
13903
13904 @param pWDICtx: pointer to the WLAN DAL context
13905 pEventData: pointer to the event information structure
13906
13907 @see
13908 @return Result of the function call
13909*/
13910WDI_Status
13911WDI_ProcessTdlsChanSwitchReq
13912(
13913 WDI_ControlBlockType* pWDICtx,
13914 WDI_EventInfoType* pEventData
13915)
13916{
13917 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13918 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13919 wpt_uint8* pSendBuffer = NULL;
13920 wpt_uint16 usDataOffset = 0;
13921 wpt_uint16 usSendSize = 0;
13922 //WDI_Status wdiStatus;
13923 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13925
13926 /*-------------------------------------------------------------------------
13927 Sanity check
13928 -------------------------------------------------------------------------*/
13929 if (( NULL == pEventData ) ||
13930 ( NULL == pEventData->pEventData))
13931 {
13932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13933 "%s: Invalid parameters", __func__);
13934 WDI_ASSERT(0);
13935 return WDI_STATUS_E_FAILURE;
13936 }
13937 pwdiTDLSChanSwitchReqParams =
13938 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13939 wdiTDLSChanSwitchReqRspCb =
13940 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13941
13942 /*-----------------------------------------------------------------------
13943 Get message buffer
13944 -----------------------------------------------------------------------*/
13945 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13946 WDI_TDLS_CHAN_SWITCH_REQ,
13947 sizeof(halSetTDLSChanSwitchParams),
13948 &pSendBuffer, &usDataOffset, &usSendSize))||
13949 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13950 {
13951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13952 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13953 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13954 WDI_ASSERT(0);
13955 return WDI_STATUS_E_FAILURE;
13956 }
13957
13958 halSetTDLSChanSwitchParams.staIdx =
13959 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13960 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13961 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13962 halSetTDLSChanSwitchParams.targetOperClass =
13963 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13964 halSetTDLSChanSwitchParams.targetChannel =
13965 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13966 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13967 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13968 wpalMemoryCopy( pSendBuffer+usDataOffset,
13969 &halSetTDLSChanSwitchParams,
13970 sizeof(halSetTDLSChanSwitchParams));
13971
13972 pWDICtx->wdiReqStatusCB = NULL;
13973 pWDICtx->pReqStatusUserData = NULL;
13974
13975 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13976 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13977 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13978}/*WDI_ProcessTdlsChanSwitchReq*/
13979
13980#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013981
Jeff Johnson295189b2012-06-20 16:38:30 -070013982
13983
13984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 @param None
13988
13989 @see
13990 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013991*/
13992void
13993WDI_SetPowerStateCb
13994(
13995 wpt_status status,
13996 unsigned int dxePhyAddr,
13997 void *pContext
13998)
13999{
14000 wpt_status wptStatus;
14001 WDI_ControlBlockType *pCB = NULL;
14002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 /*
14004 * Trigger the event to bring the Enter BMPS req function to come
14005 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014006*/
14007 if( NULL != pContext )
14008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 }
14011 else
14012 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 pCB = &gWDICb;
14015 }
Mihir Shetea4306052014-03-25 00:02:54 +053014016
14017 if(eWLAN_PAL_STATUS_SUCCESS == status )
14018 {
14019 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14020 }
14021 else
14022 {
14023 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 pCB->dxePhyAddr = dxePhyAddr;
14026 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14027 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14028 {
14029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14030 "Failed to set an event");
14031
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 }
14034 return;
14035}
14036
14037
14038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014041
14042 @param pWDICtx: pointer to the WLAN DAL context
14043 pEventData: pointer to the event information structure
14044
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 @see
14046 @return Result of the function call
14047*/
14048WDI_Status
14049WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014050(
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 WDI_ControlBlockType* pWDICtx,
14052 WDI_EventInfoType* pEventData
14053)
14054{
Jeff Johnson43971f52012-07-17 12:26:56 -070014055 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 wpt_uint16 usDataOffset = 0;
14059 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014060 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14062
14063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014066 if ((NULL == pEventData ) ||
14067 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14068 (NULL == (pwdiEnterImpsReqParams =
14069 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 {
14071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014074 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 }
14076
14077 /*-----------------------------------------------------------------------
14078 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 0,
14083 &pSendBuffer, &usDataOffset, &usSendSize))||
14084 ( usSendSize < (usDataOffset )))
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014087 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 pEventData, wdiEnterImpsRspCb);
14089 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014090 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 }
14092
14093 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014094 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14095 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 {
14097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14098 "WDI Init failed to reset an event");
14099
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014101 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103
14104 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014105 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14106 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014108 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014110 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014111 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014112
14113 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014116 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14117 WDI_SET_POWER_STATE_TIMEOUT);
14118 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 {
14120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14121 "WDI Init failed to wait on an event");
14122
Karthick S1fa70262015-08-20 13:28:14 +053014123 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014125 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 }
14127
Mihir Shetea4306052014-03-25 00:02:54 +053014128 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14129 {
14130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14131 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14132
14133 goto fail;
14134 }
14135
14136 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14137 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14142 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014143
14144fail:
14145 // Release the message buffer so we don't leak
14146 wpalMemoryFree(pSendBuffer);
14147
14148failRequest:
14149 //WDA should have failure check to avoid the memory leak
14150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014151}/*WDI_ProcessEnterImpsReq*/
14152
14153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014156
14157 @param pWDICtx: pointer to the WLAN DAL context
14158 pEventData: pointer to the event information structure
14159
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 @see
14161 @return Result of the function call
14162*/
14163WDI_Status
14164WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014165(
Jeff Johnson295189b2012-06-20 16:38:30 -070014166 WDI_ControlBlockType* pWDICtx,
14167 WDI_EventInfoType* pEventData
14168)
14169{
14170 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 wpt_uint16 usDataOffset = 0;
14173 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014174 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14176
14177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 -------------------------------------------------------------------------*/
14180 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014181 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14182 (NULL == (pwdiExitImpsReqParams =
14183 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 {
14185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 }
14190
14191 /*-----------------------------------------------------------------------
14192 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 0,
14197 &pSendBuffer, &usDataOffset, &usSendSize))||
14198 ( usSendSize < (usDataOffset )))
14199 {
14200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014201 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 pEventData, wdiExitImpsRspCb);
14203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014206 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14207 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14212 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014213}/*WDI_ProcessExitImpsReq*/
14214
14215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014218
14219 @param pWDICtx: pointer to the WLAN DAL context
14220 pEventData: pointer to the event information structure
14221
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 @see
14223 @return Result of the function call
14224*/
14225WDI_Status
14226WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014227(
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 WDI_ControlBlockType* pWDICtx,
14229 WDI_EventInfoType* pEventData
14230)
14231{
14232 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14233 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 wpt_uint16 usDataOffset = 0;
14236 wpt_uint16 usSendSize = 0;
14237 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014238 wpt_status wptStatus;
14239
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14241
14242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 -------------------------------------------------------------------------*/
14245 if (( NULL == pEventData ) ||
14246 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14247 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014252 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 }
14254
14255 /*-----------------------------------------------------------------------
14256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 sizeof(enterBmpsReq),
14261 &pSendBuffer, &usDataOffset, &usSendSize))||
14262 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14263 {
14264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014265 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14267 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014268 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 }
14270
14271 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014272 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14273 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 {
14275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14276 "WDI Init failed to reset an event");
14277
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014279 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 }
14281
14282 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014283 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14284 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14285 {
14286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014287 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014289 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014291
14292/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014295 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14296 WDI_SET_POWER_STATE_TIMEOUT);
14297 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 {
14299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14300 "WDI Init failed to wait on an event");
14301
Karthick S1fa70262015-08-20 13:28:14 +053014302 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014304 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 }
14306
14307 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14308
14309 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14310 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14311 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14312 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14313
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014314 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14316 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14317 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14318
14319 wpalMemoryCopy( pSendBuffer+usDataOffset,
14320 &enterBmpsReq,
14321 sizeof(enterBmpsReq));
14322
14323 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325
14326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14330 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014331
14332fail:
14333 // Release the message buffer so we don't leak
14334 wpalMemoryFree(pSendBuffer);
14335
14336failRequest:
14337 //WDA should have failure check to avoid the memory leak
14338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014339}/*WDI_ProcessEnterBmpsReq*/
14340
14341/**
14342 @brief Process Exit BMPS Request function (called when Main FSM
14343 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014344
14345 @param pWDICtx: pointer to the WLAN DAL context
14346 pEventData: pointer to the event information structure
14347
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 @see
14349 @return Result of the function call
14350*/
14351WDI_Status
14352WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014353(
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 WDI_ControlBlockType* pWDICtx,
14355 WDI_EventInfoType* pEventData
14356)
14357{
14358 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14359 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 wpt_uint16 usDataOffset = 0;
14362 wpt_uint16 usSendSize = 0;
14363 tHalExitBmpsReqParams exitBmpsReq;
14364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14365
14366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 -------------------------------------------------------------------------*/
14369 if (( NULL == pEventData ) ||
14370 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14371 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14372 {
14373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 }
14378
14379 /*-----------------------------------------------------------------------
14380 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 sizeof(exitBmpsReq),
14385 &pSendBuffer, &usDataOffset, &usSendSize))||
14386 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14387 {
14388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014389 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 }
14394 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14395
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14397
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 wpalMemoryCopy( pSendBuffer+usDataOffset,
14399 &exitBmpsReq,
14400 sizeof(exitBmpsReq));
14401
14402 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014404
14405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14409 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410}/*WDI_ProcessExitBmpsReq*/
14411
14412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014415
14416 @param pWDICtx: pointer to the WLAN DAL context
14417 pEventData: pointer to the event information structure
14418
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 @see
14420 @return Result of the function call
14421*/
14422WDI_Status
14423WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014424(
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 WDI_ControlBlockType* pWDICtx,
14426 WDI_EventInfoType* pEventData
14427)
14428{
14429 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14430 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 wpt_uint16 usDataOffset = 0;
14433 wpt_uint16 usSendSize = 0;
14434 tUapsdReqParams enterUapsdReq;
14435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14436
14437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 -------------------------------------------------------------------------*/
14440 if (( NULL == pEventData ) ||
14441 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14442 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14443 {
14444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 }
14449
14450 /*-----------------------------------------------------------------------
14451 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 sizeof(enterUapsdReq),
14456 &pSendBuffer, &usDataOffset, &usSendSize))||
14457 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14458 {
14459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014460 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 }
14465
14466 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14467 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14468 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14469 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14470 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14471 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14472 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14473 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 wpalMemoryCopy( pSendBuffer+usDataOffset,
14477 &enterUapsdReq,
14478 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482
14483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14487 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014488}/*WDI_ProcessEnterUapsdReq*/
14489
14490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014493
14494 @param pWDICtx: pointer to the WLAN DAL context
14495 pEventData: pointer to the event information structure
14496
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 @see
14498 @return Result of the function call
14499*/
14500WDI_Status
14501WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014502(
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 WDI_ControlBlockType* pWDICtx,
14504 WDI_EventInfoType* pEventData
14505)
14506{
14507 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 wpt_uint16 usDataOffset = 0;
14510 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014511 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14512 wpt_uint8 bssIdx = 0;
14513
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14515
14516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 -------------------------------------------------------------------------*/
14519 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014520 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14522 {
14523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 }
14528
14529 /*-----------------------------------------------------------------------
14530 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014534 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014536 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 {
14538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014539 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 pEventData, wdiExitUapsdRspCb);
14541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 }
14544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014545 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14546
14547 wpalMemoryCopy( pSendBuffer+usDataOffset,
14548 &bssIdx,
14549 sizeof(wpt_uint8));
14550
14551 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14552 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14553
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14558 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014559}/*WDI_ProcessExitUapsdReq*/
14560
14561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014564
14565 @param pWDICtx: pointer to the WLAN DAL context
14566 pEventData: pointer to the event information structure
14567
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 @see
14569 @return Result of the function call
14570*/
14571WDI_Status
14572WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014573(
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 WDI_ControlBlockType* pWDICtx,
14575 WDI_EventInfoType* pEventData
14576)
14577{
14578 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14579 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 wpt_uint16 usDataOffset = 0;
14582 wpt_uint16 usSendSize = 0;
14583 tUapsdInfo uapsdAcParamsReq;
14584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14585
14586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 -------------------------------------------------------------------------*/
14589 if (( NULL == pEventData ) ||
14590 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14591 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14592 {
14593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 }
14598
14599 /*-----------------------------------------------------------------------
14600 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 sizeof(uapsdAcParamsReq),
14605 &pSendBuffer, &usDataOffset, &usSendSize))||
14606 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14607 {
14608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014609 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 }
14614
14615 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14616 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14617 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14618 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14619 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14620 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14621
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 wpalMemoryCopy( pSendBuffer+usDataOffset,
14623 &uapsdAcParamsReq,
14624 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014625
14626 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014628
14629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14633 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014634}/*WDI_ProcessSetUapsdAcParamsReq*/
14635
14636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014639
14640 @param pWDICtx: pointer to the WLAN DAL context
14641 pEventData: pointer to the event information structure
14642
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 @see
14644 @return Result of the function call
14645*/
14646WDI_Status
14647WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014648(
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 WDI_ControlBlockType* pWDICtx,
14650 WDI_EventInfoType* pEventData
14651)
14652{
14653 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14654 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 wpt_uint16 usDataOffset = 0;
14657 wpt_uint16 usSendSize = 0;
14658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14659
14660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 -------------------------------------------------------------------------*/
14663 if (( NULL == pEventData ) ||
14664 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14665 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
14674 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14679 &pSendBuffer, &usDataOffset, &usSendSize))||
14680 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14681 {
14682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014683 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 }
14688
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 wpalMemoryCopy( pSendBuffer+usDataOffset,
14690 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14691 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014692
14693 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014695
14696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14700 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014701}/*WDI_ProcessUpdateUapsdParamsReq*/
14702
14703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014706
14707 @param pWDICtx: pointer to the WLAN DAL context
14708 pEventData: pointer to the event information structure
14709
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 @see
14711 @return Result of the function call
14712*/
14713WDI_Status
14714WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014715(
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 WDI_ControlBlockType* pWDICtx,
14717 WDI_EventInfoType* pEventData
14718)
14719{
14720 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14721 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 wpt_uint16 usDataOffset = 0;
14724 wpt_uint16 usSendSize = 0;
14725 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14726
14727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14728
14729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 -------------------------------------------------------------------------*/
14732 if (( NULL == pEventData ) ||
14733 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14734 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14735 {
14736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 }
14741
14742 /*-----------------------------------------------------------------------
14743 Get message buffer
14744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 sizeof(halRxpFilterParams),
14747 &pSendBuffer, &usDataOffset, &usSendSize))||
14748 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014751 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 }
14756
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14761
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 wpalMemoryCopy( pSendBuffer+usDataOffset,
14763 &halRxpFilterParams,
14764 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014765
14766 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768
14769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14773 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014774}/*WDI_ProcessConfigureRxpFilterReq*/
14775
14776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014779
14780 @param pWDICtx: pointer to the WLAN DAL context
14781 pEventData: pointer to the event information structure
14782
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 @see
14784 @return Result of the function call
14785*/
14786WDI_Status
14787WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014788(
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 WDI_ControlBlockType* pWDICtx,
14790 WDI_EventInfoType* pEventData
14791)
14792{
14793 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14794 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 wpt_uint16 usDataOffset = 0;
14797 wpt_uint16 usSendSize = 0;
14798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) ||
14804 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14805 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 }
14812
14813 /*-----------------------------------------------------------------------
14814 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14819 &pSendBuffer, &usDataOffset, &usSendSize))||
14820 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14821 {
14822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014823 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 }
14828
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 wpalMemoryCopy( pSendBuffer+usDataOffset,
14830 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14831 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14832 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14833 &pwdiBeaconFilterParams->aFilters[0],
14834 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014835
14836 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838
14839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14843 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014844}/*WDI_ProcessSetBeaconFilterReq*/
14845
14846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014849
14850 @param pWDICtx: pointer to the WLAN DAL context
14851 pEventData: pointer to the event information structure
14852
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 @see
14854 @return Result of the function call
14855*/
14856WDI_Status
14857WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014858(
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 WDI_ControlBlockType* pWDICtx,
14860 WDI_EventInfoType* pEventData
14861)
14862{
14863 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14864 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wpt_uint16 usDataOffset = 0;
14867 wpt_uint16 usSendSize = 0;
14868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14869
14870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-----------------------------------------------------------------------
14884 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014893 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 }
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 wpalMemoryCopy( pSendBuffer+usDataOffset,
14900 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14901 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014902
14903 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014905
14906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14910 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014911}
14912
14913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917 @param pWDICtx: pointer to the WLAN DAL context
14918 pEventData: pointer to the event information structure
14919
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 @see
14921 @return Result of the function call
14922*/
14923WDI_Status
14924WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014925(
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 WDI_ControlBlockType* pWDICtx,
14927 WDI_EventInfoType* pEventData
14928)
14929{
14930 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14931 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 wpt_uint16 usDataOffset = 0;
14934 wpt_uint16 usSendSize = 0;
14935 tHalRSSIThresholds rssiThresholdsReq;
14936 WDI_Status ret_status = 0;
14937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14938
14939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 -------------------------------------------------------------------------*/
14942 if (( NULL == pEventData ) ||
14943 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14944 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14945 {
14946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 }
14951
14952 /*-----------------------------------------------------------------------
14953 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 sizeof(rssiThresholdsReq),
14958 &pSendBuffer, &usDataOffset, &usSendSize))||
14959 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14960 {
14961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014962 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 }
14967
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14988
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 wpalMemoryCopy( pSendBuffer+usDataOffset,
14990 &rssiThresholdsReq,
14991 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014995
14996 /*-------------------------------------------------------------------------
14997 Send Set threshold req to HAL
14998 -------------------------------------------------------------------------*/
14999 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15000 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15001 {
15002 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15003 // req. Then as a result of processing the threshold cross ind, we trigger
15004 // a Set threshold req, then we need to indicate to WDI that it needs to
15005 // go to busy state as a result of the indication as we sent a req in the
15006 // same WDI context.
15007 // Hence expected state transition is to busy.
15008 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15009 }
15010
15011 return ret_status;
15012}
15013
15014/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015017
15018 @param pWDICtx: pointer to the WLAN DAL context
15019 pEventData: pointer to the event information structure
15020
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 @see
15022 @return Result of the function call
15023*/
15024WDI_Status
15025WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015026(
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 WDI_ControlBlockType* pWDICtx,
15028 WDI_EventInfoType* pEventData
15029)
15030{
15031 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15032 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 wpt_uint16 usDataOffset = 0;
15035 wpt_uint16 usSendSize = 0;
15036 tHalHostOffloadReq hostOffloadParams;
15037 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015038 wpt_uint8 ucCurrentBSSSesIdx = 0;
15039 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040
15041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15042
15043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 -------------------------------------------------------------------------*/
15046 if (( NULL == pEventData ) ||
15047 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15048 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15049 {
15050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015053 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 }
15055
15056 /*-----------------------------------------------------------------------
15057 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15062 &pSendBuffer, &usDataOffset, &usSendSize))||
15063 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15064 {
15065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015066 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15068 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015069 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 }
15071
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15073 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15074 &pBSSSes);
15075 if ( NULL == pBSSSes )
15076 {
c_hpothu86feba52014-10-28 15:51:18 +053015077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015078 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15079 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015080 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015081 }
15082
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15084 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015085
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15087 {
15088 // ARP Offload
15089 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15090 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15091 4);
15092 }
15093 else
15094 {
15095 // NS Offload
15096 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15097 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15098 16);
15099
15100#ifdef WLAN_NS_OFFLOAD
15101 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15102 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15103 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15104 16);
15105 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15106 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15107 16);
15108 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15109 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15110 16);
15111 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15112 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15113 16);
15114 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15115 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15116 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015117 nsOffloadParams.srcIPv6AddrValid =
15118 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15119
15120 nsOffloadParams.targetIPv6Addr1Valid =
15121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15122
15123 nsOffloadParams.targetIPv6Addr2Valid =
15124 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15125
15126 nsOffloadParams.slotIndex =
15127 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128
Jeff Johnson295189b2012-06-20 16:38:30 -070015129#endif // WLAN_NS_OFFLOAD
15130 }
15131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015132 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 // copy hostOffloadParams into pSendBuffer
15135 wpalMemoryCopy( pSendBuffer+usDataOffset,
15136 &hostOffloadParams,
15137 sizeof(hostOffloadParams));
15138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015139 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015141 // copy nsOffloadParams into pSendBuffer
15142 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 &nsOffloadParams,
15144 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015145 }
15146 else
15147 {
15148#ifdef WLAN_NS_OFFLOAD
15149 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15150 {
15151 // copy nsOffloadParams into pSendBuffer
15152 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15153 &nsOffloadParams,
15154 sizeof(nsOffloadParams));
15155 }
15156#endif
15157 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015158
15159 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015161
15162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15166 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015167
15168fail:
15169 // Release the message buffer so we don't leak
15170 wpalMemoryFree(pSendBuffer);
15171
15172failRequest:
15173 //WDA should have failure check to avoid the memory leak
15174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175}/*WDI_ProcessHostOffloadReq*/
15176
15177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015180
15181 @param pWDICtx: pointer to the WLAN DAL context
15182 pEventData: pointer to the event information structure
15183
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 @see
15185 @return Result of the function call
15186*/
15187WDI_Status
15188WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015189(
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 WDI_ControlBlockType* pWDICtx,
15191 WDI_EventInfoType* pEventData
15192)
15193{
15194 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15195 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 wpt_uint16 usDataOffset = 0;
15198 wpt_uint16 usSendSize = 0;
15199 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015200 wpt_uint8 ucCurrentBSSSesIdx = 0;
15201 WDI_BSSSessionType* pBSSSes = NULL;
15202
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15204
15205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 -------------------------------------------------------------------------*/
15208 if (( NULL == pEventData ) ||
15209 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15210 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15211 {
15212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15213 "Invalid parameters in Keep Alive req");
15214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015215 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 }
15217
15218 /*-----------------------------------------------------------------------
15219 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 sizeof(keepAliveReq),
15224 &pSendBuffer, &usDataOffset, &usSendSize))||
15225 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15226 {
15227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015228 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15230 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015231 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 }
15233
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015234 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15235 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15236 &pBSSSes);
15237 if ( NULL == pBSSSes )
15238 {
15239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015240 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015241 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015242 }
15243
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15245 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15246
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015247 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15250 {
15251 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15252 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15253 HAL_IPV4_ADDR_LEN);
15254 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15255 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 wpalMemoryCopy(keepAliveReq.destMacAddr,
15258 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15259 HAL_MAC_ADDR_LEN);
15260 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015261
15262 wpalMemoryCopy( pSendBuffer+usDataOffset,
15263 &keepAliveReq,
15264 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 %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015268
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015270 "Process keep alive req time period %d",
15271 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015272
15273 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015275
15276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15277 "Sending keep alive req to HAL");
15278
15279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15283 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015284
15285fail:
15286 // Release the message buffer so we don't leak
15287 wpalMemoryFree(pSendBuffer);
15288
15289failRequest:
15290 //WDA should have failure check to avoid the memory leak
15291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015292}/*WDI_ProcessKeepAliveReq*/
15293
15294
15295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015298
15299 @param pWDICtx: pointer to the WLAN DAL context
15300 pEventData: pointer to the event information structure
15301
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 @see
15303 @return Result of the function call
15304*/
15305WDI_Status
15306WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015307(
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 WDI_ControlBlockType* pWDICtx,
15309 WDI_EventInfoType* pEventData
15310)
15311{
15312 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15313 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 wpt_uint16 usDataOffset = 0;
15316 wpt_uint16 usSendSize = 0;
15317 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015318 wpt_uint8 ucCurrentBSSSesIdx = 0;
15319 WDI_BSSSessionType* pBSSSes = NULL;
15320
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15322
15323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 -------------------------------------------------------------------------*/
15326 if (( NULL == pEventData ) ||
15327 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15328 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15329 {
15330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015333 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 }
15335
15336 /*-----------------------------------------------------------------------
15337 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 sizeof(wowlAddBcPtrnReq),
15342 &pSendBuffer, &usDataOffset, &usSendSize))||
15343 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15344 {
15345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015346 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15348 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015349 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 }
15351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015352 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15353 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15354 &pBSSSes);
15355 if ( NULL == pBSSSes )
15356 {
15357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015358 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015359 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015360 }
15361
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15370
15371 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15372 {
15373 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15376 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15377 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15379 }
15380 else
15381 {
15382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15384 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15387 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15388
15389 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15390 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15391 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15392 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15393 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15394 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15395 }
15396
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015397 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15398
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 wpalMemoryCopy( pSendBuffer+usDataOffset,
15400 &wowlAddBcPtrnReq,
15401 sizeof(wowlAddBcPtrnReq));
15402
15403 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405
15406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015407 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15410 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015411fail:
15412 // Release the message buffer so we don't leak
15413 wpalMemoryFree(pSendBuffer);
15414
15415failRequest:
15416 //WDA should have failure check to avoid the memory leak
15417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015418}/*WDI_ProcessWowlAddBcPtrnReq*/
15419
15420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015423
15424 @param pWDICtx: pointer to the WLAN DAL context
15425 pEventData: pointer to the event information structure
15426
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 @see
15428 @return Result of the function call
15429*/
15430WDI_Status
15431WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015432(
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 WDI_ControlBlockType* pWDICtx,
15434 WDI_EventInfoType* pEventData
15435)
15436{
15437 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15438 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 wpt_uint16 usDataOffset = 0;
15441 wpt_uint16 usSendSize = 0;
15442 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015443 wpt_uint8 ucCurrentBSSSesIdx = 0;
15444 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15446
15447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 -------------------------------------------------------------------------*/
15450 if (( NULL == pEventData ) ||
15451 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15452 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15453 {
15454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015457 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 }
15459
15460 /*-----------------------------------------------------------------------
15461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 sizeof(wowlDelBcPtrnReq),
15466 &pSendBuffer, &usDataOffset, &usSendSize))||
15467 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15468 {
15469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015470 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15472 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015473 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 }
15475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015476 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15477 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15478 &pBSSSes);
15479 if ( NULL == pBSSSes )
15480 {
15481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015482 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015483 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015484 }
15485
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015488
15489 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15490
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 wpalMemoryCopy( pSendBuffer+usDataOffset,
15492 &wowlDelBcPtrnReq,
15493 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015494
15495 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497
15498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15502 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015503
15504fail:
15505 // Release the message buffer so we don't leak
15506 wpalMemoryFree(pSendBuffer);
15507
15508failRequest:
15509 //WDA should have failure check to avoid the memory leak
15510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015511}/*WDI_ProcessWowlDelBcPtrnReq*/
15512
15513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015516
15517 @param pWDICtx: pointer to the WLAN DAL context
15518 pEventData: pointer to the event information structure
15519
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 @see
15521 @return Result of the function call
15522*/
15523WDI_Status
15524WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015525(
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 WDI_ControlBlockType* pWDICtx,
15527 WDI_EventInfoType* pEventData
15528)
15529{
15530 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15531 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 wpt_uint16 usDataOffset = 0;
15534 wpt_uint16 usSendSize = 0;
15535 tHalWowlEnterParams wowlEnterReq;
15536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15537
15538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 -------------------------------------------------------------------------*/
15541 if (( NULL == pEventData ) ||
15542 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15543 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15544 {
15545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 }
15550
15551 /*-----------------------------------------------------------------------
15552 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 sizeof(wowlEnterReq),
15557 &pSendBuffer, &usDataOffset, &usSendSize))||
15558 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15559 {
15560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015561 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 }
15566
Kumar Anandaca924e2013-07-22 14:35:34 -070015567 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15568
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15585
15586#ifdef WLAN_WAKEUP_EVENTS
15587 wowlEnterReq.ucWoWEAPIDRequestEnable =
15588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15589
15590 wowlEnterReq.ucWoWEAPOL4WayEnable =
15591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15592
15593 wowlEnterReq.ucWowNetScanOffloadMatch =
15594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15595
15596 wowlEnterReq.ucWowGTKRekeyError =
15597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15598
15599 wowlEnterReq.ucWoWBSSConnLoss =
15600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15601#endif // WLAN_WAKEUP_EVENTS
15602
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015603 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15604
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15606 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15607 sizeof(tSirMacAddr));
15608
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 wpalMemoryCopy( pSendBuffer+usDataOffset,
15610 &wowlEnterReq,
15611 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015612
15613 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015615
15616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15620 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015621}/*WDI_ProcessWowlEnterReq*/
15622
15623/**
15624 @brief Process Wowl exit Request function (called when Main FSM
15625 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015626
15627 @param pWDICtx: pointer to the WLAN DAL context
15628 pEventData: pointer to the event information structure
15629
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 @see
15631 @return Result of the function call
15632*/
15633WDI_Status
15634WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015635(
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 WDI_ControlBlockType* pWDICtx,
15637 WDI_EventInfoType* pEventData
15638)
15639{
15640 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015641 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 wpt_uint16 usDataOffset = 0;
15644 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015645 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15647
15648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 -------------------------------------------------------------------------*/
15651 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015652 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15654 {
15655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 }
15660
15661 /*-----------------------------------------------------------------------
15662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015666 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015668 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 {
15670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015671 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 pEventData, wdiWowlExitCb);
15673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 }
15676
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015677 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15678
15679 wpalMemoryCopy( pSendBuffer+usDataOffset,
15680 &wowlExitparams,
15681 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15686 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687}/*WDI_ProcessWowlExitReq*/
15688
15689/**
15690 @brief Process Configure Apps Cpu Wakeup State Request function
15691 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015692
15693 @param pWDICtx: pointer to the WLAN DAL context
15694 pEventData: pointer to the event information structure
15695
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 @see
15697 @return Result of the function call
15698*/
15699WDI_Status
15700WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015701(
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 WDI_ControlBlockType* pWDICtx,
15703 WDI_EventInfoType* pEventData
15704)
15705{
15706 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15707 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 wpt_uint16 usDataOffset = 0;
15710 wpt_uint16 usSendSize = 0;
15711 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15713
15714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 -------------------------------------------------------------------------*/
15717 if (( NULL == pEventData ) ||
15718 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15719 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15720 {
15721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 }
15726
15727 /*-----------------------------------------------------------------------
15728 Get message buffer
15729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 sizeof(halCfgAppsCpuWakeupStateReqParams),
15732 &pSendBuffer, &usDataOffset, &usSendSize))||
15733 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15734 {
15735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015736 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 }
15741
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15744
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 wpalMemoryCopy( pSendBuffer+usDataOffset,
15746 &halCfgAppsCpuWakeupStateReqParams,
15747 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015748
15749 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015751
15752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15756 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15757 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15759
15760#ifdef WLAN_FEATURE_VOWIFI_11R
15761/**
15762 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15763 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015764
15765 @param pWDICtx: pointer to the WLAN DAL context
15766 pEventData: pointer to the event information structure
15767
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 @see
15769 @return Result of the function call
15770*/
15771WDI_Status
15772WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015773(
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 WDI_ControlBlockType* pWDICtx,
15775 WDI_EventInfoType* pEventData
15776)
15777{
15778 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15779 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 wpt_uint16 usDataOffset = 0;
15784 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 wpt_macAddr macBSSID;
15787 tAggrAddTsReq halAggrAddTsReq;
15788 int i;
15789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15790
15791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 -------------------------------------------------------------------------*/
15794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15795 ( NULL == pEventData->pCBfnc ))
15796 {
15797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 }
15802 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15803 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15804 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15805 /*-------------------------------------------------------------------------
15806 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 -------------------------------------------------------------------------*/
15809 wpalMutexAcquire(&pWDICtx->wptMutex);
15810
15811 /*------------------------------------------------------------------------
15812 Find the BSS for which the request is made and identify WDI session
15813 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15815 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 &macBSSID))
15817 {
15818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015819 "This station does not exist in the WDI Station Table %d",
15820 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 }
15824
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15826 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15829 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15830 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015831
15832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015835
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 /*------------------------------------------------------------------------
15837 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 ------------------------------------------------------------------------*/
15840 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15841 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15843 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15844 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015845
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 }
15850
15851 wpalMutexRelease(&pWDICtx->wptMutex);
15852 /*-----------------------------------------------------------------------
15853 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 sizeof(tAggrAddTsParams),
15858 &pSendBuffer, &usDataOffset, &usSendSize))||
15859 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15860 {
15861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015862 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 }
15867
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15872
15873 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15881 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15884 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15887 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15890 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15893 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15896 direction;
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.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15902 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908
15909 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15939 }
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 wpalMemoryCopy( pSendBuffer+usDataOffset,
15942 &halAggrAddTsReq,
15943 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015944
15945 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947
15948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954}/*WDI_ProcessAggrAddTSpecReq*/
15955#endif /* WLAN_FEATURE_VOWIFI_11R */
15956
15957/**
15958 @brief Process Shutdown Request function (called when Main FSM
15959 allows it)
15960
15961 @param pWDICtx: pointer to the WLAN DAL context
15962 pEventData: pointer to the event information structure
15963
15964 @see
15965 @return Result of the function call
15966*/
15967WDI_Status
15968WDI_ProcessShutdownReq
15969(
15970 WDI_ControlBlockType* pWDICtx,
15971 WDI_EventInfoType* pEventData
15972 )
15973{
15974 wpt_status wptStatus;
15975
15976
15977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15978
15979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 -------------------------------------------------------------------------*/
15982 if ( NULL == pEventData )
15983 {
15984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 WDI_ASSERT(0);
15987 return WDI_STATUS_E_FAILURE;
15988 }
15989
15990 wpalMutexAcquire(&pWDICtx->wptMutex);
15991
15992
15993 gWDIInitialized = eWLAN_PAL_FALSE;
15994 /*! TO DO: stop the data services */
15995 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15996 {
15997 /*Stop the STA Table !UT- check this logic again
15998 It is safer to do it here than on the response - because a stop is imminent*/
15999 WDI_STATableStop(pWDICtx);
16000
16001 /* Stop Transport Driver, DXE */
16002 WDTS_Stop(pWDICtx);
16003 }
16004
16005 /*Clear all pending request*/
16006 WDI_ClearPendingRequests(pWDICtx);
16007 /* Close Data transport*/
16008 /* FTM mode does not open Data Path */
16009 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16010 {
16011 WDTS_Close(pWDICtx);
16012 }
16013 /*Close the STA Table !UT- check this logic again*/
16014 WDI_STATableClose(pWDICtx);
16015 /*close the PAL */
16016 wptStatus = wpalClose(pWDICtx->pPALContext);
16017 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16018 {
16019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16020 "Failed to wpal Close %d", wptStatus);
16021 WDI_ASSERT(0);
16022 }
16023
16024 /*Transition back to init state*/
16025 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16026
16027 wpalMutexRelease(&pWDICtx->wptMutex);
16028
16029 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016031
16032
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016034}/*WDI_ProcessShutdownReq*/
16035
16036/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016037 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016038========================================================================*/
16039
16040/**
16041 @brief Process Start Response function (called when a response
16042 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016043
16044 @param pWDICtx: pointer to the WLAN DAL context
16045 pEventData: pointer to the event information structure
16046
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 @see
16048 @return Result of the function call
16049*/
16050WDI_Status
16051WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016052(
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 WDI_ControlBlockType* pWDICtx,
16054 WDI_EventInfoType* pEventData
16055)
16056{
16057 WDI_StartRspParamsType wdiRspParams;
16058 WDI_StartRspCb wdiStartRspCb = NULL;
16059
16060 tHalMacStartRspParams* startRspParams;
16061
16062#ifndef HAL_SELF_STA_PER_BSS
16063 WDI_AddStaParams wdiAddSTAParam = {0};
16064#endif
16065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16066
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 -------------------------------------------------------------------------*/
16071 if (( NULL == pEventData ) ||
16072 ( NULL == pEventData->pEventData) ||
16073 ( NULL == wdiStartRspCb ))
16074 {
16075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 }
16080
16081 /*-------------------------------------------------------------------------
16082 Extract response and send it to UMAC
16083 -------------------------------------------------------------------------*/
16084 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16085 {
16086 // not enough data was received
16087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016088 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 }
16093
16094 /*-------------------------------------------------------------------------
16095 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 -------------------------------------------------------------------------*/
16098 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16099
16100 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16101 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16102 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16103 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16104 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16105 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16106 wdiRspParams.wlanReportedVersion.major =
16107 startRspParams->wcnssWlanVersion.major;
16108 wdiRspParams.wlanReportedVersion.minor =
16109 startRspParams->wcnssWlanVersion.minor;
16110 wdiRspParams.wlanReportedVersion.version =
16111 startRspParams->wcnssWlanVersion.version;
16112 wdiRspParams.wlanReportedVersion.revision =
16113 startRspParams->wcnssWlanVersion.revision;
16114 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16115 startRspParams->wcnssCrmVersionString,
16116 sizeof(wdiRspParams.wcnssSoftwareVersion));
16117 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16118 startRspParams->wcnssWlanVersionString,
16119 sizeof(wdiRspParams.wcnssHardwareVersion));
16120 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16121
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016122 /*Save the HAL Version*/
16123 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16124
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 wpalMutexAcquire(&pWDICtx->wptMutex);
16126 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16127 {
16128 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16129
16130 /*Cache the start response for further use*/
16131 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 sizeof(pWDICtx->wdiCachedStartRspParams));
16134
16135 }
16136 else
16137 {
16138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16139 "Failed to start device with status %s(%d)",
16140 WDI_getHALStatusMsgString(startRspParams->status),
16141 startRspParams->status);
16142
16143 /*Set the expected state transition to stopped - because the start has
16144 failed*/
16145 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16146
16147 wpalMutexRelease(&pWDICtx->wptMutex);
16148
16149 /*Notify UMAC*/
16150 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016151
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016153 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016154
16155 /*Although the response is an error - it was processed by our function
16156 so as far as the caller is concerned this is a succesful reponse processing*/
16157 return WDI_STATUS_SUCCESS;
16158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 wpalMutexRelease(&pWDICtx->wptMutex);
16161
16162 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16163 {
16164 /* FTM mode does not need to execute below */
16165 /* Notify UMAC */
16166 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16167 return WDI_STATUS_SUCCESS;
16168 }
16169
16170 /* START the Data transport */
16171 WDTS_startTransport(pWDICtx);
16172
16173 /*Start the STA Table !- check this logic again*/
16174 WDI_STATableStart(pWDICtx);
16175
16176#ifndef HAL_SELF_STA_PER_BSS
16177 /* Store the Self STA Index */
16178 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16179
16180 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16181 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16182 WDI_MAC_ADDR_LEN);
16183
16184 /* At this point add the self-STA */
16185
16186 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16187 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16188 /*! TO DO: wdiAddSTAParam.dpuSig */
16189 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16190 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16191 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16192
16193 //all DPU indices are the same for self STA
16194 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16195 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016196 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16198 WDI_MAC_ADDR_LEN);
16199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16200 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16201
16202 /* Note: Since we don't get an explicit config STA request for self STA, we
16203 add the self STA upon receiving the Start response message. But the
16204 self STA entry in the table is deleted when WDI gets an explicit delete STA
16205 request */
16206 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16207#endif
16208
16209 /*Notify UMAC*/
16210 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16211
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016213}/*WDI_ProcessStartRsp*/
16214
16215
16216/**
16217 @brief Process Stop Response function (called when a response
16218 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016219
16220 @param pWDICtx: pointer to the WLAN DAL context
16221 pEventData: pointer to the event information structure
16222
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 @see
16224 @return Result of the function call
16225*/
16226WDI_Status
16227WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016228(
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 WDI_ControlBlockType* pWDICtx,
16230 WDI_EventInfoType* pEventData
16231)
16232{
16233 WDI_Status wdiStatus;
16234 WDI_StopRspCb wdiStopRspCb = NULL;
16235
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16238
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 -------------------------------------------------------------------------*/
16243 if (( NULL == pEventData ) ||
16244 ( NULL == pEventData->pEventData) ||
16245 ( NULL == wdiStopRspCb ))
16246 {
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 }
16252
16253 /*-------------------------------------------------------------------------
16254 Extract response and send it to UMAC
16255 -------------------------------------------------------------------------*/
16256 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16257 {
16258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016259 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 pEventData->uEventDataSize);
16261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 }
16264
16265 /*-------------------------------------------------------------------------
16266 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16270 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 sizeof(halMacStopRspMsg.stopRspParams));
16272
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016274
16275 wpalMutexAcquire(&pWDICtx->wptMutex);
16276
16277 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 --------------------------------------------------------------------------*/
16280 if ( WDI_STATUS_SUCCESS != wdiStatus )
16281 {
16282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16283 "Failed to stop the device with status %s (%d)",
16284 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16285 halMacStopRspMsg.stopRspParams.status);
16286
Jeff Johnsone7245742012-09-05 17:12:55 -070016287 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016288 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016289
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016293
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16295
16296 /*Transition now as WDI may get preempted imediately after it sends
16297 up the Stop Response and it will not get to process the state transition
16298 from Main Rsp function*/
16299 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16300 wpalMutexRelease(&pWDICtx->wptMutex);
16301
16302 /*! TO DO: - STOP the Data transport */
16303
16304 /*Notify UMAC*/
16305 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16306
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016308}/*WDI_ProcessStopRsp*/
16309
16310/**
16311 @brief Process Close Rsp function (called when a response
16312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016313
16314 @param pWDICtx: pointer to the WLAN DAL context
16315 pEventData: pointer to the event information structure
16316
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 @see
16318 @return Result of the function call
16319*/
16320WDI_Status
16321WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016322(
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 WDI_ControlBlockType* pWDICtx,
16324 WDI_EventInfoType* pEventData
16325)
16326{
16327 /*There is no close response comming from HAL - function just kept for
16328 simmetry */
16329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016331}/*WDI_ProcessCloseRsp*/
16332
16333
16334/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016336============================================================================*/
16337
16338/**
16339 @brief Process Init Scan Rsp function (called when a response
16340 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
16342 @param pWDICtx: pointer to the WLAN DAL context
16343 pEventData: pointer to the event information structure
16344
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 @see
16346 @return Result of the function call
16347*/
16348WDI_Status
16349WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016350(
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 WDI_ControlBlockType* pWDICtx,
16352 WDI_EventInfoType* pEventData
16353)
16354{
16355 WDI_Status wdiStatus;
16356 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016358 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16360
16361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 -------------------------------------------------------------------------*/
16364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16365 ( NULL == pEventData->pEventData))
16366 {
16367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 }
16372
16373 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16374 if( NULL == wdiInitScanRspCb)
16375 {
16376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016377 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 }
16381
16382 /*-------------------------------------------------------------------------
16383 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16387 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 sizeof(halInitScanRspMsg.initScanRspParams));
16389
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016391
16392 if ( pWDICtx->bInBmps )
16393 {
16394 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016395 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16396 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016398 "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 -080016399 WDI_ASSERT(0);
16400 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 }
16402
16403 /*Notify UMAC*/
16404 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16405
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016407}/*WDI_ProcessInitScanRsp*/
16408
16409
16410/**
16411 @brief Process Start Scan Rsp function (called when a response
16412 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016413
16414 @param pWDICtx: pointer to the WLAN DAL context
16415 pEventData: pointer to the event information structure
16416
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 @see
16418 @return Result of the function call
16419*/
16420WDI_Status
16421WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016422(
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 WDI_ControlBlockType* pWDICtx,
16424 WDI_EventInfoType* pEventData
16425)
16426{
16427 WDI_StartScanRspParamsType wdiStartScanParams;
16428 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016429
16430 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16432
16433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 -------------------------------------------------------------------------*/
16436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16437 ( NULL == pEventData->pEventData))
16438 {
16439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 }
16444
16445 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16446 if( NULL == wdiStartScanRspCb)
16447 {
16448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016449 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016452 }
16453
16454 /*-------------------------------------------------------------------------
16455 Extract response and send it to UMAC
16456 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016457 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16458 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 sizeof(halStartScanRspMsg.startScanRspParams));
16460
16461 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16462 halStartScanRspMsg.startScanRspParams.status);
16463#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016466 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 halStartScanRspMsg.startScanRspParams.startTSF,
16468 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016469#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016470
16471 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16472 {
16473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16474 "Start scan failed with status %s (%d)",
16475 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16476 halStartScanRspMsg.startScanRspParams.status);
16477 /* send the status to UMAC, don't return from here*/
16478 }
16479
16480 /*Notify UMAC*/
16481 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16482
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016484
16485}/*WDI_ProcessStartScanRsp*/
16486
16487
16488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016489 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016491
16492 @param pWDICtx: pointer to the WLAN DAL context
16493 pEventData: pointer to the event information structure
16494
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 @see
16496 @return Result of the function call
16497*/
16498WDI_Status
16499WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016500(
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 WDI_ControlBlockType* pWDICtx,
16502 WDI_EventInfoType* pEventData
16503)
16504{
16505 WDI_Status wdiStatus;
16506 tHalEndScanRspMsg halEndScanRspMsg;
16507 WDI_EndScanRspCb wdiEndScanRspCb;
16508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16509
16510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 -------------------------------------------------------------------------*/
16513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16514 ( NULL == pEventData->pEventData))
16515 {
16516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 }
16521
16522 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16523
16524 /*-------------------------------------------------------------------------
16525 Extract response and send it to UMAC
16526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16528 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 sizeof(halEndScanRspMsg.endScanRspParams));
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016532
16533 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16534 {
16535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16536 "End Scan failed with status %s (%d )",
16537 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16538 halEndScanRspMsg.endScanRspParams.status);
16539 /* send the status to UMAC, don't return from here*/
16540 }
16541
16542 /*Notify UMAC*/
16543 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16544
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016546}/*WDI_ProcessEndScanRsp*/
16547
16548
16549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016552
16553 @param pWDICtx: pointer to the WLAN DAL context
16554 pEventData: pointer to the event information structure
16555
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 @see
16557 @return Result of the function call
16558*/
16559WDI_Status
16560WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016561(
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 WDI_ControlBlockType* pWDICtx,
16563 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016564)
Jeff Johnson295189b2012-06-20 16:38:30 -070016565{
16566 WDI_Status wdiStatus;
16567 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016568
16569 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16571
16572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 -------------------------------------------------------------------------*/
16575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16576 ( NULL == pEventData->pEventData))
16577 {
16578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 }
16583
16584 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016594
16595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 halFinishScanRspMsg.finishScanRspParams.status);
16598
16599 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16600 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16601 {
16602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16603 "Finish Scan failed with status %s (%d)",
16604 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16605 halFinishScanRspMsg.finishScanRspParams.status);
16606 /* send the status to UMAC, don't return from here*/
16607 }
16608
16609 /*Notify UMAC*/
16610 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16611
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613}/*WDI_ProcessFinishScanRsp*/
16614
16615/**
16616 @brief Process Join Response function (called when a response
16617 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016618
16619 @param pWDICtx: pointer to the WLAN DAL context
16620 pEventData: pointer to the event information structure
16621
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 @see
16623 @return Result of the function call
16624*/
16625WDI_Status
16626WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016627(
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ControlBlockType* pWDICtx,
16629 WDI_EventInfoType* pEventData
16630)
16631{
16632 WDI_Status wdiStatus;
16633 WDI_JoinRspCb wdiJoinRspCb;
16634 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016635
16636 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16638
16639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 -------------------------------------------------------------------------*/
16642 if (( NULL == pWDICtx ) ||
16643 ( NULL == pWDICtx->pfncRspCB ) ||
16644 ( NULL == pEventData ) ||
16645 ( NULL == pEventData->pEventData))
16646 {
16647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 }
16652
16653 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16654
16655 /*-------------------------------------------------------------------------
16656 Extract response and send it to UMAC
16657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16659 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 sizeof(halJoinRspMsg.joinRspParams));
16661
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016663
16664 wpalMutexAcquire(&pWDICtx->wptMutex);
16665
16666 /*-----------------------------------------------------------------------
16667 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16672 {
16673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16675 "association no longer in progress %d - mysterious HAL response",
16676 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016677
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 }
16682
16683 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16684
16685 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -----------------------------------------------------------------------*/
16688 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16689 {
16690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16691 "Join only allowed in Joining state - failure state is %d "
16692 "strange HAL response", pBSSSes->wdiAssocState);
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16695
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 }
16699
16700
16701 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 -----------------------------------------------------------------------*/
16704 if ( WDI_STATUS_SUCCESS != wdiStatus )
16705 {
16706 /*Association was failed by HAL - remove session*/
16707 WDI_DeleteSession(pWDICtx, pBSSSes);
16708
16709 /*Association no longer in progress */
16710 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16711
16712 /*Association no longer in progress - prepare pending assoc for processing*/
16713 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016714
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 }
16716 else
16717 {
16718 /*Transition to state Joining - this may be redundant as we are supposed
16719 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 }
16722
16723 wpalMutexRelease(&pWDICtx->wptMutex);
16724
16725 /*Notify UMAC*/
16726 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16727
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016729}/*WDI_ProcessJoinRsp*/
16730
16731
16732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016735
16736 @param pWDICtx: pointer to the WLAN DAL context
16737 pEventData: pointer to the event information structure
16738
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 @see
16740 @return Result of the function call
16741*/
16742WDI_Status
16743WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016744(
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 WDI_ControlBlockType* pWDICtx,
16746 WDI_EventInfoType* pEventData
16747)
16748{
16749 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16750 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_BSSSessionType* pBSSSes = NULL;
16753
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16756 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16759
16760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 -------------------------------------------------------------------------*/
16763 if (( NULL == pEventData ) ||
16764 ( NULL == pEventData->pEventData))
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 }
16771
16772 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16773
16774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16778 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 sizeof(halConfigBssRspMsg.configBssRspParams));
16780
16781 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16782 halConfigBssRspMsg.configBssRspParams.status);
16783 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16784 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016785 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16787 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016788
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790
16791 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
16794 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016796
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16802 #endif
16803 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16804 halConfigBssRspMsg.configBssRspParams.staMac,
16805 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016806
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 wpalMutexAcquire(&pWDICtx->wptMutex);
16808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16812 wdiConfigBSSParams.macBSSID,
16813 &pBSSSes);
16814
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 /*-----------------------------------------------------------------------
16816 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 -----------------------------------------------------------------------*/
16819 if ( NULL == pBSSSes )
16820 {
16821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16822 "Association sequence for this BSS does not yet exist "
16823 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016824
16825 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16826
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016830
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 /*Save data for this BSS*/
16832 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16833 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16844 pBSSSes->bcastStaIdx =
16845 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016846
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 /*-------------------------------------------------------------------------
16850 Add Peer STA
16851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16854 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016855
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 wdiAddSTAParam.ucHTCapable =
16860 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16861 wdiAddSTAParam.ucStaType =
16862 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16863
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16866 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016868
16869 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16870 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16871 WDI_MAC_ADDR_LEN);
16872
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16888 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016889
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16891 /*-------------------------------------------------------------------------
16892 Add Broadcast STA only in AP mode
16893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016895 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 {
16897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16898 "Add BCAST STA to table for index: %d",
16899 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016900
16901 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16905 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16906 }
16907 wpalMutexRelease(&pWDICtx->wptMutex);
16908 }
16909 else
16910 {
16911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16912 "Config BSS RSP failed with status : %s(%d)",
16913 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 halConfigBssRspMsg.configBssRspParams.status);
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 /*Association was failed by HAL - remove session*/
16919 WDI_DeleteSession(pWDICtx, pBSSSes);
16920
16921 /*Association no longer in progress */
16922 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16923
16924 /*Association no longer in progress - prepare pending assoc for processing*/
16925 WDI_DequeueAssocRequest(pWDICtx);
16926
16927 }
16928
16929 /*Notify UMAC*/
16930 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16931
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016933}/*WDI_ProcessConfigBSSRsp*/
16934
16935
16936/**
16937 @brief Process Del BSS Response function (called when a response
16938 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016939
16940 @param pWDICtx: pointer to the WLAN DAL context
16941 pEventData: pointer to the event information structure
16942
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 @see
16944 @return Result of the function call
16945*/
16946WDI_Status
16947WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016948(
Jeff Johnson295189b2012-06-20 16:38:30 -070016949 WDI_ControlBlockType* pWDICtx,
16950 WDI_EventInfoType* pEventData
16951)
16952{
16953 WDI_DelBSSRspParamsType wdiDelBSSParams;
16954 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 WDI_BSSSessionType* pBSSSes = NULL;
16957
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16960
16961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 -------------------------------------------------------------------------*/
16964 if (( NULL == pEventData ) ||
16965 ( NULL == pEventData->pEventData))
16966 {
16967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 }
16972
16973 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16974
16975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16979 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 sizeof(halDelBssRspMsg.deleteBssRspParams));
16981
16982
16983 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016984 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016985
16986 wpalMutexAcquire(&pWDICtx->wptMutex);
16987
16988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16992 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16993 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016994
16995 /*-----------------------------------------------------------------------
16996 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -----------------------------------------------------------------------*/
16999 if ( NULL == pBSSSes )
17000 {
17001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17002 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017003 "association no longer in progress - mysterious HAL response");
17004
17005 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17006
17007 wpalMutexRelease(&pWDICtx->wptMutex);
17008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017010
17011 /*Extract BSSID for the response to UMAC*/
17012 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17013 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17014
17015 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17016
17017 /*-----------------------------------------------------------------------
17018 The current session will be deleted
17019 -----------------------------------------------------------------------*/
17020 WDI_DeleteSession(pWDICtx, pBSSSes);
17021
17022
17023 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017024 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17025 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017027 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017028 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017029
17030 /* Delete the STA's in this BSS */
17031 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17032
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 wpalMutexRelease(&pWDICtx->wptMutex);
17034
17035 /*Notify UMAC*/
17036 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17037
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017039}/*WDI_ProcessDelBSSRsp*/
17040
17041/**
17042 @brief Process Post Assoc Rsp function (called when a response
17043 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017044
17045 @param pWDICtx: pointer to the WLAN DAL context
17046 pEventData: pointer to the event information structure
17047
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 @see
17049 @return Result of the function call
17050*/
17051WDI_Status
17052WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017053(
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 WDI_ControlBlockType* pWDICtx,
17055 WDI_EventInfoType* pEventData
17056)
17057{
17058 WDI_PostAssocRspParamsType wdiPostAssocParams;
17059 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17064
17065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017067 -------------------------------------------------------------------------*/
17068 if (( NULL == pEventData ) ||
17069 ( NULL == pEventData->pEventData))
17070 {
17071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 }
17076
17077 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17078
17079 /*-------------------------------------------------------------------------
17080 Extract response and send it to UMAC
17081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17083 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 sizeof(halPostAssocRspMsg.postAssocRspParams));
17085
17086 /*Extract the Post Assoc STA Params */
17087
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 wdiPostAssocParams.wdiStatus =
17096 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017097
17098 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17099 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17101 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_MAC_ADDR_LEN);
17103
17104 /* Extract Post Assoc BSS Params */
17105
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17107 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17108 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017109
17110 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17111 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017113 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17114 .macSTA, WDI_MAC_ADDR_LEN);
17115
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17118
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17121
17122 wdiPostAssocParams.bssParams.ucBSSIdx =
17123 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17124
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17127
17128 wpalMutexAcquire(&pWDICtx->wptMutex);
17129
17130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017136
17137 /*-----------------------------------------------------------------------
17138 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 -----------------------------------------------------------------------*/
17141 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17144 {
17145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17146 "Association sequence for this BSS does not yet exist or "
17147 "association no longer in progress - mysterious HAL response");
17148
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17150
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 }
17154
17155 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 -----------------------------------------------------------------------*/
17158 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17159 {
17160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17161 "Post Assoc not allowed before JOIN - failing request "
17162 "strange HAL response");
17163
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17165
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 }
17169
17170 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 -----------------------------------------------------------------------*/
17173 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17174 {
17175 /*Association was failed by HAL - remove session*/
17176 WDI_DeleteSession(pWDICtx, pBSSSes);
17177 }
17178 else
17179 {
17180 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017182
17183 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17195 }
17196
17197 /*Association no longer in progress */
17198 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17199
17200 /*Association no longer in progress - prepare pending assoc for processing*/
17201 WDI_DequeueAssocRequest(pWDICtx);
17202
17203 wpalMutexRelease(&pWDICtx->wptMutex);
17204
17205 /*Notify UMAC*/
17206 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17207
Jeff Johnsone7245742012-09-05 17:12:55 -070017208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017209}/*WDI_ProcessPostAssocRsp*/
17210
17211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017212 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017214
17215 @param pWDICtx: pointer to the WLAN DAL context
17216 pEventData: pointer to the event information structure
17217
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 @see
17219 @return Result of the function call
17220*/
17221WDI_Status
17222WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017223(
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 WDI_ControlBlockType* pWDICtx,
17225 WDI_EventInfoType* pEventData
17226)
17227{
17228 WDI_DelSTARspParamsType wdiDelSTARsp;
17229 WDI_DelSTARspCb wdiDelSTARspCb;
17230 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17233
17234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 -------------------------------------------------------------------------*/
17237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17238 ( NULL == pEventData->pEventData))
17239 {
17240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 }
17245
17246 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17247
17248 /*-------------------------------------------------------------------------
17249 Extract response and send it to UMAC
17250 -------------------------------------------------------------------------*/
17251 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 sizeof(halDelStaRspMsg.delStaRspParams));
17254
17255 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 wdiDelSTARsp.wdiStatus =
17257 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017258
17259 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17260
17261 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17262 if(staType == WDI_STA_ENTRY_SELF)
17263 {
17264 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17265
17266 /* At this point add the self-STA */
17267
17268 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17269 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17270 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17271
17272#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17273#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17274
17275 //all DPU indices are the same for self STA
17276 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17277 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17278 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17279 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17280 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17281 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017282
17283 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 }
17285 else
17286 {
17287 //Delete the station in the table
17288 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17289 }
17290
17291 /*Notify UMAC*/
17292 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17293
Jeff Johnsone7245742012-09-05 17:12:55 -070017294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017295}/*WDI_ProcessDelSTARsp*/
17296
17297
17298/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017299 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017300==========================================================================*/
17301
17302/**
17303 @brief Process Set BSS Key Rsp function (called when a response
17304 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017305
17306 @param pWDICtx: pointer to the WLAN DAL context
17307 pEventData: pointer to the event information structure
17308
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 @see
17310 @return Result of the function call
17311*/
17312WDI_Status
17313WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017314(
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 WDI_ControlBlockType* pWDICtx,
17316 WDI_EventInfoType* pEventData
17317)
17318{
17319 WDI_Status wdiStatus;
17320 eHalStatus halStatus;
17321 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17323
17324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 -------------------------------------------------------------------------*/
17327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17328 ( NULL == pEventData->pEventData))
17329 {
17330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 }
17335
17336 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17337
17338 /*-------------------------------------------------------------------------
17339 Extract response and send it to UMAC
17340 -------------------------------------------------------------------------*/
17341 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344 if ( eHAL_STATUS_SUCCESS != halStatus )
17345 {
17346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17347 "Set BSS Key failed with status %s (%d)",
17348 WDI_getHALStatusMsgString(halStatus),
17349 halStatus);
17350 /* send the status to UMAC, don't return from here*/
17351 }
17352
17353 /*Notify UMAC*/
17354 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17355
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017357}/*WDI_ProcessSetBssKeyRsp*/
17358
17359/**
17360 @brief Process Remove BSS Key Rsp function (called when a response
17361 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017362
17363 @param pWDICtx: pointer to the WLAN DAL context
17364 pEventData: pointer to the event information structure
17365
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 @see
17367 @return Result of the function call
17368*/
17369WDI_Status
17370WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017371(
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 WDI_ControlBlockType* pWDICtx,
17373 WDI_EventInfoType* pEventData
17374)
17375{
17376 WDI_Status wdiStatus;
17377 eHalStatus halStatus;
17378 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17380
17381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 -------------------------------------------------------------------------*/
17384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17385 ( NULL == pEventData->pEventData))
17386 {
17387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 }
17392
17393 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17394
17395 /*-------------------------------------------------------------------------
17396 Extract response and send it to UMAC
17397 -------------------------------------------------------------------------*/
17398 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017400
17401 if ( eHAL_STATUS_SUCCESS != halStatus )
17402 {
17403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17404 "Remove BSS Key failed with status %s (%d )",
17405 WDI_getHALStatusMsgString(halStatus),
17406 halStatus);
17407 /* send the status to UMAC, don't return from here*/
17408 }
17409
17410 /*Notify UMAC*/
17411 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17412
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414}/*WDI_ProcessSetBssKeyRsp*/
17415
17416
17417/**
17418 @brief Process Set STA Key Rsp function (called when a response
17419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017420
17421 @param pWDICtx: pointer to the WLAN DAL context
17422 pEventData: pointer to the event information structure
17423
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 @see
17425 @return Result of the function call
17426*/
17427WDI_Status
17428WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017429(
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 WDI_ControlBlockType* pWDICtx,
17431 WDI_EventInfoType* pEventData
17432)
17433{
17434 WDI_Status wdiStatus;
17435 eHalStatus halStatus;
17436 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17438
17439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 -------------------------------------------------------------------------*/
17442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17443 ( NULL == pEventData->pEventData))
17444 {
17445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 }
17450
17451 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17452
17453 /*-------------------------------------------------------------------------
17454 Extract response and send it to UMAC
17455 -------------------------------------------------------------------------*/
17456 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017458
17459 if ( eHAL_STATUS_SUCCESS != halStatus )
17460 {
17461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17462 "Set STA Key failed with status %s (%d)",
17463 WDI_getHALStatusMsgString(halStatus),
17464 halStatus);
17465 /* send the status to UMAC, don't return from here*/
17466 }
17467
17468 /*Notify UMAC*/
17469 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17470
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472}/*WDI_ProcessSetSTAKeyRsp*/
17473
17474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017477
17478 @param pWDICtx: pointer to the WLAN DAL context
17479 pEventData: pointer to the event information structure
17480
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 @see
17482 @return Result of the function call
17483*/
17484WDI_Status
17485WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017486(
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 WDI_ControlBlockType* pWDICtx,
17488 WDI_EventInfoType* pEventData
17489)
17490{
17491 WDI_Status wdiStatus;
17492 eHalStatus halStatus;
17493 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17495
17496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 -------------------------------------------------------------------------*/
17499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17500 ( NULL == pEventData->pEventData))
17501 {
17502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 }
17507
17508 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17509
17510 /*-------------------------------------------------------------------------
17511 Extract response and send it to UMAC
17512 -------------------------------------------------------------------------*/
17513 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515
17516 if ( eHAL_STATUS_SUCCESS != halStatus )
17517 {
17518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17519 "Remove STA Key failed with status %s (%d)",
17520 WDI_getHALStatusMsgString(halStatus),
17521 halStatus);
17522 /* send the status to UMAC, don't return from here*/
17523 }
17524
17525 /*Notify UMAC*/
17526 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17527
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017529}/*WDI_ProcessRemoveStaKeyRsp*/
17530
17531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017534
17535 @param pWDICtx: pointer to the WLAN DAL context
17536 pEventData: pointer to the event information structure
17537
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 @see
17539 @return Result of the function call
17540*/
17541WDI_Status
17542WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017543(
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 WDI_ControlBlockType* pWDICtx,
17545 WDI_EventInfoType* pEventData
17546)
17547{
17548 WDI_Status wdiStatus;
17549 eHalStatus halStatus;
17550 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17552
17553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 -------------------------------------------------------------------------*/
17556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17557 ( NULL == pEventData->pEventData))
17558 {
17559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 }
17564
17565 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17566
17567 /*-------------------------------------------------------------------------
17568 Extract response and send it to UMAC
17569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 wpalMemoryCopy( &halStatus,
17571 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 sizeof(halStatus));
17573
Jeff Johnsone7245742012-09-05 17:12:55 -070017574 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017575
17576 if ( eHAL_STATUS_SUCCESS != halStatus )
17577 {
17578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17579 "Set STA Key failed with status %s (%d)",
17580 WDI_getHALStatusMsgString(halStatus),
17581 halStatus);
17582 /* send the status to UMAC, don't return from here*/
17583 }
17584
17585 /*Notify UMAC*/
17586 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17587
Jeff Johnsone7245742012-09-05 17:12:55 -070017588 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017589}/*WDI_ProcessSetSTABcastKeyRsp*/
17590
17591/**
17592 @brief Process Remove STA Bcast Key Rsp function (called when a
17593 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017594
17595 @param pWDICtx: pointer to the WLAN DAL context
17596 pEventData: pointer to the event information structure
17597
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 @see
17599 @return Result of the function call
17600*/
17601WDI_Status
17602WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017603(
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 WDI_ControlBlockType* pWDICtx,
17605 WDI_EventInfoType* pEventData
17606)
17607{
17608 WDI_Status wdiStatus;
17609 eHalStatus halStatus;
17610 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17612
17613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 -------------------------------------------------------------------------*/
17616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17617 ( NULL == pEventData->pEventData))
17618 {
17619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 }
17624
17625 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17626
17627 /*-------------------------------------------------------------------------
17628 Extract response and send it to UMAC
17629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 wpalMemoryCopy( &halStatus,
17631 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 sizeof(halStatus));
17633
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017635
17636 if ( eHAL_STATUS_SUCCESS != halStatus )
17637 {
17638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17639 "Remove STA Key failed with status %s (%d)",
17640 WDI_getHALStatusMsgString(halStatus),
17641 halStatus);
17642 /* send the status to UMAC, don't return from here*/
17643 }
17644
17645 /*Notify UMAC*/
17646 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17647
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017649}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17650
17651
17652/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017653 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017654==========================================================================*/
17655
17656/**
17657 @brief Process Add TSpec Rsp function (called when a response
17658 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017659
17660 @param pWDICtx: pointer to the WLAN DAL context
17661 pEventData: pointer to the event information structure
17662
Jeff Johnson295189b2012-06-20 16:38:30 -070017663 @see
17664 @return Result of the function call
17665*/
17666WDI_Status
17667WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017668(
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 WDI_ControlBlockType* pWDICtx,
17670 WDI_EventInfoType* pEventData
17671)
17672{
17673 WDI_Status wdiStatus;
17674 eHalStatus halStatus;
17675 WDI_AddTsRspCb wdiAddTsRspCb;
17676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17677
17678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 -------------------------------------------------------------------------*/
17681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17682 ( NULL == pEventData->pEventData))
17683 {
17684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017688 }
17689
17690 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17691
17692 /*-------------------------------------------------------------------------
17693 Extract response and send it to UMAC
17694 -------------------------------------------------------------------------*/
17695 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017697
17698 /*Notify UMAC*/
17699 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17700
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702}/*WDI_ProcessAddTSpecRsp*/
17703
17704
Sunil Duttbd736ed2014-05-26 21:19:41 +053017705
17706#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17707
17708WDI_Status
17709WDI_ProcessLLStatsSetRsp
17710(
17711 WDI_ControlBlockType* pWDICtx,
17712 WDI_EventInfoType* pEventData
17713)
17714{
17715 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17716
17717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17718 "%s: Enter ", __func__);
17719 /*-------------------------------------------------------------------------
17720 Sanity check
17721 -------------------------------------------------------------------------*/
17722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17723 ( NULL == pEventData->pEventData))
17724 {
17725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17726 "%s: Invalid parameters", __func__);
17727 WDI_ASSERT(0);
17728 return WDI_STATUS_E_FAILURE;
17729 }
17730
17731 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17732
17733 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17734
17735 return WDI_STATUS_SUCCESS;
17736}
17737
17738WDI_Status
17739WDI_ProcessLLStatsGetRsp
17740(
17741 WDI_ControlBlockType* pWDICtx,
17742 WDI_EventInfoType* pEventData
17743)
17744{
17745 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17746
17747 /*-------------------------------------------------------------------------
17748 Sanity check
17749 -------------------------------------------------------------------------*/
17750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17751 ( NULL == pEventData->pEventData))
17752 {
17753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17754 "%s: Invalid parameters", __func__);
17755 WDI_ASSERT(0);
17756 return WDI_STATUS_E_FAILURE;
17757 }
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17759 "%s: Enter ", __func__);
17760
17761 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17762
17763 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17764
17765 return WDI_STATUS_SUCCESS;
17766}
17767
17768WDI_Status
17769WDI_ProcessLLStatsClearRsp
17770(
17771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
17775 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17776
17777 /*-------------------------------------------------------------------------
17778 Sanity check
17779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17784 "%s: Invalid parameters", __func__);
17785 WDI_ASSERT(0);
17786 return WDI_STATUS_E_FAILURE;
17787 }
17788
17789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17790 "%s: CLEAR RESPONSE CALL BACK", __func__);
17791 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17792
17793 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17794
17795 return WDI_STATUS_SUCCESS;
17796}
17797#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17798
Jeff Johnson295189b2012-06-20 16:38:30 -070017799/**
17800 @brief Process Del TSpec Rsp function (called when a response
17801 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017802
17803 @param pWDICtx: pointer to the WLAN DAL context
17804 pEventData: pointer to the event information structure
17805
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 @see
17807 @return Result of the function call
17808*/
17809WDI_Status
17810WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017811(
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 WDI_ControlBlockType* pWDICtx,
17813 WDI_EventInfoType* pEventData
17814)
17815{
17816 WDI_Status wdiStatus;
17817 eHalStatus halStatus;
17818 WDI_DelTsRspCb wdiDelTsRspCb;
17819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17820
17821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 -------------------------------------------------------------------------*/
17824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17825 ( NULL == pEventData->pEventData))
17826 {
17827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 }
17832
17833 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17834
17835 /*-------------------------------------------------------------------------
17836 Extract response and send it to UMAC
17837 -------------------------------------------------------------------------*/
17838 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017840
17841 /*Notify UMAC*/
17842 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17843
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017845}/*WDI_ProcessDelTSpecRsp*/
17846
17847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017850
17851 @param pWDICtx: pointer to the WLAN DAL context
17852 pEventData: pointer to the event information structure
17853
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 @see
17855 @return Result of the function call
17856*/
17857WDI_Status
17858WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017859(
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ControlBlockType* pWDICtx,
17861 WDI_EventInfoType* pEventData
17862)
17863{
17864 WDI_Status wdiStatus;
17865 eHalStatus halStatus;
17866 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17868
17869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 -------------------------------------------------------------------------*/
17872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17873 ( NULL == pEventData->pEventData))
17874 {
17875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017879 }
17880
17881 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17882
17883 /*-------------------------------------------------------------------------
17884 Extract response and send it to UMAC
17885 -------------------------------------------------------------------------*/
17886 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017888
17889 /*Notify UMAC*/
17890 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17891
Jeff Johnsone7245742012-09-05 17:12:55 -070017892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017893}/*WDI_ProcessUpdateEDCAParamsRsp*/
17894
17895
17896/**
17897 @brief Process Add BA Rsp function (called when a response
17898 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017899
17900 @param pWDICtx: pointer to the WLAN DAL context
17901 pEventData: pointer to the event information structure
17902
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 @see
17904 @return Result of the function call
17905*/
17906WDI_Status
17907WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017908(
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 WDI_ControlBlockType* pWDICtx,
17910 WDI_EventInfoType* pEventData
17911)
17912{
17913 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17914
17915 tAddBASessionRspParams halBASessionRsp;
17916 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17917
Jeff Johnsone7245742012-09-05 17:12:55 -070017918
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17920
17921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 -------------------------------------------------------------------------*/
17924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17925 ( NULL == pEventData->pEventData))
17926 {
17927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 }
17932
17933 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17934
17935 /*-------------------------------------------------------------------------
17936 Extract response and send it to UMAC
17937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wpalMemoryCopy( &halBASessionRsp,
17939 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 sizeof(halBASessionRsp));
17941
17942 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17943
Jeff Johnson43971f52012-07-17 12:26:56 -070017944 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 {
17946 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17947 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17948 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17949 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17950 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17951 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17952 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17953 }
17954
17955 /*Notify UMAC*/
17956 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17957
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017959}/*WDI_ProcessAddSessionBARsp*/
17960
17961
17962/**
17963 @brief Process Del BA Rsp function (called when a response
17964 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017965
17966 @param pWDICtx: pointer to the WLAN DAL context
17967 pEventData: pointer to the event information structure
17968
Jeff Johnson295189b2012-06-20 16:38:30 -070017969 @see
17970 @return Result of the function call
17971*/
17972WDI_Status
17973WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017974(
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 WDI_ControlBlockType* pWDICtx,
17976 WDI_EventInfoType* pEventData
17977)
17978{
17979 WDI_Status wdiStatus;
17980 eHalStatus halStatus;
17981 WDI_DelBARspCb wdiDelBARspCb;
17982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17983
17984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 -------------------------------------------------------------------------*/
17987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17988 ( NULL == pEventData->pEventData))
17989 {
17990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017994 }
17995
17996 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17997
17998 /*-------------------------------------------------------------------------
17999 Extract response and send it to UMAC
18000 -------------------------------------------------------------------------*/
18001 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018003
18004 if ( eHAL_STATUS_SUCCESS == halStatus )
18005 {
18006 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18007 }
18008
18009 /*Notify UMAC*/
18010 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18011
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018013}/*WDI_ProcessDelBARsp*/
18014
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018015#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018016/**
18017 @brief Process TSM Stats Rsp function (called when a response
18018 is being received over the bus from HAL)
18019
18020 @param pWDICtx: pointer to the WLAN DAL context
18021 pEventData: pointer to the event information structure
18022
18023 @see
18024 @return Result of the function call
18025*/
18026WDI_Status
18027WDI_ProcessTsmStatsRsp
18028(
18029 WDI_ControlBlockType* pWDICtx,
18030 WDI_EventInfoType* pEventData
18031)
18032{
18033 WDI_TsmRspCb wdiTsmStatsRspCb;
18034 tTsmStatsRspMsg halTsmStatsRspMsg;
18035 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18037
18038 /*-------------------------------------------------------------------------
18039 Sanity check
18040 -------------------------------------------------------------------------*/
18041 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18042 ( NULL == pEventData->pEventData))
18043 {
18044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 WDI_ASSERT(0);
18047 return WDI_STATUS_E_FAILURE;
18048 }
18049
18050 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18051
18052 /*-------------------------------------------------------------------------
18053 Unpack HAL Response Message - the header was already extracted by the
18054 main Response Handling procedure
18055 -------------------------------------------------------------------------*/
18056 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18057 pEventData->pEventData,
18058 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18059
18060 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18061 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18062 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18063 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18064 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18065 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18066 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18067 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18068 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18069 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18070 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18071 halTsmStatsRspMsg.tsmStatsRspParams.status);
18072
18073 /*Notify UMAC*/
18074 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18075
18076 return WDI_STATUS_SUCCESS;
18077}/*WDI_ProcessTsmStatsRsp*/
18078
18079#endif
18080
18081
18082
18083/**
18084 @brief Process Flush AC Rsp function (called when a response
18085 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018086
18087 @param pWDICtx: pointer to the WLAN DAL context
18088 pEventData: pointer to the event information structure
18089
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 @see
18091 @return Result of the function call
18092*/
18093WDI_Status
18094WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018095(
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 WDI_ControlBlockType* pWDICtx,
18097 WDI_EventInfoType* pEventData
18098)
18099{
18100 WDI_Status wdiStatus;
18101 eHalStatus halStatus;
18102 WDI_FlushAcRspCb wdiFlushAcRspCb;
18103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18104
18105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 -------------------------------------------------------------------------*/
18108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18109 ( NULL == pEventData->pEventData))
18110 {
18111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 }
18116
18117 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18118
18119 /*-------------------------------------------------------------------------
18120 Extract response and send it to UMAC
18121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 wpalMemoryCopy( &halStatus,
18123 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 sizeof(halStatus));
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018127
18128 /*Notify UMAC*/
18129 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18130
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018132}/*WDI_ProcessFlushAcRsp*/
18133
18134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_Status wdiStatus;
18152 eHalStatus halStatus;
18153 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18155
18156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 -------------------------------------------------------------------------*/
18159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18160 ( NULL == pEventData->pEventData))
18161 {
18162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 }
18167
18168 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18169
18170 /*-------------------------------------------------------------------------
18171 Extract response and send it to UMAC
18172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wpalMemoryCopy( &halStatus,
18174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 sizeof(halStatus));
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessBtAmpEventRsp*/
18184
18185
18186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018189
18190 @param pWDICtx: pointer to the WLAN DAL context
18191 pEventData: pointer to the event information structure
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 @see
18194 @return Result of the function call
18195*/
18196WDI_Status
18197WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018198(
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ControlBlockType* pWDICtx,
18200 WDI_EventInfoType* pEventData
18201)
18202{
18203 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18204 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18205 tAddStaSelfRspMsg halAddStaSelfRsp;
18206 WDI_AddStaParams wdiAddSTAParam = {0};
18207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18223
18224 /*-------------------------------------------------------------------------
18225 Extract response and send it to UMAC
18226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18228 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18230
18231
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wdiAddSTASelfParams.wdiStatus =
18233 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018234
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18241
18242 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18243 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18244 WDI_MAC_ADDR_LEN);
18245
18246
18247#ifdef HAL_SELF_STA_PER_BSS
18248
18249 /* At this point add the self-STA */
18250
18251 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18252 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18253 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18254
18255 //all DPU indices are the same for self STA
18256
18257 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18260 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18261 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18262 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18263 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18264
18265 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18266 WDI_MAC_ADDR_LEN);
18267
18268 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18269 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18270
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18273 {
18274 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18275 }
18276#endif
18277
18278 /*Notify UMAC*/
18279 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18280
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018282}/*WDI_ProcessAddSTASelfRsp*/
18283
18284
18285
18286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018289
18290 @param pWDICtx: pointer to the WLAN DAL context
18291 pEventData: pointer to the event information structure
18292
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 @see
18294 @return Result of the function call
18295*/
18296WDI_Status
18297WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018298(
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 WDI_ControlBlockType* pWDICtx,
18300 WDI_EventInfoType* pEventData
18301)
18302{
18303 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18304 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18305 tDelStaSelfRspParams delStaSelfRspParams;
18306 wpt_uint8 ucStaIdx;
18307
18308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18309
18310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 -------------------------------------------------------------------------*/
18313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18314 ( NULL == pEventData->pEventData))
18315 {
18316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 }
18321
18322 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18323
18324 /*-------------------------------------------------------------------------
18325 Extract response and send it to UMAC
18326 -------------------------------------------------------------------------*/
18327
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 (wpt_uint8*)pEventData->pEventData,
18330 sizeof(tDelStaSelfRspParams));
18331
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 wdiDelStaSelfRspParams.wdiStatus =
18333 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18337 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18338 {
18339 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 delStaSelfRspParams.selfMacAddr,
18342 &ucStaIdx);
18343 if(WDI_STATUS_E_FAILURE == wdiStatus)
18344 {
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018346 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 }
18350 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18351 }
18352
18353 /*Notify UMAC*/
18354 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18355
18356 return WDI_STATUS_SUCCESS;
18357}
18358
Jeff Johnsone7245742012-09-05 17:12:55 -070018359#ifdef FEATURE_OEM_DATA_SUPPORT
18360/**
18361 @brief Start Oem Data Rsp function (called when a
18362 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018363
Jeff Johnsone7245742012-09-05 17:12:55 -070018364 @param pWDICtx: pointer to the WLAN DAL context
18365 pEventData: pointer to the event information structure
18366
18367 @see
18368 @return Result of the function call
18369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018370
18371WDI_Status
18372WDI_ProcessStartOemDataRsp
18373(
18374 WDI_ControlBlockType* pWDICtx,
18375 WDI_EventInfoType* pEventData
18376)
18377{
18378 WDI_oemDataRspCb wdiOemDataRspCb;
18379 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18380 tStartOemDataRspParams* halStartOemDataRspParams;
18381
18382 /*-------------------------------------------------------------------------
18383 Sanity check
18384 -------------------------------------------------------------------------*/
18385 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18386 ( NULL == pEventData->pEventData))
18387 {
18388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018389 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018390 WDI_ASSERT(0);
18391 return WDI_STATUS_E_FAILURE;
18392 }
18393
18394 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18395
18396 /*-------------------------------------------------------------------------
18397 Extract response and send it to UMAC
18398 -------------------------------------------------------------------------*/
18399 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18400
18401
18402 //It is the responsibility of the application code to check for failure
18403 //conditions!
18404
18405 //Allocate memory for WDI OEM DATA RSP structure
18406 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18407
18408 if(NULL == wdiOemDataRspParams)
18409 {
18410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018411 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 pWDICtx, pEventData, pEventData->pEventData);
18413 WDI_ASSERT(0);
18414 return WDI_STATUS_E_FAILURE;
18415 }
18416
18417 /* Populate WDI structure members */
18418 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18419
18420 /*Notify UMAC*/
18421 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18422
18423 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18424 wpalMemoryFree(wdiOemDataRspParams);
18425
18426 return WDI_STATUS_SUCCESS;
18427}/*WDI_PrcoessStartOemDataRsp*/
18428#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018429
18430/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018432===========================================================================*/
18433
18434/**
18435 @brief Process Channel Switch Rsp function (called when a response
18436 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018437
18438 @param pWDICtx: pointer to the WLAN DAL context
18439 pEventData: pointer to the event information structure
18440
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 @see
18442 @return Result of the function call
18443*/
18444WDI_Status
18445WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018446(
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 WDI_ControlBlockType* pWDICtx,
18448 WDI_EventInfoType* pEventData
18449)
18450{
18451 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18452 WDI_SwitchChRspCb wdiChSwitchRspCb;
18453 tSwitchChannelRspParams halSwitchChannelRsp;
18454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18455
18456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 -------------------------------------------------------------------------*/
18459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18460 ( NULL == pEventData->pEventData))
18461 {
18462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 }
18467
18468 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18469
18470 /*-------------------------------------------------------------------------
18471 Extract response and send it to UMAC
18472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 (wpt_uint8*)pEventData->pEventData,
18475 sizeof(halSwitchChannelRsp));
18476
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 wdiSwitchChRsp.wdiStatus =
18478 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18480
18481#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018483#endif
18484
18485 /*Notify UMAC*/
18486 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18487
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018489}/*WDI_ProcessChannelSwitchRsp*/
18490
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018491/**
18492 @brief Process Channel Switch Rsp function (called when a response
18493 is being received over the bus from HAL against
18494 WDI_ProcessChannelSwitchReq_V1)
18495
18496 @param pWDICtx: pointer to the WLAN DAL context
18497 pEventData: pointer to the event information structure
18498
18499 @see
18500 @return Result of the function call
18501*/
18502
18503WDI_Status
18504WDI_ProcessChannelSwitchRsp_V1
18505(
18506 WDI_ControlBlockType* pWDICtx,
18507 WDI_EventInfoType* pEventData
18508)
18509{
18510 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18511 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18512 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18514
18515 /*-------------------------------------------------------------------------
18516 Sanity check
18517 -------------------------------------------------------------------------*/
18518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18519 ( NULL == pEventData->pEventData))
18520 {
18521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18522 "%s: Invalid parameters", __func__);
18523 WDI_ASSERT(0);
18524 return WDI_STATUS_E_FAILURE;
18525 }
18526
18527 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18528
18529 /*-------------------------------------------------------------------------
18530 Extract response and send it to UMAC
18531 -------------------------------------------------------------------------*/
18532 wpalMemoryCopy( &halSwitchChannelRsp,
18533 (wpt_uint8*)pEventData->pEventData,
18534 sizeof(halSwitchChannelRsp));
18535
18536 wdiSwitchChRsp.wdiStatus =
18537 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18538 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18539
18540#ifdef WLAN_FEATURE_VOWIFI
18541 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18542#endif
18543
18544 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18545 if (( NULL == wdiChSwitchRspCb ) )
18546 {
18547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18548 "%s: ### Call back function is null", __func__);
18549 WDI_ASSERT(0);
18550 return WDI_STATUS_E_FAILURE;
18551 }
18552 /*Notify UMAC*/
18553 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18554
18555 return WDI_STATUS_SUCCESS;
18556}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018557
18558/**
18559 @brief Process Config STA Rsp function (called when a response
18560 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018561
18562 @param pWDICtx: pointer to the WLAN DAL context
18563 pEventData: pointer to the event information structure
18564
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 @see
18566 @return Result of the function call
18567*/
18568WDI_Status
18569WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018570(
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_ControlBlockType* pWDICtx,
18572 WDI_EventInfoType* pEventData
18573)
18574{
18575 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18576 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18577 WDI_AddStaParams wdiAddSTAParam;
18578
18579 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018581
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18584
18585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 -------------------------------------------------------------------------*/
18588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18589 ( NULL == pEventData->pEventData))
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 }
18596
18597 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18598
18599 /*-------------------------------------------------------------------------
18600 Extract response and send it to UMAC
18601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018602 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18603 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 sizeof(halConfigStaRsp.configStaRspParams));
18605
18606
18607 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18608 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18609 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18610 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18611 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18612
18613 /* MAC Address of STA - take from cache as it does not come back in the
18614 response*/
18615 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018618
18619 wdiCfgSTAParams.wdiStatus =
18620 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018621
18622 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18623 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18624 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18625
18626 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18627 {
18628 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18629 {
18630 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018631 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18633 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018634
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 wdiAddSTAParam.ucHTCapable =
18639 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18640 wdiAddSTAParam.ucStaType =
18641 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018642 wdiAddSTAParam.ucRmfEnabled =
18643 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018644
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18647 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018649
18650 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18651 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18652 WDI_MAC_ADDR_LEN);
18653
18654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18655 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18656 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018657
18658 if ( NULL == pBSSSes )
18659 {
18660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18661 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018662
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 }
18666
18667 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18679 }
18680 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18681 {
18682 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18683
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 halConfigStaRsp.configStaRspParams.ucUcastSig;
18698 }
18699 }
18700
18701 /*Notify UMAC*/
18702 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18703
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018705}/*WDI_ProcessConfigStaRsp*/
18706
18707
18708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018709 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018711
18712 @param pWDICtx: pointer to the WLAN DAL context
18713 pEventData: pointer to the event information structure
18714
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 @see
18716 @return Result of the function call
18717*/
18718WDI_Status
18719WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018720(
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 WDI_ControlBlockType* pWDICtx,
18722 WDI_EventInfoType* pEventData
18723)
18724{
18725 WDI_Status wdiStatus;
18726 eHalStatus halStatus;
18727 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18728
18729 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18732
18733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 -------------------------------------------------------------------------*/
18736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18737 ( NULL == pEventData->pEventData))
18738 {
18739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 }
18744
18745 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18746
18747 wpalMutexAcquire(&pWDICtx->wptMutex);
18748
18749 /*If the link is being transitioned to idle - the BSS is to be deleted
18750 - this type of ending a session is possible when UMAC has failed an
18751 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18754 {
18755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18759 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18760 &pBSSSes);
18761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 /*-----------------------------------------------------------------------
18763 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 -----------------------------------------------------------------------*/
18766 if ( NULL == pBSSSes )
18767 {
18768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18769 "Set link response received outside association session");
18770 }
18771 else
18772 {
18773 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18774 will be del BSS coming after this to stop the beaconing & cleaning up the
18775 sessions*/
18776 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18777 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18778 {
18779 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018780 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018781 -----------------------------------------------------------------------*/
18782 WDI_DeleteSession(pWDICtx, pBSSSes);
18783
18784 /*-----------------------------------------------------------------------
18785 Check to see if this association is in progress - if so disable the
18786 flag as this has ended
18787 -----------------------------------------------------------------------*/
18788 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 /*Association no longer in progress */
18791 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18792 /*Association no longer in progress - prepare pending assoc for processing*/
18793 WDI_DequeueAssocRequest(pWDICtx);
18794 }
18795 }
18796 }
18797 }
18798 /* If the link state has been set to POST ASSOC, reset the "association in
18799 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018800 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18802 {
18803 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18804 WDI_DequeueAssocRequest(pWDICtx);
18805 }
18806
18807 wpalMutexRelease(&pWDICtx->wptMutex);
18808
18809 /*-------------------------------------------------------------------------
18810 Extract response and send it to UMAC
18811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 wpalMemoryCopy( &halStatus,
18813 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 sizeof(halStatus));
18815
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
18818 /*Notify UMAC*/
18819 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18820
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018822}/*WDI_ProcessSetLinkStateRsp*/
18823
18824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018827
18828 @param pWDICtx: pointer to the WLAN DAL context
18829 pEventData: pointer to the event information structure
18830
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 @see
18832 @return Result of the function call
18833*/
18834WDI_Status
18835WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018836(
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 WDI_ControlBlockType* pWDICtx,
18838 WDI_EventInfoType* pEventData
18839)
18840{
18841 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18842 WDI_GetStatsRspCb wdiGetStatsRspCb;
18843 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018844
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18846
18847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 -------------------------------------------------------------------------*/
18850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18851 ( NULL == pEventData->pEventData))
18852 {
18853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 }
18858
18859 /*-------------------------------------------------------------------------
18860 Extract response and send it to UMAC
18861 -------------------------------------------------------------------------*/
18862 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18863
18864 /*allocate the stats response buffer */
18865 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18866 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18867 + sizeof(WDI_GetStatsRspParamsType));
18868
18869 if(NULL == wdiGetStatsRsp)
18870 {
18871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018872 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 pWDICtx, pEventData, pEventData->pEventData);
18874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 }
18877
18878 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18879
18880 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18881 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18882 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18883 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18884 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18885 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18886
18887 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18888 wpalMemoryCopy(wdiGetStatsRsp + 1,
18889 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18890 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18891
18892 /*Notify UMAC*/
18893 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18894
18895 wpalMemoryFree(wdiGetStatsRsp);
18896
Jeff Johnsone7245742012-09-05 17:12:55 -070018897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018898}/*WDI_ProcessGetStatsRsp*/
18899
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018900#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018901/**
18902 @brief Process Get Roam Rssi Rsp function (called when a response is
18903 being received over the bus from HAL)
18904
18905 @param pWDICtx: pointer to the WLAN DAL context
18906 pEventData: pointer to the event information structure
18907
18908 @see
18909 @return Result of the function call
18910*/
18911WDI_Status
18912WDI_ProcessGetRoamRssiRsp
18913(
18914 WDI_ControlBlockType* pWDICtx,
18915 WDI_EventInfoType* pEventData
18916)
18917{
18918 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18919 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18920 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18922
18923 /*-------------------------------------------------------------------------
18924 Sanity check
18925 -------------------------------------------------------------------------*/
18926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18927 ( NULL == pEventData->pEventData))
18928 {
18929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18930 "%s: Invalid parameters", __func__);
18931 WDI_ASSERT(0);
18932 return WDI_STATUS_E_FAILURE;
18933 }
18934
18935 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18936 if(NULL == wdiGetRoamRssiRspCb)
18937 {
18938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18939 "%s: call back function is NULL", __func__);
18940 WDI_ASSERT(0);
18941 return WDI_STATUS_E_FAILURE;
18942 }
18943
18944 /*-------------------------------------------------------------------------
18945 Extract response and send it to UMAC
18946 -------------------------------------------------------------------------*/
18947 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18948 pEventData->pEventData,
18949 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18950
18951 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18952 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18953 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18954
18955 /*Notify UMAC*/
18956 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18957
18958 return WDI_STATUS_SUCCESS;
18959}/*WDI_ProcessGetRoamRssiRsp*/
18960#endif
18961
Jeff Johnson295189b2012-06-20 16:38:30 -070018962
18963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018966
18967 @param pWDICtx: pointer to the WLAN DAL context
18968 pEventData: pointer to the event information structure
18969
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 @see
18971 @return Result of the function call
18972*/
18973WDI_Status
18974WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018975(
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ControlBlockType* pWDICtx,
18977 WDI_EventInfoType* pEventData
18978)
18979{
18980 WDI_Status wdiStatus;
18981 eHalStatus halStatus;
18982 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18984
18985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 -------------------------------------------------------------------------*/
18988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18989 ( NULL == pEventData->pEventData))
18990 {
18991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 }
18996
18997 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18998
18999 /*-------------------------------------------------------------------------
19000 Extract response and send it to UMAC
19001 -------------------------------------------------------------------------*/
19002 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019004
19005 /*Notify UMAC*/
19006 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19007
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019009}/*WDI_ProcessUpdateCfgRsp*/
19010
19011
19012
19013/**
19014 @brief Process Add BA Rsp function (called when a response
19015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019016
19017 @param pWDICtx: pointer to the WLAN DAL context
19018 pEventData: pointer to the event information structure
19019
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 @see
19021 @return Result of the function call
19022*/
19023WDI_Status
19024WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019025(
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 WDI_ControlBlockType* pWDICtx,
19027 WDI_EventInfoType* pEventData
19028)
19029{
19030 WDI_AddBARspCb wdiAddBARspCb;
19031
19032 tAddBARspParams halAddBARsp;
19033 WDI_AddBARspinfoType wdiAddBARsp;
19034
19035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19036
19037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 -------------------------------------------------------------------------*/
19040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19041 ( NULL == pEventData->pEventData))
19042 {
19043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 }
19048
19049 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19050
19051 /*-------------------------------------------------------------------------
19052 Extract response and send it to UMAC
19053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 wpalMemoryCopy( &halAddBARsp,
19055 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 sizeof(halAddBARsp));
19057
19058 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19059
Jeff Johnson43971f52012-07-17 12:26:56 -070019060 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 {
19062 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19063 }
19064
19065 /*Notify UMAC*/
19066 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19067
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019069}/*WDI_ProcessAddSessionBARsp*/
19070
19071/**
19072 @brief Process Add BA Rsp function (called when a response
19073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019074
19075 @param pWDICtx: pointer to the WLAN DAL context
19076 pEventData: pointer to the event information structure
19077
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 @see
19079 @return Result of the function call
19080*/
19081WDI_Status
19082WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019083(
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 WDI_ControlBlockType* pWDICtx,
19085 WDI_EventInfoType* pEventData
19086)
19087{
19088 WDI_TriggerBARspCb wdiTriggerBARspCb;
19089
19090 tTriggerBARspParams* halTriggerBARsp;
19091 tTriggerBaRspCandidate* halBaCandidate;
19092 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19093 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19094 wpt_uint16 index;
19095 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019096 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19098
19099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 -------------------------------------------------------------------------*/
19102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19103 ( NULL == pEventData->pEventData))
19104 {
19105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 }
19110
19111 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19112
19113 /*-------------------------------------------------------------------------
19114 Extract response and send it to UMAC
19115 -------------------------------------------------------------------------*/
19116 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19117
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019118 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19119
19120 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19121 {
19122 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019125
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019126 if(NULL == wdiTriggerBARsp)
19127 {
19128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019129 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019130 pWDICtx, pEventData, pEventData->pEventData);
19131 WDI_ASSERT(0);
19132 return WDI_STATUS_E_FAILURE;
19133 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019134
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019135 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19136
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19140
19141 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19142 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19143
19144 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19145 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19148 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19149 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019150 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019152 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19154 }
19155 wdiTriggerBARspCandidate++;
19156 halBaCandidate++;
19157 }
19158 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019159 else
19160 {
19161 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19162
19163 if(NULL == wdiTriggerBARsp)
19164 {
19165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019166 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019167 pWDICtx, pEventData, pEventData->pEventData);
19168 WDI_ASSERT(0);
19169 return WDI_STATUS_E_FAILURE;
19170 }
19171
19172 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19173
19174 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
19176 /*Notify UMAC*/
19177 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19178
19179 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019181}/*WDI_ProcessAddSessionBARsp*/
19182
19183/**
19184 @brief Process Update Beacon Params Rsp function (called when a response
19185 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019186
19187 @param pWDICtx: pointer to the WLAN DAL context
19188 pEventData: pointer to the event information structure
19189
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 @see
19191 @return Result of the function call
19192*/
19193WDI_Status
19194WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019195(
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 WDI_ControlBlockType* pWDICtx,
19197 WDI_EventInfoType* pEventData
19198)
19199{
19200 WDI_Status wdiStatus;
19201 eHalStatus halStatus;
19202 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19204
19205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 -------------------------------------------------------------------------*/
19208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19209 ( NULL == pEventData->pEventData))
19210 {
19211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 }
19216
19217 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19218
19219 /*-------------------------------------------------------------------------
19220 Extract response and send it to UMAC
19221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019222 wpalMemoryCopy( &halStatus,
19223 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 sizeof(halStatus));
19225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019227
19228 /*Notify UMAC*/
19229 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19230
Jeff Johnsone7245742012-09-05 17:12:55 -070019231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019232}/*WDI_ProcessUpdateBeaconParamsRsp*/
19233
19234/**
19235 @brief Process Send Beacon template Rsp function (called when a response
19236 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019237
19238 @param pWDICtx: pointer to the WLAN DAL context
19239 pEventData: pointer to the event information structure
19240
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 @see
19242 @return Result of the function call
19243*/
19244WDI_Status
19245WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019246(
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ControlBlockType* pWDICtx,
19248 WDI_EventInfoType* pEventData
19249)
19250{
19251 WDI_Status wdiStatus;
19252 eHalStatus halStatus;
19253 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19255
19256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 -------------------------------------------------------------------------*/
19259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19260 ( NULL == pEventData->pEventData))
19261 {
19262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 }
19267
19268 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19269
19270 /*-------------------------------------------------------------------------
19271 Extract response and send it to UMAC
19272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 wpalMemoryCopy( &halStatus,
19274 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 sizeof(halStatus));
19276
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019278
19279 /*Notify UMAC*/
19280 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19281
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283}/*WDI_ProcessSendBeaconParamsRsp*/
19284
Jeff Johnsone7245742012-09-05 17:12:55 -070019285
Jeff Johnson295189b2012-06-20 16:38:30 -070019286/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019289
19290 @param pWDICtx: pointer to the WLAN DAL context
19291 pEventData: pointer to the event information structure
19292
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 @see
19294 @return Result of the function call
19295*/
19296WDI_Status
19297WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019298(
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 WDI_ControlBlockType* pWDICtx,
19300 WDI_EventInfoType* pEventData
19301)
19302{
19303 WDI_Status wdiStatus;
19304 eHalStatus halStatus;
19305 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19307
19308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 -------------------------------------------------------------------------*/
19311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19312 ( NULL == pEventData->pEventData))
19313 {
19314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
19320 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19321
19322 /*-------------------------------------------------------------------------
19323 Extract response and send it to UMAC
19324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 wpalMemoryCopy( &halStatus,
19326 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 sizeof(halStatus));
19328
Jeff Johnsone7245742012-09-05 17:12:55 -070019329 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019330
19331 /*Notify UMAC*/
19332 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19333
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019335}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19336
19337 /**
19338 @brief Process Set Max Tx Power Rsp function (called when a response
19339 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019340
19341 @param pWDICtx: pointer to the WLAN DAL context
19342 pEventData: pointer to the event information structure
19343
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 @see
19345 @return Result of the function call
19346*/
19347WDI_Status
19348WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019349(
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 WDI_ControlBlockType* pWDICtx,
19351 WDI_EventInfoType* pEventData
19352)
19353{
19354 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019355
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019357
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19360
19361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 -------------------------------------------------------------------------*/
19364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19365 ( NULL == pEventData->pEventData))
19366 {
19367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 }
19372
19373 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19374
19375 /*-------------------------------------------------------------------------
19376 Extract response and send it to UMAC
19377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19379 pEventData->pEventData,
19380 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019381
19382 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19383 {
19384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19385 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 }
19388
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392
19393 /*Notify UMAC*/
19394 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19395
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019397}
19398
schang86c22c42013-03-13 18:41:24 -070019399 /**
19400 @brief Process Set Tx Power Rsp function (called when a response
19401 is being received over the bus from HAL)
19402
19403 @param pWDICtx: pointer to the WLAN DAL context
19404 pEventData: pointer to the event information structure
19405
19406 @see
19407 @return Result of the function call
19408*/
19409WDI_Status
19410WDI_ProcessSetTxPowerRsp
19411(
19412 WDI_ControlBlockType* pWDICtx,
19413 WDI_EventInfoType* pEventData
19414)
19415{
19416 tSetTxPwrRspMsg halTxpowerrsp;
19417 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19418 WDA_SetTxPowerRspCb wdiReqStatusCb;
19419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19420
19421 /*-------------------------------------------------------------------------
19422 Sanity check
19423 -------------------------------------------------------------------------*/
19424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19425 ( NULL == pEventData->pEventData))
19426 {
19427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19428 "%s: Invalid parameters", __func__);
19429 WDI_ASSERT(0);
19430 return WDI_STATUS_E_FAILURE;
19431 }
19432
19433 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19434
19435 /*-------------------------------------------------------------------------
19436 Extract response and send it to UMAC
19437 -------------------------------------------------------------------------*/
19438 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19439 pEventData->pEventData,
19440 sizeof(halTxpowerrsp.setTxPwrRspParams));
19441
19442 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19443 {
19444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19445 "Error status returned in Set Tx Power Response ");
19446 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19447 return WDI_STATUS_E_FAILURE;
19448 }
19449
19450 wdiSetTxPowerRspMsg.wdiStatus =
19451 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19452
19453 /*Notify UMAC*/
19454 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19455
19456 return WDI_STATUS_SUCCESS;
19457}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019458
19459/**
19460 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19461 is being received over the bus from HAL)
19462
19463 @param pWDICtx: pointer to the WLAN DAL context
19464 pEventData: pointer to the event information structure
19465
19466 @see
19467 @return Result of the function call
19468*/
19469WDI_Status
19470WDI_ProcessSetMaxTxPowerPerBandRsp
19471(
19472 WDI_ControlBlockType* pWDICtx,
19473 WDI_EventInfoType* pEventData
19474)
19475{
19476 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19477 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19478 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19480
19481 /*-------------------------------------------------------------------------
19482 Sanity check
19483 -------------------------------------------------------------------------*/
19484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19485 ( NULL == pEventData->pEventData))
19486 {
19487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19488 "%s: Invalid parameters", __func__);
19489 WDI_ASSERT(0);
19490 return WDI_STATUS_E_FAILURE;
19491 }
19492
19493 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19494
19495 /*-------------------------------------------------------------------------
19496 Extract response and send it to UMAC
19497 -------------------------------------------------------------------------*/
19498 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19499 pEventData->pEventData,
19500 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19501
19502 if (eHAL_STATUS_SUCCESS !=
19503 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19504 {
19505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19506 "Error status returned in Set Max Tx Power Per Band Response");
19507 return WDI_STATUS_E_FAILURE;
19508 }
19509
19510 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19511 WDI_HAL_2_WDI_STATUS(
19512 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19513
19514 /* Notify UMAC */
19515 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19516
19517 return WDI_STATUS_SUCCESS;
19518}
19519
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019520#ifdef FEATURE_WLAN_TDLS
19521/**
19522 @brief Process TDLS Link Establish Rsp function (called
19523 when a response is being received over the bus from HAL)
19524
19525 @param pWDICtx: pointer to the WLAN DAL context
19526 pEventData: pointer to the event information structure
19527
19528 @see
19529 @return Result of the function call
19530*/
19531WDI_Status
19532WDI_ProcessLinkEstablishReqRsp
19533(
19534 WDI_ControlBlockType* pWDICtx,
19535 WDI_EventInfoType* pEventData
19536)
19537{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019538 eHalStatus halStatus;
19539 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019540 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19541 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19542
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19544
19545 /*-------------------------------------------------------------------------
19546 Sanity check
19547 -------------------------------------------------------------------------*/
19548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData))
19550 {
19551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19552 "%s: Invalid parameters", __func__);
19553 WDI_ASSERT(0);
19554 return WDI_STATUS_E_FAILURE;
19555 }
19556
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019557 /*-------------------------------------------------------------------------
19558 Extract indication and send it to UMAC
19559 -------------------------------------------------------------------------*/
19560 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19561 pEventData->pEventData,
19562 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19563
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019564 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19565
19566 /*-------------------------------------------------------------------------
19567 Extract response and send it to UMAC
19568 -------------------------------------------------------------------------*/
19569 wpalMemoryCopy( &halStatus,
19570 pEventData->pEventData,
19571 sizeof(halStatus));
19572
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019573 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19574 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019575
19576 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019577 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019578
19579 return WDI_STATUS_SUCCESS;
19580}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019581
19582
19583
19584/**
19585 @brief Process TDLS Chan switch Rsp function (called
19586 when a response is being received over the bus from HAL)
19587
19588 @param pWDICtx: pointer to the WLAN DAL context
19589 pEventData: pointer to the event information structure
19590
19591 @see
19592 @return Result of the function call
19593*/
19594WDI_Status
19595WDI_ProcessChanSwitchReqRsp
19596(
19597 WDI_ControlBlockType* pWDICtx,
19598 WDI_EventInfoType* pEventData
19599)
19600{
19601 eHalStatus halStatus;
19602 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19603 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19604 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19605
19606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19607
19608 /*-------------------------------------------------------------------------
19609 Sanity check
19610 -------------------------------------------------------------------------*/
19611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19612 ( NULL == pEventData->pEventData))
19613 {
19614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19615 "%s: Invalid parameters", __func__);
19616 WDI_ASSERT(0);
19617 return WDI_STATUS_E_FAILURE;
19618 }
19619
19620 /*-------------------------------------------------------------------------
19621 Extract indication and send it to UMAC
19622 -------------------------------------------------------------------------*/
19623 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19624 pEventData->pEventData,
19625 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19626
19627 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19628
19629 /*-------------------------------------------------------------------------
19630 Extract response and send it to UMAC
19631 -------------------------------------------------------------------------*/
19632 wpalMemoryCopy( &halStatus,
19633 pEventData->pEventData,
19634 sizeof(halStatus));
19635
19636 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19637 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19638
19639 /*Notify UMAC*/
19640 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19641
19642 return WDI_STATUS_SUCCESS;
19643}/*WDI_ProcessChanSwitchReqRsp*/
19644
19645
19646
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019647#endif
schang86c22c42013-03-13 18:41:24 -070019648
Jeff Johnson295189b2012-06-20 16:38:30 -070019649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019652
19653 @param pWDICtx: pointer to the WLAN DAL context
19654 pEventData: pointer to the event information structure
19655
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 @see
19657 @return Result of the function call
19658*/
19659WDI_Status
19660WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019661(
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 WDI_ControlBlockType* pWDICtx,
19663 WDI_EventInfoType* pEventData
19664)
19665{
19666 WDI_Status wdiStatus;
19667 eHalStatus halStatus;
19668 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19670
19671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 -------------------------------------------------------------------------*/
19674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19675 ( NULL == pEventData->pEventData))
19676 {
19677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 }
19682
19683 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19684
19685 /*-------------------------------------------------------------------------
19686 Extract response and send it to UMAC
19687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 wpalMemoryCopy( &halStatus,
19689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 sizeof(halStatus));
19691
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
19694 /*Notify UMAC*/
19695 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19696
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019698}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019702
19703 @param pWDICtx: pointer to the WLAN DAL context
19704 pEventData: pointer to the event information structure
19705
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 @see
19707 @return Result of the function call
19708*/
19709WDI_Status
19710WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019711(
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 WDI_ControlBlockType* pWDICtx,
19713 WDI_EventInfoType* pEventData
19714)
19715{
19716 WDI_Status wdiStatus;
19717 eHalStatus halStatus;
19718 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19721
19722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 -------------------------------------------------------------------------*/
19725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19726 ( NULL == pEventData->pEventData))
19727 {
19728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 }
19733
19734 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19735
19736 /*-------------------------------------------------------------------------
19737 Extract response and send it to UMAC
19738 -------------------------------------------------------------------------*/
19739 halStatus = *((eHalStatus*)pEventData->pEventData);
19740
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019742
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019743 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19744 * Other module states are taken care by PMC.
19745 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19746 */
19747 if (wdiStatus != WDI_STATUS_SUCCESS) {
19748
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19750 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19751 halStatus);
19752 /* Call Back is not required as we are putting the DXE in FULL
19753 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019754 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19755
19756 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019758 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080019759 WDI_ASSERT(0);
19760 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 /*Notify UMAC*/
19763 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19764
Jeff Johnsone7245742012-09-05 17:12:55 -070019765 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019766}/*WDI_ProcessEnterImpsRsp*/
19767
19768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019769 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019771
19772 @param pWDICtx: pointer to the WLAN DAL context
19773 pEventData: pointer to the event information structure
19774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 @see
19776 @return Result of the function call
19777*/
19778WDI_Status
19779WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019780(
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 WDI_ControlBlockType* pWDICtx,
19782 WDI_EventInfoType* pEventData
19783)
19784{
19785 WDI_Status wdiStatus;
19786 eHalStatus halStatus;
19787 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019788 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19790
19791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 -------------------------------------------------------------------------*/
19794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19795 ( NULL == pEventData->pEventData))
19796 {
19797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 }
19802
19803 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19804
19805 /*-------------------------------------------------------------------------
19806 Extract response and send it to UMAC
19807 -------------------------------------------------------------------------*/
19808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019810
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019811 if (halStatus != eHAL_STATUS_SUCCESS)
19812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19813 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19814
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019816 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19817 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19818 {
19819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019820 "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 -080019821 WDI_ASSERT(0);
19822 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 /*Notify UMAC*/
19824 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19825
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019827}/*WDI_ProcessExitImpsRsp*/
19828
19829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019830 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019832
19833 @param pWDICtx: pointer to the WLAN DAL context
19834 pEventData: pointer to the event information structure
19835
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 @see
19837 @return Result of the function call
19838*/
19839WDI_Status
19840WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019841(
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 WDI_ControlBlockType* pWDICtx,
19843 WDI_EventInfoType* pEventData
19844)
19845{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019846 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19847 tHalEnterBmpsRspParams halEnterBmpsRsp;
19848 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19849 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019850 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19852
19853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 -------------------------------------------------------------------------*/
19856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19857 ( NULL == pEventData->pEventData))
19858 {
19859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 }
19864
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019866 Extract response and send it to UMAC
19867 -------------------------------------------------------------------------*/
19868 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19869 {
19870 wpalMemoryCopy( &halEnterBmpsRsp,
19871 pEventData->pEventData,
19872 sizeof(halEnterBmpsRsp));
19873
19874 //Used to print debug message
19875 halStatus = halEnterBmpsRsp.status;
19876 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19877 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19878 }
19879 else
19880 {
19881 halStatus = *((eHalStatus*)pEventData->pEventData);
19882 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19883 }
19884
19885 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019886
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019887 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19888 * Other module states are taken care by PMC.
19889 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19890 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019891 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19892 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019893
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019895 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19896 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019897 /* Call Back is not required as we are putting the DXE in FULL
19898 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019899 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19900 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19901 {
19902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019903 "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 -080019904 WDI_ASSERT(0);
19905 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019906 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019907 }
19908
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019910 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019911
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019913}/*WDI_ProcessEnterBmpsRsp*/
19914
19915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019918
19919 @param pWDICtx: pointer to the WLAN DAL context
19920 pEventData: pointer to the event information structure
19921
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 @see
19923 @return Result of the function call
19924*/
19925WDI_Status
19926WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019927(
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 WDI_ControlBlockType* pWDICtx,
19929 WDI_EventInfoType* pEventData
19930)
19931{
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 eHalStatus halStatus;
19933 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019934 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019935 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19936 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19938
19939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 -------------------------------------------------------------------------*/
19942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19943 ( NULL == pEventData->pEventData))
19944 {
19945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 }
19950
19951 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19952
19953 /*-------------------------------------------------------------------------
19954 Extract response and send it to UMAC
19955 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019956
19957 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19958 {
19959 wpalMemoryCopy( &halExitBmpsRsp,
19960 pEventData->pEventData,
19961 sizeof(halExitBmpsRsp));
19962
19963 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19964 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19965 }
19966 else
19967 {
19968 halStatus = *((eHalStatus*)pEventData->pEventData);
19969 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19970 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019971
19972 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019973 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19974 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19975 {
19976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019977 "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 -080019978 WDI_ASSERT(0);
19979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19981
19982 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019983 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986}/*WDI_ProcessExitBmpsRsp*/
19987
19988/**
19989 @brief Process Enter UAPSD Rsp function (called when a response
19990 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019991
19992 @param pWDICtx: pointer to the WLAN DAL context
19993 pEventData: pointer to the event information structure
19994
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 @see
19996 @return Result of the function call
19997*/
19998WDI_Status
19999WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020000(
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 WDI_ControlBlockType* pWDICtx,
20002 WDI_EventInfoType* pEventData
20003)
20004{
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020006 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020008 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20009
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20011
20012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 -------------------------------------------------------------------------*/
20015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20016 ( NULL == pEventData->pEventData))
20017 {
20018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 }
20023
20024 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20025
20026 /*-------------------------------------------------------------------------
20027 Extract response and send it to UMAC
20028 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020029 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20030 {
20031 wpalMemoryCopy( &halEnterUapsdRsp,
20032 pEventData->pEventData,
20033 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020034
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020035 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20036 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20037 }
20038 else
20039 {
20040 halStatus = *((eHalStatus*)pEventData->pEventData);
20041 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20042 }
20043
20044 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 {
20046 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20047 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20048 // the traffic to decide when to suspend the trigger frames when there is no traffic
20049 // activity on the trigger enabled ACs
20050 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20051
20052#ifdef WLAN_PERF
20053 // Increment the BD signature to refresh the fast path BD utilization
20054 pWDICtx->uBdSigSerialNum++;
20055#endif
20056 }
20057
20058 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062}/*WDI_ProcessEnterUapsdRsp*/
20063
20064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 @param pWDICtx: pointer to the WLAN DAL context
20069 pEventData: pointer to the event information structure
20070
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 @see
20072 @return Result of the function call
20073*/
20074WDI_Status
20075WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020076(
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 WDI_ControlBlockType* pWDICtx,
20078 WDI_EventInfoType* pEventData
20079)
20080{
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 eHalStatus halStatus;
20082 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020083 tHalExitUapsdRspParams halExitUapsdRsp;
20084 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20086
20087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 -------------------------------------------------------------------------*/
20090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20091 ( NULL == pEventData->pEventData))
20092 {
20093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 }
20098
20099 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20100
20101 /*-------------------------------------------------------------------------
20102 Extract response and send it to UMAC
20103 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020104 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20105 {
20106 wpalMemoryCopy( &halExitUapsdRsp,
20107 pEventData->pEventData,
20108 sizeof(halExitUapsdRsp));
20109
20110 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20111 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20112 }
20113 else
20114 {
20115 halStatus = *((eHalStatus*)pEventData->pEventData);
20116 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20119 // directly instead of the FW WQ.
20120 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20121
20122#ifdef WLAN_PERF
20123 // Increment the BD signature to refresh the fast path BD utilization
20124 pWDICtx->uBdSigSerialNum++;
20125#endif
20126
20127 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020128 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020129
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020131}/*WDI_ProcessExitUapsdRsp*/
20132
20133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020134 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020136
20137 @param pWDICtx: pointer to the WLAN DAL context
20138 pEventData: pointer to the event information structure
20139
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 @see
20141 @return Result of the function call
20142*/
20143WDI_Status
20144WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020145(
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 WDI_ControlBlockType* pWDICtx,
20147 WDI_EventInfoType* pEventData
20148)
20149{
20150 WDI_Status wdiStatus;
20151 eHalStatus halStatus;
20152 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20154
20155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 -------------------------------------------------------------------------*/
20158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20159 ( NULL == pEventData->pEventData))
20160 {
20161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 }
20166
20167 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20168
20169 /*-------------------------------------------------------------------------
20170 Extract response and send it to UMAC
20171 -------------------------------------------------------------------------*/
20172 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020174
20175 /*Notify UMAC*/
20176 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20177
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179}/*WDI_ProcessSetUapsdAcParamsRsp*/
20180
20181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020184
20185 @param pWDICtx: pointer to the WLAN DAL context
20186 pEventData: pointer to the event information structure
20187
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 @see
20189 @return Result of the function call
20190*/
20191WDI_Status
20192WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020193(
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 WDI_ControlBlockType* pWDICtx,
20195 WDI_EventInfoType* pEventData
20196)
20197{
20198 WDI_Status wdiStatus;
20199 eHalStatus halStatus;
20200 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20202
20203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 -------------------------------------------------------------------------*/
20206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20207 ( NULL == pEventData->pEventData))
20208 {
20209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 }
20214
20215 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20216
20217 /*-------------------------------------------------------------------------
20218 Extract response and send it to UMAC
20219 -------------------------------------------------------------------------*/
20220 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
20223 /*Notify UMAC*/
20224 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20225
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227}/*WDI_ProcessUpdateUapsdParamsRsp*/
20228
20229/**
20230 @brief Process Configure RXP filter Rsp function (called when a
20231 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020232
20233 @param pWDICtx: pointer to the WLAN DAL context
20234 pEventData: pointer to the event information structure
20235
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 @see
20237 @return Result of the function call
20238*/
20239WDI_Status
20240WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020241(
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ControlBlockType* pWDICtx,
20243 WDI_EventInfoType* pEventData
20244)
20245{
20246 WDI_Status wdiStatus;
20247 eHalStatus halStatus;
20248 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20250
20251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 -------------------------------------------------------------------------*/
20254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20255 ( NULL == pEventData->pEventData))
20256 {
20257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 }
20262
20263 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20264
20265 /*-------------------------------------------------------------------------
20266 Extract response and send it to UMAC
20267 -------------------------------------------------------------------------*/
20268 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020270
20271 /*Notify UMAC*/
20272 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275}/*WDI_ProcessConfigureRxpFilterRsp*/
20276
20277/**
20278 @brief Process Set beacon filter Rsp function (called when a
20279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020280
20281 @param pWDICtx: pointer to the WLAN DAL context
20282 pEventData: pointer to the event information structure
20283
Jeff Johnson295189b2012-06-20 16:38:30 -070020284 @see
20285 @return Result of the function call
20286*/
20287WDI_Status
20288WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020289(
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 WDI_ControlBlockType* pWDICtx,
20291 WDI_EventInfoType* pEventData
20292)
20293{
20294 WDI_Status wdiStatus;
20295 eHalStatus halStatus;
20296 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20298
20299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 -------------------------------------------------------------------------*/
20302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20303 ( NULL == pEventData->pEventData))
20304 {
20305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 }
20310
20311 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20312
20313 /*-------------------------------------------------------------------------
20314 Extract response and send it to UMAC
20315 -------------------------------------------------------------------------*/
20316 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020318
20319 /*Notify UMAC*/
20320 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20321
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020323}/*WDI_ProcessSetBeaconFilterRsp*/
20324
20325/**
20326 @brief Process remove beacon filter Rsp function (called when a
20327 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020328
20329 @param pWDICtx: pointer to the WLAN DAL context
20330 pEventData: pointer to the event information structure
20331
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 @see
20333 @return Result of the function call
20334*/
20335WDI_Status
20336WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020337(
Jeff Johnson295189b2012-06-20 16:38:30 -070020338 WDI_ControlBlockType* pWDICtx,
20339 WDI_EventInfoType* pEventData
20340)
20341{
20342 WDI_Status wdiStatus;
20343 eHalStatus halStatus;
20344 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20346
20347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 -------------------------------------------------------------------------*/
20350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20351 ( NULL == pEventData->pEventData))
20352 {
20353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 }
20358
20359 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20360
20361 /*-------------------------------------------------------------------------
20362 Extract response and send it to UMAC
20363 -------------------------------------------------------------------------*/
20364 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020366
20367 /*Notify UMAC*/
20368 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20369
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020371}/*WDI_ProcessRemBeaconFilterRsp*/
20372
20373/**
20374 @brief Process set RSSI thresholds Rsp function (called when a
20375 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020376
20377 @param pWDICtx: pointer to the WLAN DAL context
20378 pEventData: pointer to the event information structure
20379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 @see
20381 @return Result of the function call
20382*/
20383WDI_Status
20384WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020385(
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ControlBlockType* pWDICtx,
20387 WDI_EventInfoType* pEventData
20388)
20389{
20390 WDI_Status wdiStatus;
20391 eHalStatus halStatus;
20392 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20394
20395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 -------------------------------------------------------------------------*/
20398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20399 ( NULL == pEventData->pEventData))
20400 {
20401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 }
20406
20407 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20408
20409 /*-------------------------------------------------------------------------
20410 Extract response and send it to UMAC
20411 -------------------------------------------------------------------------*/
20412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
20415 /*Notify UMAC*/
20416 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419}/*WDI_ProcessSetRSSIThresoldsRsp*/
20420
20421/**
20422 @brief Process host offload Rsp function (called when a
20423 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020424
20425 @param pWDICtx: pointer to the WLAN DAL context
20426 pEventData: pointer to the event information structure
20427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @see
20429 @return Result of the function call
20430*/
20431WDI_Status
20432WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020433(
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 WDI_ControlBlockType* pWDICtx,
20435 WDI_EventInfoType* pEventData
20436)
20437{
20438 WDI_Status wdiStatus;
20439 eHalStatus halStatus;
20440 WDI_HostOffloadCb wdiHostOffloadCb;
20441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20442
20443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 -------------------------------------------------------------------------*/
20446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20447 ( NULL == pEventData->pEventData))
20448 {
20449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 }
20454
20455 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20456
20457 /*-------------------------------------------------------------------------
20458 Extract response and send it to UMAC
20459 -------------------------------------------------------------------------*/
20460 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020462
20463 /*Notify UMAC*/
20464 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20465
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020467}/*WDI_ProcessHostOffloadRsp*/
20468
20469/**
20470 @brief Process keep alive Rsp function (called when a
20471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474 pEventData: pointer to the event information structure
20475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 @see
20477 @return Result of the function call
20478*/
20479WDI_Status
20480WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020481(
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 WDI_ControlBlockType* pWDICtx,
20483 WDI_EventInfoType* pEventData
20484)
20485{
20486 WDI_Status wdiStatus;
20487 eHalStatus halStatus;
20488 WDI_KeepAliveCb wdiKeepAliveCb;
20489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20491 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20492
20493
20494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 -------------------------------------------------------------------------*/
20497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20498 ( NULL == pEventData->pEventData))
20499 {
20500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 }
20505
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20507
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 /*-------------------------------------------------------------------------
20509 Extract response and send it to UMAC
20510 -------------------------------------------------------------------------*/
20511 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020513
20514 /*Notify UMAC*/
20515 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20516
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020518}/*WDI_ProcessKeepAliveRsp*/
20519
20520/**
20521 @brief Process wowl add ptrn Rsp function (called when a
20522 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020523
20524 @param pWDICtx: pointer to the WLAN DAL context
20525 pEventData: pointer to the event information structure
20526
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 @see
20528 @return Result of the function call
20529*/
20530WDI_Status
20531WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020532(
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 WDI_ControlBlockType* pWDICtx,
20534 WDI_EventInfoType* pEventData
20535)
20536{
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 eHalStatus halStatus;
20538 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020539 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20540 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20541
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20543
20544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 -------------------------------------------------------------------------*/
20547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20548 ( NULL == pEventData->pEventData))
20549 {
20550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 }
20555
20556 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20557
20558 /*-------------------------------------------------------------------------
20559 Extract response and send it to UMAC
20560 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020561 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20562 {
20563 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20564 pEventData->pEventData,
20565 sizeof(halAddWowlBcastPtrRsp));
20566
20567 wdiWowlAddBcPtrRsp.wdiStatus =
20568 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20569 }
20570 else
20571 {
20572 halStatus = *((eHalStatus*)pEventData->pEventData);
20573 wdiWowlAddBcPtrRsp.wdiStatus =
20574 WDI_HAL_2_WDI_STATUS(halStatus);
20575 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020576
20577 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020578 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581}/*WDI_ProcessWowlAddBcPtrnRsp*/
20582
20583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020586
20587 @param pWDICtx: pointer to the WLAN DAL context
20588 pEventData: pointer to the event information structure
20589
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 @see
20591 @return Result of the function call
20592*/
20593WDI_Status
20594WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020595(
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 WDI_ControlBlockType* pWDICtx,
20597 WDI_EventInfoType* pEventData
20598)
20599{
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 eHalStatus halStatus;
20601 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020602 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20603 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20605
20606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 -------------------------------------------------------------------------*/
20609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20610 ( NULL == pEventData->pEventData))
20611 {
20612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 }
20617
20618 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20619
20620 /*-------------------------------------------------------------------------
20621 Extract response and send it to UMAC
20622 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020623 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20624 {
20625 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20626 pEventData->pEventData,
20627 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020629 wdiWowlDelBcstPtrRsp.wdiStatus =
20630 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20631 }
20632 else
20633 {
20634 halStatus = *((eHalStatus*)pEventData->pEventData);
20635 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20636 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020638 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020639
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641}/*WDI_ProcessWowlDelBcPtrnRsp*/
20642
20643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020646
20647 @param pWDICtx: pointer to the WLAN DAL context
20648 pEventData: pointer to the event information structure
20649
Jeff Johnson295189b2012-06-20 16:38:30 -070020650 @see
20651 @return Result of the function call
20652*/
20653WDI_Status
20654WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020655(
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 WDI_ControlBlockType* pWDICtx,
20657 WDI_EventInfoType* pEventData
20658)
20659{
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 eHalStatus halStatus;
20661 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020662 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20663 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20665
20666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 -------------------------------------------------------------------------*/
20669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20670 ( NULL == pEventData->pEventData))
20671 {
20672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 }
20677
20678 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20679
20680 /*-------------------------------------------------------------------------
20681 Extract response and send it to UMAC
20682 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020683 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20684 {
20685 wpalMemoryCopy( &halEnterWowlRspParams,
20686 (wpt_uint8*)pEventData->pEventData,
20687 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020688
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020689 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20690 wdiwowlEnterRsp.status =
20691 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20692 }
20693 else
20694 {
20695 halStatus = *((eHalStatus*)pEventData->pEventData);
20696 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20697 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020699 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020700
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020702}/*WDI_ProcessWowlEnterRsp*/
20703
20704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020707
20708 @param pWDICtx: pointer to the WLAN DAL context
20709 pEventData: pointer to the event information structure
20710
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 @see
20712 @return Result of the function call
20713*/
20714WDI_Status
20715WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020716(
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 WDI_ControlBlockType* pWDICtx,
20718 WDI_EventInfoType* pEventData
20719)
20720{
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 eHalStatus halStatus;
20722 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020723 tHalExitWowlRspParams halExitWowlRspParams;
20724 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20725
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20727
20728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 -------------------------------------------------------------------------*/
20731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20732 ( NULL == pEventData->pEventData))
20733 {
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 }
20739
20740 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20741
20742 /*-------------------------------------------------------------------------
20743 Extract response and send it to UMAC
20744 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020745 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20746 {
20747 wpalMemoryCopy( &halExitWowlRspParams,
20748 pEventData->pEventData,
20749 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020751 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20752 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20753
20754 }
20755 else
20756 {
20757 halStatus = *((eHalStatus*)pEventData->pEventData);
20758 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20759 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020761 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020762
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020764}/*WDI_ProcessWowlExitRsp*/
20765
20766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 (called when a response is being received over the bus
20769 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020770
20771 @param pWDICtx: pointer to the WLAN DAL context
20772 pEventData: pointer to the event information structure
20773
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 @see
20775 @return Result of the function call
20776*/
20777WDI_Status
20778WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020779(
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 WDI_ControlBlockType* pWDICtx,
20781 WDI_EventInfoType* pEventData
20782)
20783{
20784 WDI_Status wdiStatus;
20785 eHalStatus halStatus;
20786 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20788
20789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 -------------------------------------------------------------------------*/
20792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20793 ( NULL == pEventData->pEventData))
20794 {
20795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 }
20800
20801 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20802
20803 /*-------------------------------------------------------------------------
20804 Extract response and send it to UMAC
20805 -------------------------------------------------------------------------*/
20806 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020808
20809 /*Notify UMAC*/
20810 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20811
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020813}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20814
20815
20816/**
20817 @brief Process Nv download(called when a response
20818 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020819
20820 @param pWDICtx: pointer to the WLAN DAL context
20821 pEventData: pointer to the event information structure
20822
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 @see
20824 @return Result of the function call
20825*/
20826WDI_Status
20827WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020828(
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 WDI_ControlBlockType* pWDICtx,
20830 WDI_EventInfoType* pEventData
20831)
20832{
20833
20834 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20835 tHalNvImgDownloadRspParams halNvDownloadRsp;
20836 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20837
20838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 -------------------------------------------------------------------------*/
20841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20842 ( NULL == pEventData->pEventData))
20843 {
20844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 }
20849
20850 /*-------------------------------------------------------------------------
20851 Extract response and send it to UMAC
20852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 wpalMemoryCopy( &halNvDownloadRsp,
20854 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 sizeof(halNvDownloadRsp));
20856
20857 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20858
20859 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20861 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 {
20863 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 }
20866 else
20867 {
20868 /*Reset the Nv related global information in WDI context information */
20869 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20870 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20871 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20872 /*call WDA callback function for last fragment */
20873 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20874 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20875 }
20876
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878}
20879#ifdef WLAN_FEATURE_VOWIFI_11R
20880/**
20881 @brief Process Add TSpec Rsp function (called when a response
20882 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
20884 @param pWDICtx: pointer to the WLAN DAL context
20885 pEventData: pointer to the event information structure
20886
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 @see
20888 @return Result of the function call
20889*/
20890WDI_Status
20891WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020892(
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 WDI_ControlBlockType* pWDICtx,
20894 WDI_EventInfoType* pEventData
20895)
20896{
20897 WDI_Status wdiStatus;
20898 tAggrAddTsRspParams aggrAddTsRsp;
20899 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20901
20902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 -------------------------------------------------------------------------*/
20905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20906 ( NULL == pEventData->pEventData))
20907 {
20908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 }
20913
20914 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20915
20916 /*-------------------------------------------------------------------------
20917 Extract response and send it to UMAC
20918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 wpalMemoryCopy( &aggrAddTsRsp,
20920 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 sizeof(aggrAddTsRsp));
20922
20923 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020925
20926 /*Notify UMAC*/
20927 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20928
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930}/*WDI_ProcessAddTSpecRsp*/
20931#endif /* WLAN_FEATURE_VOWIFI_11R */
20932
20933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020936
20937 @param pWDICtx: pointer to the WLAN DAL context
20938 pEventData: pointer to the event information structure
20939
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 @see
20941 @return Result of the function call
20942*/
20943WDI_Status
20944WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020945(
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 WDI_ControlBlockType* pWDICtx,
20947 WDI_EventInfoType* pEventData
20948)
20949{
20950 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20951 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20952 tHalHostResumeRspParams hostResumeRspMsg;
20953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20954
20955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 -------------------------------------------------------------------------*/
20958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20959 ( NULL == pEventData->pEventData))
20960 {
20961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 }
20966
20967 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20968
20969 /*-------------------------------------------------------------------------
20970 Extract response and send it to UMAC
20971 -------------------------------------------------------------------------*/
20972
Jeff Johnsone7245742012-09-05 17:12:55 -070020973 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 (wpt_uint8*)pEventData->pEventData,
20975 sizeof(hostResumeRspMsg));
20976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 wdiResumeRspParams.wdiStatus =
20978 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020979
20980 /*Notify UMAC*/
20981 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20982
20983 return WDI_STATUS_SUCCESS;
20984}
20985
20986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020989
20990 @param pWDICtx: pointer to the WLAN DAL context
20991 pEventData: pointer to the event information structure
20992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 @see
20994 @return Result of the function call
20995*/
20996WDI_Status
20997WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020998(
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 WDI_ControlBlockType* pWDICtx,
21000 WDI_EventInfoType* pEventData
21001)
21002{
21003 WDI_Status wdiStatus;
21004 eHalStatus halStatus;
21005 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21007
21008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 -------------------------------------------------------------------------*/
21011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21012 ( NULL == pEventData->pEventData))
21013 {
21014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021019
21020 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
21022 /*-------------------------------------------------------------------------
21023 Extract response and send it to UMAC
21024 -------------------------------------------------------------------------*/
21025 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021027
21028 /*Notify UMAC*/
21029 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21030
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021032}/*WDI_ProcessSetTxPerTrackingRsp*/
21033
21034/*==========================================================================
21035 Indications from HAL
21036 ==========================================================================*/
21037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 indication of this kind is being received over the bus
21040 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021041
21042 @param pWDICtx: pointer to the WLAN DAL context
21043 pEventData: pointer to the event information structure
21044
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 @see
21046 @return Result of the function call
21047*/
21048WDI_Status
21049WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021050(
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 WDI_ControlBlockType* pWDICtx,
21052 WDI_EventInfoType* pEventData
21053)
21054{
21055 WDI_LowLevelIndType wdiInd;
21056 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21058
21059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 -------------------------------------------------------------------------*/
21062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21063 ( NULL == pEventData->pEventData))
21064 {
21065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 }
21070
21071 /*-------------------------------------------------------------------------
21072 Extract indication and send it to UMAC
21073 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21075 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 sizeof(tHalRSSINotification));
21077
21078 /*Fill in the indication parameters*/
21079 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21080 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21081 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21082 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21083 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21084 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21085 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21086 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21087 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21088 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21089 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21090 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21091 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021092 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21093 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021094
ltimariub77f24b2013-01-24 18:54:33 -080021095 if ( pWDICtx->wdiLowLevelIndCB )
21096 {
21097 /*Notify UMAC of indication*/
21098 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21099 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021100
21101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021102}/*WDI_ProcessLowRSSIInd*/
21103
21104
21105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 an indication of this kind is being received over the
21108 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
21110 @param pWDICtx: pointer to the WLAN DAL context
21111 pEventData: pointer to the event information structure
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 @see
21114 @return Result of the function call
21115*/
21116WDI_Status
21117WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021118(
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 WDI_ControlBlockType* pWDICtx,
21120 WDI_EventInfoType* pEventData
21121)
21122{
21123 WDI_Status wdiStatus;
21124 eHalStatus halStatus;
21125 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021126 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21128
21129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 -------------------------------------------------------------------------*/
21132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21133 ( NULL == pEventData->pEventData))
21134 {
21135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021140 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 /*-------------------------------------------------------------------------
21142 Extract indication and send it to UMAC
21143 -------------------------------------------------------------------------*/
21144 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21145 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021147
21148 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021149 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021150 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21151 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021152 if ( pWDICtx->wdiLowLevelIndCB )
21153 {
21154 /*Notify UMAC*/
21155 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21156 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021157
21158 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021159}/*WDI_ProcessMissedBeaconInd*/
21160
21161
21162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 an indication of this kind is being received over the
21165 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021166
21167 @param pWDICtx: pointer to the WLAN DAL context
21168 pEventData: pointer to the event information structure
21169
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 @see
21171 @return Result of the function call
21172*/
21173WDI_Status
21174WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021175(
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 WDI_ControlBlockType* pWDICtx,
21177 WDI_EventInfoType* pEventData
21178)
21179{
21180 WDI_Status wdiStatus;
21181 eHalStatus halStatus;
21182 WDI_LowLevelIndType wdiInd;
21183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21184
21185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 -------------------------------------------------------------------------*/
21188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21189 ( NULL == pEventData->pEventData))
21190 {
21191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 }
21196
21197 /*-------------------------------------------------------------------------
21198 Extract indication and send it to UMAC
21199 -------------------------------------------------------------------------*/
21200 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21201 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021203
21204 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 /* ! TO DO - fill in from HAL struct:
21207 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21208
ltimariub77f24b2013-01-24 18:54:33 -080021209 if ( pWDICtx->wdiLowLevelIndCB )
21210 {
21211 /*Notify UMAC*/
21212 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21213 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021214
21215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021216}/*WDI_ProcessUnkAddrFrameInd*/
21217
21218
21219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 indication of this kind is being received over the bus
21222 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021223
21224 @param pWDICtx: pointer to the WLAN DAL context
21225 pEventData: pointer to the event information structure
21226
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 @see
21228 @return Result of the function call
21229*/
21230WDI_Status
21231WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021232(
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 WDI_ControlBlockType* pWDICtx,
21234 WDI_EventInfoType* pEventData
21235)
21236{
21237 WDI_LowLevelIndType wdiInd;
21238 tpSirMicFailureInd pHalMicFailureInd;
21239
21240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21241
21242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 -------------------------------------------------------------------------*/
21245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21246 ( NULL == pEventData->pEventData))
21247 {
21248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021253
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21255 /*-------------------------------------------------------------------------
21256 Extract indication and send it to UMAC
21257 -------------------------------------------------------------------------*/
21258
21259 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21262 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21263 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21264 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21265 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21266 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21267 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21268 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 pHalMicFailureInd->info.keyId;
21275 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21276 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21277 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21278 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021279
21280 if ( pWDICtx->wdiLowLevelIndCB )
21281 {
21282 /*Notify UMAC*/
21283 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21284 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021285
21286 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021287}/*WDI_ProcessMicFailureInd*/
21288
21289
21290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 an indication of this kind is being received over the
21293 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021294
21295 @param pWDICtx: pointer to the WLAN DAL context
21296 pEventData: pointer to the event information structure
21297
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 @see
21299 @return Result of the function call
21300*/
21301WDI_Status
21302WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021303(
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 WDI_ControlBlockType* pWDICtx,
21305 WDI_EventInfoType* pEventData
21306)
21307{
21308 WDI_Status wdiStatus;
21309 eHalStatus halStatus;
21310 WDI_LowLevelIndType wdiInd;
21311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21312
21313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 -------------------------------------------------------------------------*/
21316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21317 ( NULL == pEventData->pEventData))
21318 {
21319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 }
21324
21325 /*-------------------------------------------------------------------------
21326 Extract indication and send it to UMAC
21327 -------------------------------------------------------------------------*/
21328
21329 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021332
21333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21334 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021335
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21338 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339
ltimariub77f24b2013-01-24 18:54:33 -080021340 if ( pWDICtx->wdiLowLevelIndCB )
21341 {
21342 /*Notify UMAC*/
21343 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21344 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021345
21346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347}/*WDI_ProcessFatalErrorInd*/
21348
21349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 an indication of this kind is being received over the
21352 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021353
21354 @param pWDICtx: pointer to the WLAN DAL context
21355 pEventData: pointer to the event information structure
21356
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 @see
21358 @return Result of the function call
21359*/
21360WDI_Status
21361WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021362(
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 WDI_ControlBlockType* pWDICtx,
21364 WDI_EventInfoType* pEventData
21365)
21366{
21367 tDeleteStaContextParams halDelSTACtx;
21368 WDI_LowLevelIndType wdiInd;
21369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21370
21371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 -------------------------------------------------------------------------*/
21374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21375 ( NULL == pEventData->pEventData))
21376 {
21377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 }
21382
21383 /*-------------------------------------------------------------------------
21384 Extract indication and send it to UMAC
21385 -------------------------------------------------------------------------*/
21386
21387 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 wpalMemoryCopy( &halDelSTACtx,
21389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021390 sizeof(halDelSTACtx));
21391
21392 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021393 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021394
21395 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21396 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21397 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21398 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21399
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021402 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21405 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021406
ltimariub77f24b2013-01-24 18:54:33 -080021407 if ( pWDICtx->wdiLowLevelIndCB )
21408 {
21409 /*Notify UMAC*/
21410 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21411 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021412
21413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021414}/*WDI_ProcessDelSTAInd*/
21415
21416/**
21417*@brief Process Coex Indication function (called when
21418 an indication of this kind is being received over the
21419 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021420
21421 @param pWDICtx: pointer to the WLAN DAL context
21422 pEventData: pointer to the event information structure
21423
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 @see
21425 @return Result of the function call
21426*/
21427WDI_Status
21428WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021429(
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 WDI_ControlBlockType* pWDICtx,
21431 WDI_EventInfoType* pEventData
21432)
21433{
21434 WDI_LowLevelIndType wdiInd;
21435 tCoexIndMsg halCoexIndMsg;
21436 wpt_uint32 index;
21437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21438
21439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 -------------------------------------------------------------------------*/
21442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21443 ( NULL == pEventData->pEventData ))
21444 {
21445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 }
21450
21451 /*-------------------------------------------------------------------------
21452 Extract indication and send it to UMAC
21453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 sizeof(halCoexIndMsg.coexIndParams) );
21457
21458 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 wdiInd.wdiIndicationType = WDI_COEX_IND;
21460 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21462 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 }
21465
21466 // DEBUG
21467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21468 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21470 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21471 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21472 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21473 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021474
ltimariub77f24b2013-01-24 18:54:33 -080021475 if ( pWDICtx->wdiLowLevelIndCB )
21476 {
21477 /*Notify UMAC*/
21478 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21479 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021480
21481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482}/*WDI_ProcessCoexInd*/
21483
21484/**
21485*@brief Process Tx Complete Indication function (called when
21486 an indication of this kind is being received over the
21487 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021488
21489 @param pWDICtx: pointer to the WLAN DAL context
21490 pEventData: pointer to the event information structure
21491
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 @see
21493 @return Result of the function call
21494*/
21495WDI_Status
21496WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021497(
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 WDI_ControlBlockType* pWDICtx,
21499 WDI_EventInfoType* pEventData
21500)
21501{
21502 WDI_LowLevelIndType wdiInd;
21503 tTxComplIndMsg halTxComplIndMsg;
21504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21505
21506 /*-------------------------------------------------------------------------
21507 Sanity check
21508 -------------------------------------------------------------------------*/
21509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21510 ( NULL == pEventData->pEventData ))
21511 {
21512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 WDI_ASSERT( 0 );
21515 return WDI_STATUS_E_FAILURE;
21516 }
21517
21518 /*-------------------------------------------------------------------------
21519 Extract indication and send it to UMAC
21520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21522 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 sizeof(halTxComplIndMsg.txComplParams) );
21524
21525 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021527
21528 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21529 &halTxComplIndMsg.txComplParams,
21530 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021531
ltimariub77f24b2013-01-24 18:54:33 -080021532 if ( pWDICtx->wdiLowLevelIndCB )
21533 {
21534 /*Notify UMAC*/
21535 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021537
21538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021540#ifdef FEATURE_WLAN_TDLS
21541/**
21542*@brief Process TDLS Indication function (called when
21543 an indication of this kind is being received over the
21544 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021545
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021546 @param pWDICtx: pointer to the WLAN DAL context
21547 pEventData: pointer to the event information structure
21548
21549 @see
21550 @return Result of the function call
21551*/
21552WDI_Status
21553WDI_ProcessTdlsInd
21554(
21555 WDI_ControlBlockType* pWDICtx,
21556 WDI_EventInfoType* pEventData
21557)
21558{
21559 WDI_LowLevelIndType wdiInd;
21560 tTdlsIndMsg halTdlsIndMsg;
21561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21562
21563 /*-------------------------------------------------------------------------
21564 Sanity check
21565 -------------------------------------------------------------------------*/
21566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21567 ( NULL == pEventData->pEventData ))
21568 {
21569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21570 "%s: Invalid parameters", __func__);
21571 WDI_ASSERT( 0 );
21572 return WDI_STATUS_E_FAILURE;
21573 }
21574
21575 /*-------------------------------------------------------------------------
21576 Extract indication and send it to UMAC
21577 -------------------------------------------------------------------------*/
21578 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21579 pEventData->pEventData,
21580 sizeof(halTdlsIndMsg.tdlsIndParams) );
21581
21582 /*Fill in the indication parameters*/
21583 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21584
21585 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21586 = halTdlsIndMsg.tdlsIndParams.status;
21587
21588 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21589 = halTdlsIndMsg.tdlsIndParams.staIdx;
21590
21591 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21592 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21593
Atul Mittalbb2aad02014-09-22 19:09:36 +053021594 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21595 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021596 /*Notify UMAC*/
21597 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21598
21599 return WDI_STATUS_SUCCESS;
21600}/*WDI_ProcessTdlsInd*/
21601#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021602/**
Viral Modid86bde22012-12-10 13:09:21 -080021603*@brief Process Noa Start Indication function (called when
21604 an indication of this kind is being received over the
21605 bus from HAL)
21606
21607 @param pWDICtx: pointer to the WLAN DAL context
21608 pEventData: pointer to the event information structure
21609
21610 @see
21611 @return Result of the function call
21612*/
21613WDI_Status
21614WDI_ProcessP2pNoaStartInd
21615(
21616 WDI_ControlBlockType* pWDICtx,
21617 WDI_EventInfoType* pEventData
21618)
21619{
21620 WDI_LowLevelIndType wdiInd;
21621 tNoaStartIndMsg halNoaStartIndMsg;
21622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21623
21624 /*-------------------------------------------------------------------------
21625 Sanity check
21626 -------------------------------------------------------------------------*/
21627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21628 ( NULL == pEventData->pEventData ))
21629 {
21630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21631 "%s: Invalid parameters", __func__);
21632 WDI_ASSERT( 0 );
21633 return WDI_STATUS_E_FAILURE;
21634 }
21635
21636 /*-------------------------------------------------------------------------
21637 Extract indication and send it to UMAC
21638 -------------------------------------------------------------------------*/
21639 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21640 pEventData->pEventData,
21641 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21642
21643 /*Fill in the indication parameters*/
21644 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21645
21646 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21647 = halNoaStartIndMsg.noaStartIndParams.status;
21648
21649 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21650 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21651
21652 /*Notify UMAC*/
21653 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21654
21655 return WDI_STATUS_SUCCESS;
21656}/*WDI_ProcessNoaAttrInd*/
21657
21658/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021659*@brief Process Noa Attr Indication function (called when
21660 an indication of this kind is being received over the
21661 bus from HAL)
21662
21663 @param pWDICtx: pointer to the WLAN DAL context
21664 pEventData: pointer to the event information structure
21665
21666 @see
21667 @return Result of the function call
21668*/
21669WDI_Status
21670WDI_ProcessP2pNoaAttrInd
21671(
21672 WDI_ControlBlockType* pWDICtx,
21673 WDI_EventInfoType* pEventData
21674)
21675{
21676 WDI_LowLevelIndType wdiInd;
21677 tNoaAttrIndMsg halNoaAttrIndMsg;
21678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21679
21680 /*-------------------------------------------------------------------------
21681 Sanity check
21682 -------------------------------------------------------------------------*/
21683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21684 ( NULL == pEventData->pEventData ))
21685 {
21686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 WDI_ASSERT( 0 );
21689 return WDI_STATUS_E_FAILURE;
21690 }
21691
21692 /*-------------------------------------------------------------------------
21693 Extract indication and send it to UMAC
21694 -------------------------------------------------------------------------*/
21695 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21696 pEventData->pEventData,
21697 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21698
21699 /*Fill in the indication parameters*/
21700 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21703 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021704
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21706 = halNoaAttrIndMsg.noaAttrIndParams.index;
21707 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21708 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21709 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21710 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021711
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21713 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21714 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21715 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21716 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21717 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21718 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21719 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021720
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21722 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21723 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21724 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21725 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21726 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21727 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21728 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21729
ltimariub77f24b2013-01-24 18:54:33 -080021730 if ( pWDICtx->wdiLowLevelIndCB )
21731 {
21732 /*Notify UMAC*/
21733 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21734 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021735
21736 return WDI_STATUS_SUCCESS;
21737}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021738
21739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 an indication of this kind is being received over the
21742 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021743
21744 @param pWDICtx: pointer to the WLAN DAL context
21745 pEventData: pointer to the event information structure
21746
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 @see
21748 @return Result of the function call
21749*/
21750WDI_Status
21751WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021752(
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_ControlBlockType* pWDICtx,
21754 WDI_EventInfoType* pEventData
21755)
21756{
21757 WDI_LowLevelIndType wdiInd;
21758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021759
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 /*-------------------------------------------------------------------------
21761 Extract indication and send it to UMAC
21762 -------------------------------------------------------------------------*/
21763 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21765
ltimariub77f24b2013-01-24 18:54:33 -080021766 if ( pWDICtx->wdiLowLevelIndCB )
21767 {
21768 /*Notify UMAC*/
21769 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21770 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021771
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773}/*WDI_ProcessTxPerHitInd*/
21774
Jeff Johnson295189b2012-06-20 16:38:30 -070021775/**
Yue Mab9c86f42013-08-14 15:59:08 -070021776 @brief Process Periodic Tx Pattern Fw Indication function
21777
21778 @param pWDICtx: pointer to the WLAN DAL context
21779 pEventData: pointer to the event information structure
21780
21781 @see
21782 @return Result of the function call
21783*/
21784WDI_Status
21785WDI_ProcessPeriodicTxPtrnFwInd
21786(
21787 WDI_ControlBlockType* pWDICtx,
21788 WDI_EventInfoType* pEventData
21789)
21790{
21791 WDI_LowLevelIndType wdiInd;
21792
21793 /*-------------------------------------------------------------------------
21794 Sanity check
21795 -------------------------------------------------------------------------*/
21796 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21797 (NULL == pEventData->pEventData))
21798 {
21799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21800 "%s: Invalid parameters", __func__);
21801 WDI_ASSERT(0);
21802 return WDI_STATUS_E_FAILURE;
21803 }
21804
21805 /*-------------------------------------------------------------------------
21806 Extract indication and send it to UMAC
21807 -------------------------------------------------------------------------*/
21808 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21809 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21810 sizeof(tHalPeriodicTxPtrnFwInd));
21811
21812 if (pWDICtx->wdiLowLevelIndCB)
21813 {
21814 /*Notify UMAC*/
21815 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21816 }
21817
21818 return WDI_STATUS_SUCCESS;
21819}
21820
21821/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 @brief WDI_ProcessFTMCommandReq
21823 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021824
21825 @param pWDICtx: pointer to the WLAN DAL context
21826 pEventData: pointer to the event information structure
21827
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 @see
21829 @return Result of the function call
21830*/
21831WDI_Status
21832WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021833(
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_ControlBlockType* pWDICtx,
21835 WDI_EventInfoType* pEventData
21836)
21837{
21838 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21839 wpt_uint8 *ftmCommandBuffer = NULL;
21840 wpt_uint16 dataOffset;
21841 wpt_uint16 bufferSize;
21842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 -------------------------------------------------------------------------*/
21845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21846 ( NULL == pEventData->pEventData))
21847
21848 {
21849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 }
21854
21855 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21856
21857 /* Get MSG Buffer */
21858 WDI_GetMessageBuffer(pWDICtx,
21859 WDI_FTM_CMD_REQ,
21860 ftmCommandReq->bodyLength,
21861 &ftmCommandBuffer,
21862 &dataOffset,
21863 &bufferSize);
21864
21865 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21866 ftmCommandReq->FTMCommandBody,
21867 ftmCommandReq->bodyLength);
21868
21869 /* Send MSG */
21870 return WDI_SendMsg(pWDICtx,
21871 ftmCommandBuffer,
21872 bufferSize,
21873 pEventData->pCBfnc,
21874 pEventData->pUserData,
21875 WDI_FTM_CMD_RESP);
21876}
21877
21878/**
21879 @brief WDI_ProcessFTMCommandRsp
21880 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021881
21882 @param pWDICtx: pointer to the WLAN DAL context
21883 pEventData: pointer to the event information structure
21884
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 @see
21886 @return Result of the function call
21887*/
21888WDI_Status
21889WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021890(
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 WDI_ControlBlockType* pWDICtx,
21892 WDI_EventInfoType* pEventData
21893)
21894{
21895 WDI_FTMCommandRspCb ftmCMDRspCb;
21896 tProcessPttRspParams *ftmCMDRspData = NULL;
21897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21898
21899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 -------------------------------------------------------------------------*/
21902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21903 ( NULL == pEventData->pEventData))
21904 {
21905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 }
21910
21911 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21912
21913 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21914
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21916 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21918
21919 /*Notify UMAC*/
21920 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21921
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021923}
Jeff Johnson295189b2012-06-20 16:38:30 -070021924/**
21925 @brief WDI_ProcessHalDumpCmdReq
21926 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021927
21928 @param pWDICtx: pointer to the WLAN DAL context
21929 pEventData: pointer to the event information structure
21930
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 @see
21932 @return Result of the function call
21933*/
21934WDI_Status
21935WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021936(
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 WDI_ControlBlockType* pWDICtx,
21938 WDI_EventInfoType* pEventData
21939)
21940{
21941 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21942 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21943 wpt_uint16 usDataOffset = 0;
21944 wpt_uint16 usSendSize = 0;
21945 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021947
21948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021950 -------------------------------------------------------------------------*/
21951 if (( NULL == pEventData ) ||
21952 ( NULL == pEventData->pEventData) ||
21953 ( NULL == pEventData->pCBfnc ))
21954 {
21955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 }
21960
21961 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21962 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21963
21964 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021975
Jeff Johnson295189b2012-06-20 16:38:30 -070021976 /*-----------------------------------------------------------------------
21977 Get message buffer
21978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21981 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21984 {
21985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021986 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 }
21991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 wpalMemoryCopy( pSendBuffer+usDataOffset,
21993 &halDumpCmdReqMsg.dumpCmdReqParams,
21994 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998
21999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22003 wdiHALDumpCmdRspCb, pEventData->pUserData,
22004 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022005}
22006
22007/**
22008 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 Process hal Dump Command Response from HAL, simply route to HDD
22010
22011 @param pWDICtx: pointer to the WLAN DAL context
22012 pEventData: pointer to the event information structure
22013
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 @see
22015 @return Result of the function call
22016*/
22017WDI_Status
22018WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022019(
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 WDI_ControlBlockType* pWDICtx,
22021 WDI_EventInfoType* pEventData
22022)
22023{
22024 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022025 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22027
22028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 -------------------------------------------------------------------------*/
22031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22032 ( NULL == pEventData->pEventData))
22033 {
22034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 }
22039
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022041
22042 /*Initialize the WDI Response structure */
22043 wdiHALDumpCmdRsp.usBufferLen = 0;
22044 wdiHALDumpCmdRsp.pBuffer = NULL;
22045
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022046 wpalMemoryCopy( &halDumpCmdRspParams,
22047 pEventData->pEventData,
22048 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022049
22050 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022051 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022052
22053 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022054 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 {
22056 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022057 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22058 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22059
22060 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22061 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022062 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022064
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 /*Notify UMAC*/
22066 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22067
22068 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22069 {
22070 /* Free the allocated buffer */
22071 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22072 }
22073 return WDI_STATUS_SUCCESS;
22074}
22075
22076/*==========================================================================
22077 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022078
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022081==========================================================================*/
22082/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 when it wishes to send up a notification like the ones
22085 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022086
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022088
22089 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 wctsNotifyCBData: the callback data of the user
22092
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022094
22095 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022096*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022097void
Jeff Johnson295189b2012-06-20 16:38:30 -070022098WDI_NotifyMsgCTSCB
22099(
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 WCTS_NotifyEventType wctsEvent,
22102 void* wctsNotifyCBData
22103)
22104{
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22107
22108 if (NULL == pWDICtx )
22109 {
22110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 }
22115
22116 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22117 {
22118 /* callback presumably occurred after close */
22119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022120 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 }
22123
22124 if ( WCTS_EVENT_OPEN == wctsEvent )
22125 {
22126 /*Flag must be set atomically as it is checked from incoming request
22127 functions*/
22128 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022130
22131 /*Nothing to do - so try to dequeue any pending request that may have
22132 occurred while we were trying to establish this*/
22133 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 {
22138 /*Flag must be set atomically as it is checked from incoming request
22139 functions*/
22140 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142
22143 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 wpalMutexRelease(&pWDICtx->wptMutex);
22146
22147 /*Notify that the Control Channel is closed */
22148 wpalEventSet(&pWDICtx->wctsActionEvent);
22149 }
22150
22151}/*WDI_NotifyMsgCTSCB*/
22152
22153
22154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 when it wishes to send up a packet received over the
22157 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022160
22161 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 pMsg: the packet
22163 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 wctsRxMsgCBData: the callback data of the user
22165
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022167
22168 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022169*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022170void
22171WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022172(
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 void* pMsg,
22175 wpt_uint32 uLen,
22176 void* wctsRxMsgCBData
22177)
22178{
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 tHalMsgHeader *pHalMsgHeader;
22180 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22183
22184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 ( uLen < sizeof(tHalMsgHeader)))
22189 {
22190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 }
22195
22196 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22197 {
22198 /* callback presumably occurred after close */
22199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022200 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 }
22203
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 context - so no serialization is necessary here
22206 ! - revisit this assumption */
22207
22208 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22209
22210 if ( uLen != pHalMsgHeader->msgLen )
22211 {
22212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22213 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022214 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022215 wpalWlanReload();
22216
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 }
22219
22220 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22221
22222 /*The message itself starts after the header*/
22223 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22224 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22225 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22226 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22227
22228
22229 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22230 {
22231 /*Stop the timer as the response was received */
22232 /*!UT - check for potential race conditions between stop and response */
22233 wpalTimerStop(&pWDICtx->wptResponseTimer);
22234 }
22235 /* Check if we receive a response message which is not expected */
22236 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22237 {
22238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22239 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22240 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22243 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022244
22245 if (gWDICb.bEnableSSR == false)
22246 {
22247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22248 "SSR is not enabled on WDI timeout");
22249 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22250 return;
22251 }
22252 wpalWcnssResetIntr();
22253 /* if this timer fires, it means Riva did not receive the FIQ */
22254 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22255
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 return;
22257 }
22258
22259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22260 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22261
22262 /*Post response event to the state machine*/
22263 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22264
22265}/*WDI_RXMsgCTSCB*/
22266
22267
22268/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022270========================================================================*/
22271
22272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022275
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 @param pWDICtx - pointer to the control block
22277
22278 @return Result of the function call
22279*/
22280WPT_INLINE WDI_Status
22281WDI_CleanCB
22282(
22283 WDI_ControlBlockType* pWDICtx
22284)
22285{
22286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22287
22288 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022289 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022290
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22293 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22294
22295 WDI_ResetAssocSessions( pWDICtx );
22296
22297 return WDI_STATUS_SUCCESS;
22298}/*WDI_CleanCB*/
22299
22300
22301/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022303
Jeff Johnsone7245742012-09-05 17:12:55 -070022304
22305 @param pWDICtx: pointer to the WLAN DAL context
22306 pEventData: pointer to the event information structure
22307
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 @see
22309 @return Result of the function call
22310*/
22311WPT_INLINE WDI_Status
22312WDI_ProcessRequest
22313(
22314 WDI_ControlBlockType* pWDICtx,
22315 WDI_EventInfoType* pEventData
22316)
22317{
22318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22319
Jeff Johnsone7245742012-09-05 17:12:55 -070022320 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 already checked these pointers*/
22322
22323 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22324 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022327 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 WDI_getReqMsgString(pEventData->wdiRequest),
22329 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22330 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22331 }
22332 else
22333 {
22334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022335 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 pEventData->wdiRequest);
22337 return WDI_STATUS_E_NOT_IMPLEMENT;
22338 }
22339}/*WDI_ProcessRequest*/
22340
22341
22342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 prefixes it with a send message header
22346
22347 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 wdiReqType: type of the request being sent
22349 uBufferLen: message buffer len
22350 pMsgBuffer: resulting allocated buffer
22351 pusDataOffset: offset in the buffer where the caller
22352 can start copying its message data
22353 puBufferSize: the resulting buffer size (offset+buff
22354 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022355
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 @see
22357 @return Result of the function call
22358*/
22359WDI_Status
22360WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022361(
22362 WDI_ControlBlockType* pWDICtx,
22363 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 wpt_uint8** pMsgBuffer,
22366 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 wpt_uint16* pusBufferSize
22368)
22369{
22370 tHalMsgHeader halMsgHeader;
22371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22372
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 again*/
22375
22376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22381 if ( NULL == *pMsgBuffer )
22382 {
22383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22384 "Unable to allocate message buffer for req %s (%d)",
22385 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 }
22390
22391 /*-------------------------------------------------------------------------
22392 Fill in the message header
22393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22395 /* Fill msgVersion */
22396#ifdef WLAN_FEATURE_11AC
22397 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022398 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 else
22400#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022401 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22404 *pusDataOffset = sizeof(halMsgHeader);
22405 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22406
22407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408}/*WDI_GetMessageBuffer*/
22409
22410
22411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 the CB
22415
22416 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022418
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 usSendSize size of the buffer to be sent
22420 pRspCb: response callback - save in the WDI
22421 CB
22422 pUserData: user data associated with the
22423 callback
22424 wdiExpectedResponse: the code of the response that is
22425 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022426
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 @see
22428 @return Result of the function call
22429*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022431WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022432(
22433 WDI_ControlBlockType* pWDICtx,
22434 wpt_uint8* pSendBuffer,
22435 wpt_uint32 usSendSize,
22436 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 void* pUserData,
22438 WDI_ResponseEnumType wdiExpectedResponse
22439)
22440{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022441 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022442 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22444
22445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 ------------------------------------------------------------------------*/
22448 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 pWDICtx->pfncRspCB = pRspCb;
22450 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451
22452 /*-----------------------------------------------------------------------
22453 Call the CTS to send this message over - free message afterwards
22454 - notify transport failure
22455 Note: CTS is reponsible for freeing the message buffer.
22456 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022457 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22458 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22459 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022462 "Failed to send message with expected response %s (%d)"
22463 " over the bus - catastrophic failure",
22464 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22465 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022466
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022467 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22468 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022470 else
22471 {
22472 /* even when message was placed in CTS deferred Q, we will treat it
22473 success but log this info
22474 */
22475 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22476 {
22477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22478 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22479 "response %s (%d)",
22480 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22481 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022482 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022483 }
22484 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022485
Jeff Johnsond13512a2012-07-17 11:42:19 -070022486 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 if ( NULL != pWDICtx->wdiReqStatusCB )
22488 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022489 /*Inform originator whether request went through or not*/
22490 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22491 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 pWDICtx->wdiReqStatusCB = NULL;
22493 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022494 callback(wdiStatus, callbackContext);
22495
22496 /*For WDI requests which have registered a request callback,
22497 inform the WDA caller of the same via setting the return value
22498 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22499 end up repeating the functonality in the req callback for the
22500 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022501 if (wdiStatus != WDI_STATUS_SUCCESS)
22502 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022503 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 }
22506
Jeff Johnsond13512a2012-07-17 11:42:19 -070022507 if ( wdiStatus == WDI_STATUS_SUCCESS )
22508 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 /*Start timer for the expected response */
22510 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022511
22512 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022513 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022514 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022515 }
22516 else
22517 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022518 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022519 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22520 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022521
Jeff Johnsond13512a2012-07-17 11:42:19 -070022522 return wdiStatus;
22523
Jeff Johnson295189b2012-06-20 16:38:30 -070022524}/*WDI_SendMsg*/
22525
22526
22527
22528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 the bus using the control transport and saves some info
22531 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022532
22533 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 pSendBuffer: buffer to be sent
22535 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022536
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 @see
22538 @return Result of the function call
22539*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022541WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022542(
22543 WDI_ControlBlockType* pWDICtx,
22544 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 wpt_uint32 usSendSize
22546)
22547{
22548 wpt_uint32 uStatus ;
22549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22550
22551 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 Note: CTS is reponsible for freeing the message buffer.
22554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 (void*)pSendBuffer, usSendSize );
22557
22558 /*Inform Upper MAC about the outcome of the request*/
22559 if ( NULL != pWDICtx->wdiReqStatusCB )
22560 {
22561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22562 "Send indication status : %d", uStatus);
22563
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022564 /* even if CTS placed indication into its deferred Q, we treat it
22565 * as success and let CTS drain its queue as per smd interrupt to CTS
22566 */
22567 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 -070022568 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 }
22570
22571 /*If sending of the message failed - it is considered catastrophic and
22572 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022573 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22574 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22575
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 {
22577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022579
22580 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22581 return WDI_STATUS_E_FAILURE;
22582 }
22583
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585}/*WDI_SendIndication*/
22586
22587
22588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @brief WDI_DetectedDeviceError - called internally by DAL when
22590 it has detected a failure in the device
22591
22592 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 usErrorCode: error code detected by WDI or received
22594 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022595
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022598*/
22599void
22600WDI_DetectedDeviceError
22601(
22602 WDI_ControlBlockType* pWDICtx,
22603 wpt_uint16 usErrorCode
22604)
22605{
22606 WDI_LowLevelIndType wdiInd;
22607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22608
22609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22610 "Device Error detected code: %d - transitioning to stopped state",
22611 usErrorCode);
22612
Katya Nigamf02ad012014-05-05 16:12:49 +053022613 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22614
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 wpalMutexAcquire(&pWDICtx->wptMutex);
22616
22617 WDI_STATableStop(pWDICtx);
22618
22619 WDI_ResetAssocSessions(pWDICtx);
22620
22621 /*Set the expected state transition to stopped - because the device
22622 experienced a failure*/
22623 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22624
22625 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022627
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022629
22630 /*TO DO: - there should be an attempt to reset the device here*/
22631
22632 wpalMutexRelease(&pWDICtx->wptMutex);
22633
22634 /*------------------------------------------------------------------------
22635 Notify UMAC if a handler is registered
22636 ------------------------------------------------------------------------*/
22637 if (pWDICtx->wdiLowLevelIndCB)
22638 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22640 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022641
22642 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22643 }
22644}/*WDI_DetectedDeviceError*/
22645
22646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 we started on send message has expire - this should
22649 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 reply - trigger catastrophic failure
22651 @param
22652
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022654
22655 @see
22656 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022657*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022658void
Jeff Johnson295189b2012-06-20 16:38:30 -070022659WDI_ResponseTimerCB
22660(
22661 void *pUserData
22662)
22663{
22664 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22666
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022667 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 }
22674
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022675 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022676 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022677 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022678
22679 /* If response timer is running at this time that means this timer
22680 * event is not for the last request but rather last-to-last request and
22681 * this timer event has come after we recevied respone for last-to-last
22682 * message
22683 */
22684 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22685 {
22686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22687 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022688 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022689 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22691 "uArchTimeStampTmrStart: %llu seconds, "
22692 "uArchTimeStampTmrExp: %llu seconds",
22693 pWDICtx->uArchTimeStampRspTmrStart,
22694 pWDICtx->uArchTimeStampRspTmrExp);
22695
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022696 return;
22697 }
22698
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022699 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 {
22701
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022704 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022706 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22707 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22709 "uArchTimeStampTmrStart: %llu seconds, "
22710 "uArchTimeStampTmrExp: %llu seconds",
22711 pWDICtx->uArchTimeStampRspTmrStart,
22712 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022713
22714 /* WDI timeout means Riva is not responding or SMD communication to Riva
22715 * is not happening. The only possible way to recover from this error
22716 * is to initiate SSR from APPS.
22717 * There is also an option to re-enable wifi, which will eventually
22718 * trigger SSR
22719 */
22720 if (gWDICb.bEnableSSR == false)
22721 {
22722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22723 "SSR is not enabled on WDI timeout");
22724 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22725 return;
22726 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022727#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022728 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022729 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022730 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022731 if(wpalIsSsrPanicOnFailure())
22732 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022733 } else {
22734 /* if this timer fires, it means Riva did not receive the FIQ */
22735 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022736 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022737#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022738 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22739 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022740#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 }
22742 else
22743 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022745 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022746 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022747 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22748 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22750 "uArchTimeStampTmrStart: %llu seconds, "
22751 "uArchTimeStampTmrExp: %llu seconds",
22752 pWDICtx->uArchTimeStampRspTmrStart,
22753 pWDICtx->uArchTimeStampRspTmrExp);
22754
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 }
22756
22757 return;
22758
22759}/*WDI_ResponseTimerCB*/
22760
22761
22762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022764
Jeff Johnsone7245742012-09-05 17:12:55 -070022765
22766 @param pWDICtx: pointer to the WLAN DAL context
22767 pEventData: pointer to the event information structure
22768
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 @see
22770 @return Result of the function call
22771*/
22772WPT_INLINE WDI_Status
22773WDI_ProcessResponse
22774(
22775 WDI_ControlBlockType* pWDICtx,
22776 WDI_EventInfoType* pEventData
22777)
22778{
22779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22780
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 already checked these pointers
22783 ! - revisit this assumption */
22784 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22785 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022788 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 WDI_getRespMsgString(pEventData->wdiResponse),
22790 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22791 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22792 }
22793 else
22794 {
22795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022796 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 pEventData->wdiResponse);
22798 return WDI_STATUS_E_NOT_IMPLEMENT;
22799 }
22800}/*WDI_ProcessResponse*/
22801
22802
22803/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022805=========================================================================*/
22806
22807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 @brief Utility function used by the DAL Core to help queue a
22809 request that cannot be processed right away.
22810 @param
22811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 pWDICtx: - pointer to the WDI control block
22813 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 queued
22815
22816 @see
22817 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022818*/
22819WDI_Status
22820WDI_QueuePendingReq
22821(
22822 WDI_ControlBlockType* pWDICtx,
22823 WDI_EventInfoType* pEventData
22824)
22825{
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22830
22831 if ( NULL == pEventDataQueue )
22832 {
22833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 WDI_ASSERT(0);
22836 return WDI_STATUS_MEM_FAILURE;
22837 }
22838
22839 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22840 pEventDataQueue->pUserData = pEventData->pUserData;
22841 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22842 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022843 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022844
22845 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22846 {
22847 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022848
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 if ( NULL == pEventInfo )
22850 {
22851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 WDI_ASSERT(0);
22854 wpalMemoryFree(pEventDataQueue);
22855 return WDI_STATUS_MEM_FAILURE;
22856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022857
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22859
22860 }
22861 pEventDataQueue->pEventData = pEventInfo;
22862
22863 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022865
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022866 if (eWLAN_PAL_STATUS_E_FAILURE ==
22867 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22868 {
22869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22870 "pEventDataQueue wpal_list_insert_back failed");
22871 WDI_ASSERT(0);
22872 wpalMemoryFree(pEventDataQueue);
22873 wpalMemoryFree(pEventInfo);
22874 return WDI_STATUS_MEM_FAILURE;
22875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022876
22877 return WDI_STATUS_SUCCESS;
22878}/*WDI_QueuePendingReq*/
22879
22880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022882 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022883 @param
22884
22885 pMsg - pointer to the message
22886
22887 @see
22888 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022889*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022890void
Jeff Johnson295189b2012-06-20 16:38:30 -070022891WDI_PALCtrlMsgCB
22892(
22893 wpt_msg *pMsg
22894)
22895{
22896 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 WDI_ControlBlockType* pWDICtx = NULL;
22898 WDI_Status wdiStatus;
22899 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 void* pUserData;
22901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22902
22903 if (( NULL == pMsg )||
22904 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22905 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22906 {
22907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022908 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 }
22912
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022913 /*Access to the global state must be locked */
22914 wpalMutexAcquire(&pWDICtx->wptMutex);
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 /*Transition back to the state that we had before serialization
22917 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022918 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022921
22922 /*-----------------------------------------------------------------------
22923 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022924 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 -----------------------------------------------------------------------*/
22926 switch ( pEventData->wdiRequest )
22927 {
22928
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22931 break;
22932
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 case WDI_NV_DOWNLOAD_REQ:
22934 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22935 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22936 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22937 {
22938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022939 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22941 }
22942 else
22943 {
22944 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22945 }
22946
22947 break;
22948
22949 default:
22950 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22951 break;
22952 }/*switch ( pEventData->wdiRequest )*/
22953
22954 if ( WDI_STATUS_SUCCESS != wdiStatus )
22955 {
22956 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22957
22958 if ( NULL != pfnReqStatusCB )
22959 {
22960 /*Fail the request*/
22961 pfnReqStatusCB( wdiStatus, pUserData);
22962 }
22963 }
22964
22965 /* Free data - that was allocated when queueing*/
22966 if( pEventData != NULL )
22967 {
22968 if( pEventData->pEventData != NULL )
22969 {
22970 wpalMemoryFree(pEventData->pEventData);
22971 }
22972 wpalMemoryFree(pEventData);
22973 }
22974
22975 if( pMsg != NULL )
22976 {
22977 wpalMemoryFree(pMsg);
22978 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022979
Jeff Johnson295189b2012-06-20 16:38:30 -070022980}/*WDI_PALCtrlMsgCB*/
22981
22982/**
22983 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 and schedule for execution a pending request
22985 @param
22986
Jeff Johnson295189b2012-06-20 16:38:30 -070022987 pWDICtx: - pointer to the WDI control block
22988 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 queued
22990
22991 @see
22992 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022993*/
22994WDI_Status
22995WDI_DequeuePendingReq
22996(
22997 WDI_ControlBlockType* pWDICtx
22998)
22999{
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23004
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023006
23007 if ( NULL == pNode )
23008 {
23009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023010 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 return WDI_STATUS_SUCCESS;
23012 }
23013
23014 /*The node actually points to the 1st element inside the Event Data struct -
23015 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023017
23018 /*Serialize processing in the control thread
23019 !TO DO: - check to see if these are all the messages params that need
23020 to be filled in*/
23021 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23022
23023 if ( NULL == palMsg )
23024 {
23025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 palMsg->callback = WDI_PALCtrlMsgCB;
23032 palMsg->ptr = pEventData;
23033
23034 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023036 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023037
Jeff Johnson295189b2012-06-20 16:38:30 -070023038 /*Transition back to BUSY as we need to handle a queued request*/
23039 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023040
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23042
23043 return WDI_STATUS_PENDING;
23044}/*WDI_DequeuePendingReq*/
23045
23046
23047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023050 away.- The assoc requests will be queued by BSSID
23051 @param
23052
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 pWDICtx: - pointer to the WDI control block
23054 pEventData: pointer to the evnt info that needs to be queued
23055 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023056
23057 @see
23058 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023059*/
23060WDI_Status
23061WDI_QueueNewAssocRequest
23062(
23063 WDI_ControlBlockType* pWDICtx,
23064 WDI_EventInfoType* pEventData,
23065 wpt_macAddr macBSSID
23066)
23067{
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 wpt_uint8 i;
23069 WDI_BSSSessionType* pSession = NULL;
23070 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 void* pEventInfo;
23073 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
Jeff Johnsone7245742012-09-05 17:12:55 -070023076
23077 /*------------------------------------------------------------------------
23078 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 ------------------------------------------------------------------------*/
23080 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23081 {
23082 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23083 {
23084 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 pSession = &pWDICtx->aBSSSessions[i];
23086 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 }
23088 }
23089
23090 if ( i >= WDI_MAX_BSS_SESSIONS )
23091 {
23092 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023095
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 /*------------------------------------------------------------------------
23097 Fill in the BSSID for this session and set the usage flag
23098 ------------------------------------------------------------------------*/
23099 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101
23102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 ------------------------------------------------------------------------*/
23105 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23106 if ( NULL == pEventDataQueue )
23107 {
23108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023109 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 WDI_ASSERT(0);
23111 return WDI_STATUS_MEM_FAILURE;
23112 }
23113
23114 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23115 if ( NULL == pSessionIdElement )
23116 {
23117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023118 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 WDI_ASSERT(0);
23120 wpalMemoryFree(pEventDataQueue);
23121 return WDI_STATUS_MEM_FAILURE;
23122 }
23123
23124 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23125 if ( NULL == pEventInfo )
23126 {
23127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023128 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023129 WDI_ASSERT(0);
23130 wpalMemoryFree(pSessionIdElement);
23131 wpalMemoryFree(pEventDataQueue);
23132 return WDI_STATUS_MEM_FAILURE;
23133 }
23134
23135 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23136 pEventDataQueue->pUserData = pEventData->pUserData;
23137 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23138 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023140
23141 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23142 pEventDataQueue->pEventData = pEventInfo;
23143
23144 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023145 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146
23147 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023149
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023150 if (eWLAN_PAL_STATUS_E_FAILURE ==
23151 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23152 {
23153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23154 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23155 WDI_ASSERT(0);
23156 wpalMemoryFree(pSessionIdElement);
23157 wpalMemoryFree(pEventDataQueue);
23158 wpalMemoryFree(pEventInfo);
23159 return WDI_STATUS_MEM_FAILURE;
23160 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023161
23162 /*We need to maintain a separate list that keeps track of the order in which
23163 the new assoc requests are being queued such that we can start processing
23164 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 pSessionIdElement->ucIndex = i;
23166 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023167
23168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23169 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023170 if (eWLAN_PAL_STATUS_E_FAILURE ==
23171 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23172 {
23173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23174 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23175 WDI_ASSERT(0);
23176 wpalMemoryFree(pSessionIdElement);
23177 wpalMemoryFree(pEventDataQueue);
23178 wpalMemoryFree(pEventInfo);
23179 return WDI_STATUS_MEM_FAILURE;
23180 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023181
23182 /*Return pending as this is what the status of the request is since it has
23183 been queued*/
23184 return WDI_STATUS_PENDING;
23185}/*WDI_QueueNewAssocRequest*/
23186
23187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 away.- The assoc requests will be queued by BSSID
23191 @param
23192
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 pWDICtx: - pointer to the WDI control block
23194 pSession: - session in which to queue
23195 pEventData: pointer to the event info that needs to be
23196 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023197
23198 @see
23199 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023200*/
23201WDI_Status
23202WDI_QueueAssocRequest
23203(
23204 WDI_ControlBlockType* pWDICtx,
23205 WDI_BSSSessionType* pSession,
23206 WDI_EventInfoType* pEventData
23207)
23208{
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023213
23214 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 Sanity check
23216 ------------------------------------------------------------------------*/
23217 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23218 {
23219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023221
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 }
23224
23225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 ------------------------------------------------------------------------*/
23228 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23229 if ( NULL == pEventDataQueue )
23230 {
23231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023232 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WDI_ASSERT(0);
23234 return WDI_STATUS_MEM_FAILURE;
23235 }
23236
23237 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23238 if ( NULL == pEventInfo )
23239 {
23240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23241 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023242 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 WDI_ASSERT(0);
23244 wpalMemoryFree(pEventDataQueue);
23245 return WDI_STATUS_MEM_FAILURE;
23246 }
23247
23248 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23249 pEventDataQueue->pUserData = pEventData->pUserData;
23250 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23251 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 pEventDataQueue->pEventData = pEventInfo;
23254
23255 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23256
23257 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259
23260 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023263 if (eWLAN_PAL_STATUS_E_FAILURE ==
23264 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23265 {
23266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23267 "%s: Cannot allocate memory for queueing event data info",
23268 __func__);
23269 WDI_ASSERT(0);
23270 wpalMemoryFree(pEventDataQueue);
23271 wpalMemoryFree(pEventInfo);
23272 return WDI_STATUS_MEM_FAILURE;
23273 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023274
23275 /*The result of this operation is pending because the request has been
23276 queued and it will be processed at a later moment in time */
23277 return WDI_STATUS_PENDING;
23278}/*WDI_QueueAssocRequest*/
23279
23280/**
23281 @brief Utility function used by the DAL Core to help dequeue
23282 an association request that was pending
23283 The request will be queued up in front of the main
23284 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 @param
23286
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023288
23289
23290 @see
23291 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023292*/
23293WDI_Status
23294WDI_DequeueAssocRequest
23295(
23296 WDI_ControlBlockType* pWDICtx
23297)
23298{
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 wpt_list_node* pNode = NULL;
23300 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 WDI_BSSSessionType* pSession;
23302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023303
23304 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 Sanity check
23306 ------------------------------------------------------------------------*/
23307 if ( NULL == pWDICtx )
23308 {
23309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023311
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 }
23314
23315 /*------------------------------------------------------------------------
23316 An association has been completed => a new association can occur
23317 Check to see if there are any pending associations ->
23318 If so , transfer all the pending requests into the busy queue for
23319 processing
23320 These requests have arrived prior to the requests in the busy queue
23321 (bc they needed to be processed in order to be placed in this queue)
23322 => they will be placed at the front of the busy queue
23323 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023325
23326 if ( NULL == pNode )
23327 {
23328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 return WDI_STATUS_SUCCESS;
23331 }
23332
23333 /*The node actually points to the 1st element inside the Session Id struct -
23334 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023336
23337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23338 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23339
23340 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23341 {
23342 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023343
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 the front of the main waiting queue for subsequent execution*/
23346 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 while ( NULL != pNode )
23348 {
23349 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23351 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 }
23355 else
23356 {
23357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 WPAL_ASSERT(0);
23360 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023363
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23365 wpalMemoryFree(pSessionIdElement);
23366 return WDI_STATUS_SUCCESS;
23367}/*WDI_DequeueAssocRequest*/
23368
23369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 pending requests - all req cb will be called with
23372 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 @param
23374
Jeff Johnson295189b2012-06-20 16:38:30 -070023375 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023376
23377 @see
23378 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023379*/
23380WDI_Status
23381WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023382(
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 WDI_ControlBlockType* pWDICtx
23384)
23385{
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 void* pUserData;
23390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23391
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023393
23394 /*------------------------------------------------------------------------
23395 Go through all the requests and fail them - this will only be called
23396 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 ------------------------------------------------------------------------*/
23399 while( pNode )
23400 {
23401 /*The node actually points to the 1st element inside the Event Data struct -
23402 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 pEventDataQueue = (WDI_EventInfoType*)pNode;
23404
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23406 if ( NULL != pfnReqStatusCB )
23407 {
23408 /*Fail the request*/
23409 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23410 }
23411 /* Free data - that was allocated when queueing */
23412 if ( pEventDataQueue->pEventData != NULL )
23413 {
23414 wpalMemoryFree(pEventDataQueue->pEventData);
23415 }
23416 wpalMemoryFree(pEventDataQueue);
23417
23418 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23419 {
23420 break;
23421 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 }
23423
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 return WDI_STATUS_SUCCESS;
23425}/*WDI_ClearPendingRequests*/
23426
23427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 @brief Helper routine used to init the BSS Sessions in the WDI control block
23429
23430
23431 @param pWDICtx: pointer to the WLAN DAL context
23432
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 @see
23434*/
23435void
23436WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023437(
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 WDI_ControlBlockType* pWDICtx
23439)
23440{
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23443
23444 /*-------------------------------------------------------------------------
23445 No Sanity check
23446 -------------------------------------------------------------------------*/
23447 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23448 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23451 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23452 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23453 }
23454}/*WDI_ResetAssocSessions*/
23455
23456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 @brief Helper routine used to find a session based on the BSSID
23458
23459
23460 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 pSession: pointer to the session (if found)
23463
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023466*/
23467wpt_uint8
23468WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023469(
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 WDI_ControlBlockType* pWDICtx,
23471 wpt_macAddr macBSSID,
23472 WDI_BSSSessionType** ppSession
23473)
23474{
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23477
23478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 -------------------------------------------------------------------------*/
23481 if ( NULL == ppSession )
23482 {
23483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023484 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 }
23487
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023489
Jeff Johnsone7245742012-09-05 17:12:55 -070023490 /*------------------------------------------------------------------------
23491 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 ------------------------------------------------------------------------*/
23493 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23494 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023495 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23496 (eWLAN_PAL_TRUE ==
23497 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23498 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 {
23500 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 return i;
23503 }
23504 }
23505
Jeff Johnsone7245742012-09-05 17:12:55 -070023506 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023507}/*WDI_FindAssocSession*/
23508
23509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 @brief Helper routine used to find a session based on the BSSID
23511
23512
23513 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 ucBSSIdx: BSS Index of the session
23515 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023516
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023519*/
23520wpt_uint8
23521WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023522(
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 WDI_ControlBlockType* pWDICtx,
23524 wpt_uint16 ucBSSIdx,
23525 WDI_BSSSessionType** ppSession
23526)
23527{
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23530
23531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 -------------------------------------------------------------------------*/
23534 if ( NULL == ppSession )
23535 {
23536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023537 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 }
23540
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 /*------------------------------------------------------------------------
23544 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 ------------------------------------------------------------------------*/
23546 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23547 {
23548 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23549 {
23550 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 return i;
23553 }
23554 }
23555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023557}/*WDI_FindAssocSessionByBSSIdx*/
23558
23559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 @brief Helper routine used to find a session based on the BSSID
23561
23562
23563 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 ucBSSIdx: BSS Index of the session
23565 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023566
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023569*/
23570wpt_uint8
23571WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023572(
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 WDI_ControlBlockType* pWDICtx,
23574 wpt_uint16 usIdx,
23575 WDI_BSSSessionType** ppSession
23576)
23577{
23578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23579
23580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 -------------------------------------------------------------------------*/
23583 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23584 {
23585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023586 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 }
23589
23590 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023592
23593 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023594
Jeff Johnson295189b2012-06-20 16:38:30 -070023595}/*WDI_FindAssocSessionByBSSIdx*/
23596
23597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023600
23601
23602 @param pWDICtx: pointer to the WLAN DAL context
23603 pSession: pointer to the session (if found)
23604
Jeff Johnson295189b2012-06-20 16:38:30 -070023605 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023607*/
23608wpt_uint8
23609WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023610(
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 WDI_ControlBlockType* pWDICtx,
23612 WDI_BSSSessionType** ppSession
23613)
23614{
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 -------------------------------------------------------------------------*/
23620 if ( NULL == ppSession )
23621 {
23622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023623 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 }
23626
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023628
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 /*------------------------------------------------------------------------
23630 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 ------------------------------------------------------------------------*/
23632 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23633 {
23634 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23635 {
23636 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 return i;
23639 }
23640 }
23641
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023643}/*WDI_FindEmptySession*/
23644
23645
23646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023649
23650
23651 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023652 macBSSID: pointer to BSSID. If NULL, get all the session.
23653 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23654 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23655 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 @see
23657 @return Number of sessions in use
23658*/
23659wpt_uint8
23660WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023661(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023662 WDI_ControlBlockType* pWDICtx,
23663 wpt_macAddr macBSSID,
23664 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023665)
23666{
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023669
23670 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 Count all sessions in use
23672 ------------------------------------------------------------------------*/
23673 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23674 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023675 if ( macBSSID && skipBSSID &&
23676 (eWLAN_PAL_TRUE ==
23677 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23678 WDI_MAC_ADDR_LEN)))
23679 {
23680 continue;
23681 }
23682 else if ( pWDICtx->aBSSSessions[i].bInUse )
23683 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023685 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 }
23687
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023689}/*WDI_GetActiveSessionsCount*/
23690
23691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023694
23695
23696 @param pWDICtx: pointer to the WLAN DAL context
23697 pSession: pointer to the session (if found)
23698
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023701*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023702void
Jeff Johnson295189b2012-06-20 16:38:30 -070023703WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023704(
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 WDI_ControlBlockType* pWDICtx,
23706 WDI_BSSSessionType* ppSession
23707)
23708{
23709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 -------------------------------------------------------------------------*/
23712 if ( NULL == ppSession )
23713 {
23714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023715 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 }
23718
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 /*------------------------------------------------------------------------
23720 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 ------------------------------------------------------------------------*/
23722 wpal_list_destroy(&ppSession->wptPendingQueue);
23723 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23725 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23727 wpal_list_init(&ppSession->wptPendingQueue);
23728
23729}/*WDI_DeleteSession*/
23730
23731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 @param
23735
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 WDI_AddStaParams: - pointer to the WDI Add STA params
23737 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023738
23739 @see
23740 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023741*/
23742void
23743WDI_AddBcastSTAtoSTATable
23744(
23745 WDI_ControlBlockType* pWDICtx,
23746 WDI_AddStaParams * staParams,
23747 wpt_uint16 usBcastStaIdx
23748)
23749{
23750 WDI_AddStaParams wdiAddSTAParam = {0};
23751 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23753
23754 /*---------------------------------------------------------------------
23755 Sanity check
23756 ---------------------------------------------------------------------*/
23757 if ( NULL == staParams )
23758 {
23759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023761
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 }
23764
23765 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23766 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23767 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23768 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23769 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23770 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23771 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23772 WDI_MAC_ADDR_LEN );
23773 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23774 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23775 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23776 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23777 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23778 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23779 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023780
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23782}
23783
23784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 @brief NV blob will be divided into fragments of size 4kb and
23786 Sent to HAL
23787
23788 @param pWDICtx: pointer to the WLAN DAL context
23789 pEventData: pointer to the event information structure
23790
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 @see
23792 @return Result of the function call
23793 */
23794
23795WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023796(
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WDI_ControlBlockType* pWDICtx,
23798 WDI_EventInfoType* pEventData
23799)
23800{
23801
23802 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23803 wpt_uint8* pSendBuffer = NULL;
23804 wpt_uint16 usDataOffset = 0;
23805 wpt_uint16 usSendSize = 0;
23806 wpt_uint16 usCurrentFragmentSize =0;
23807 wpt_uint8* pSrcBuffer = NULL;
23808 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23809 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23810
23811 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23812 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23813 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23814
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23817
23818 /* Update the current Fragment Number */
23819 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23820
23821 /*Update the HAL REQ structure */
23822 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23823 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23824 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23825
23826 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 image will be sent to HAL*/
23829
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023833 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023835 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23836 usCurrentFragmentSize = FRAGMENT_SIZE;
23837
23838 /*Update the HAL REQ structure */
23839 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23840 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23841
23842 }
23843 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 usCurrentFragmentSize = FRAGMENT_SIZE;
23846
23847 /*Update the HAL REQ structure */
23848 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23849 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23850 }
23851
23852 /*-----------------------------------------------------------------------
23853 Get message buffer
23854 -----------------------------------------------------------------------*/
23855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23856 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23857 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23860 {
23861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023862 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 pEventData, pwdiNvDownloadReqParams);
23864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 }
23867
23868 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23871
23872 /* Appending the NV image fragment */
23873 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23874 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23875 usCurrentFragmentSize);
23876
23877 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23881 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_NV_DOWNLOAD_RESP);
23883
23884}
Jeff Johnsone7245742012-09-05 17:12:55 -070023885/*============================================================================
23886 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 ============================================================================*/
23888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 @brief Helper routine used to find a session based on the BSSID
23890 @param pContext: pointer to the WLAN DAL context
23891 @param pDPContext: pointer to the Datapath context
23892
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023895*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023896WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023897WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23898{
23899 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23900
23901 pCB->pDPContext = pDPContext;
23902 return;
23903}
23904
23905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 @brief Helper routine used to find a session based on the BSSID
23907
23908
23909 @param pContext: pointer to the WLAN DAL context
23910
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 @see
23912 @return pointer to Datapath context
23913*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023914WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023915WDI_DS_GetDatapathContext (void *pContext)
23916{
23917 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23918 return pCB->pDPContext;
23919}
23920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 @brief Helper routine used to find a session based on the BSSID
23922
23923
23924 @param pContext: pointer to the WLAN DAL context
23925 @param pDTDriverContext: pointer to the Transport Driver context
23926
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 @see
23928 @return void
23929*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023930WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023931WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23932{
23933 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23934
23935 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023937}
23938
23939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 @brief Helper routine used to find a session based on the BSSID
23941
23942
23943 @param pWDICtx: pointer to the WLAN DAL context
23944
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023947*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023948WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023949WDT_GetTransportDriverContext (void *pContext)
23950{
23951 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023953}
23954
Jeff Johnsone7245742012-09-05 17:12:55 -070023955/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 Helper inline converters
23957 ============================================================================*/
23958/*Convert WDI driver type into HAL driver type*/
23959WPT_STATIC WPT_INLINE WDI_Status
23960WDI_HAL_2_WDI_STATUS
23961(
23962 eHalStatus halStatus
23963)
23964{
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 the chances of getting inlined*/
23967 switch( halStatus )
23968 {
23969 case eHAL_STATUS_SUCCESS:
23970 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23971 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23972 return WDI_STATUS_SUCCESS;
23973 case eHAL_STATUS_FAILURE:
23974 return WDI_STATUS_E_FAILURE;
23975 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WDI_STATUS_MEM_FAILURE;
23977 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 default:
23980 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023982
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023984}/*WDI_HAL_2_WDI_STATUS*/
23985
23986/*Convert WDI request type into HAL request type*/
23987WPT_STATIC WPT_INLINE tHalHostMsgType
23988WDI_2_HAL_REQ_TYPE
23989(
23990 WDI_RequestEnumType wdiReqType
23991)
23992{
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 the chances of getting inlined*/
23995 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 return WLAN_HAL_RMV_STAKEY_REQ;
24032 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 case WDI_DEL_BA_REQ:
24041 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024042#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 case WDI_TSM_STATS_REQ:
24044 return WLAN_HAL_TSM_STATS_REQ;
24045#endif
24046 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024055 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 case WDI_ADD_BA_SESSION_REQ:
24057 return WLAN_HAL_ADD_BA_SESSION_REQ;
24058 case WDI_TRIGGER_BA_REQ:
24059 return WLAN_HAL_TRIGGER_BA_REQ;
24060 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024062 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24065 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24066 case WDI_SET_MAX_TX_POWER_REQ:
24067 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024068 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24069 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024070 case WDI_SET_TX_POWER_REQ:
24071 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24073 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024074#ifdef FEATURE_WLAN_TDLS
24075 case WDI_TDLS_LINK_ESTABLISH_REQ:
24076 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024077 case WDI_TDLS_CHAN_SWITCH_REQ:
24078 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024079#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024085 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024086 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024099 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 case WDI_REM_BEACON_FILTER_REQ:
24101 return WLAN_HAL_REM_BCN_FILTER_REQ;
24102 case WDI_SET_RSSI_THRESHOLDS_REQ:
24103 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24104 case WDI_HOST_OFFLOAD_REQ:
24105 return WLAN_HAL_HOST_OFFLOAD_REQ;
24106 case WDI_WOWL_ADD_BC_PTRN_REQ:
24107 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24108 case WDI_WOWL_DEL_BC_PTRN_REQ:
24109 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24110 case WDI_WOWL_ENTER_REQ:
24111 return WLAN_HAL_ENTER_WOWL_REQ;
24112 case WDI_WOWL_EXIT_REQ:
24113 return WLAN_HAL_EXIT_WOWL_REQ;
24114 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24115 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24116 case WDI_NV_DOWNLOAD_REQ:
24117 return WLAN_HAL_DOWNLOAD_NV_REQ;
24118 case WDI_FLUSH_AC_REQ:
24119 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24120 case WDI_BTAMP_EVENT_REQ:
24121 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24122#ifdef WLAN_FEATURE_VOWIFI_11R
24123 case WDI_AGGR_ADD_TS_REQ:
24124 return WLAN_HAL_AGGR_ADD_TS_REQ;
24125#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 case WDI_FTM_CMD_REQ:
24127 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 case WDI_ADD_STA_SELF_REQ:
24129 return WLAN_HAL_ADD_STA_SELF_REQ;
24130 case WDI_DEL_STA_SELF_REQ:
24131 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024132#ifdef FEATURE_OEM_DATA_SUPPORT
24133 case WDI_START_OEM_DATA_REQ:
24134 return WLAN_HAL_START_OEM_DATA_REQ;
24135#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 case WDI_HOST_RESUME_REQ:
24137 return WLAN_HAL_HOST_RESUME_REQ;
24138 case WDI_HOST_SUSPEND_IND:
24139 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024140 case WDI_TRAFFIC_STATS_IND:
24141 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024142#ifdef WLAN_FEATURE_11W
24143 case WDI_EXCLUDE_UNENCRYPTED_IND:
24144 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24145#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 case WDI_KEEP_ALIVE_REQ:
24147 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024148#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024149 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24150 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024151#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024152#ifdef FEATURE_WLAN_SCAN_PNO
24153 case WDI_SET_PREF_NETWORK_REQ:
24154 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24155 case WDI_SET_RSSI_FILTER_REQ:
24156 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24157 case WDI_UPDATE_SCAN_PARAMS_REQ:
24158 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24159#endif // FEATURE_WLAN_SCAN_PNO
24160 case WDI_SET_TX_PER_TRACKING_REQ:
24161 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24162#ifdef WLAN_FEATURE_PACKET_FILTERING
24163 case WDI_8023_MULTICAST_LIST_REQ:
24164 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24165 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24168 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24169 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24170 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24171#endif // WLAN_FEATURE_PACKET_FILTERING
24172 case WDI_HAL_DUMP_CMD_REQ:
24173 return WLAN_HAL_DUMP_COMMAND_REQ;
24174#ifdef WLAN_FEATURE_GTK_OFFLOAD
24175 case WDI_GTK_OFFLOAD_REQ:
24176 return WLAN_HAL_GTK_OFFLOAD_REQ;
24177 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24178 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24179#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24180
24181 case WDI_INIT_SCAN_CON_REQ:
24182 return WLAN_HAL_INIT_SCAN_CON_REQ;
24183 case WDI_SET_POWER_PARAMS_REQ:
24184 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24185 case WDI_SET_TM_LEVEL_REQ:
24186 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24187 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24188 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024189#ifdef WLAN_FEATURE_11AC
24190 case WDI_UPDATE_VHT_OP_MODE_REQ:
24191 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24192#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024193 case WDI_GET_ROAM_RSSI_REQ:
24194 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024195 case WDI_DHCP_START_IND:
24196 return WLAN_HAL_DHCP_START_IND;
24197 case WDI_DHCP_STOP_IND:
24198 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024199#ifdef FEATURE_WLAN_LPHB
24200 case WDI_LPHB_CFG_REQ:
24201 return WLAN_HAL_LPHB_CFG_REQ;
24202#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024203 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24204 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24205 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24206 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24207
Rajeev79dbe4c2013-10-05 11:03:42 +053024208#ifdef FEATURE_WLAN_BATCH_SCAN
24209 case WDI_SET_BATCH_SCAN_REQ:
24210 return WLAN_HAL_BATCHSCAN_SET_REQ;
24211 case WDI_STOP_BATCH_SCAN_IND:
24212 return WLAN_HAL_BATCHSCAN_STOP_IND;
24213 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24214 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24215#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024216 case WDI_RATE_UPDATE_IND:
24217 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024218 case WDI_START_HT40_OBSS_SCAN_IND:
24219 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24220 case WDI_STOP_HT40_OBSS_SCAN_IND:
24221 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024222 case WDI_UPDATE_CHAN_REQ:
24223 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024224 case WDI_CH_SWITCH_REQ_V1:
24225 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024226 case WDI_GET_BCN_MISS_RATE_REQ:
24227 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024228
24229#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24230 case WDI_LL_STATS_SET_REQ:
24231 return WLAN_HAL_LL_SET_STATS_REQ;
24232 case WDI_LL_STATS_GET_REQ:
24233 return WLAN_HAL_LL_GET_STATS_REQ;
24234 case WDI_LL_STATS_CLEAR_REQ:
24235 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24236#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024237#ifdef WLAN_FEATURE_EXTSCAN
24238 case WDI_EXTSCAN_START_REQ:
24239 return WLAN_HAL_EXT_SCAN_START_REQ;
24240 case WDI_EXTSCAN_STOP_REQ:
24241 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24242 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24243 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24244 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24245 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24246 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24247 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24248 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24249 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24250 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24251 return WLAN_HAL_SIG_RSSI_SET_REQ;
24252 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24253 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24254#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024255 case WDI_SPOOF_MAC_ADDR_REQ:
24256 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024257 case WDI_GET_FW_STATS_REQ:
24258 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024259 case WDI_ENCRYPT_MSG_REQ:
24260 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024261 case WDI_FW_LOGGING_INIT_REQ:
24262 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024263 case WDI_GET_FRAME_LOG_REQ:
24264 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024265 case WDI_NAN_REQUEST:
24266 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024267 case WDI_SET_RTS_CTS_HTVHT_IND:
24268 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024269 case WDI_MON_START_REQ:
24270 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24271 case WDI_MON_STOP_REQ:
24272 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024273 case WDI_FW_LOGGING_DXE_DONE_IND:
24274 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024275 case WDI_FATAL_EVENT_LOGGING_REQ:
24276 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024277 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24278 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024282
Jeff Johnson295189b2012-06-20 16:38:30 -070024283}/*WDI_2_HAL_REQ_TYPE*/
24284
24285/*Convert WDI response type into HAL response type*/
24286WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24287HAL_2_WDI_RSP_TYPE
24288(
24289 tHalHostMsgType halMsg
24290)
24291{
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 the chances of getting inlined*/
24294 switch( halMsg )
24295 {
24296 case WLAN_HAL_START_RSP:
24297 return WDI_START_RESP;
24298 case WLAN_HAL_STOP_RSP:
24299 return WDI_STOP_RESP;
24300 case WLAN_HAL_INIT_SCAN_RSP:
24301 return WDI_INIT_SCAN_RESP;
24302 case WLAN_HAL_START_SCAN_RSP:
24303 return WDI_START_SCAN_RESP;
24304 case WLAN_HAL_END_SCAN_RSP:
24305 return WDI_END_SCAN_RESP;
24306 case WLAN_HAL_FINISH_SCAN_RSP:
24307 return WDI_FINISH_SCAN_RESP;
24308 case WLAN_HAL_CONFIG_STA_RSP:
24309 return WDI_CONFIG_STA_RESP;
24310 case WLAN_HAL_DELETE_STA_RSP:
24311 return WDI_DEL_STA_RESP;
24312 case WLAN_HAL_CONFIG_BSS_RSP:
24313 return WDI_CONFIG_BSS_RESP;
24314 case WLAN_HAL_DELETE_BSS_RSP:
24315 return WDI_DEL_BSS_RESP;
24316 case WLAN_HAL_JOIN_RSP:
24317 return WDI_JOIN_RESP;
24318 case WLAN_HAL_POST_ASSOC_RSP:
24319 return WDI_POST_ASSOC_RESP;
24320 case WLAN_HAL_SET_BSSKEY_RSP:
24321 return WDI_SET_BSS_KEY_RESP;
24322 case WLAN_HAL_SET_STAKEY_RSP:
24323 return WDI_SET_STA_KEY_RESP;
24324 case WLAN_HAL_RMV_BSSKEY_RSP:
24325 return WDI_RMV_BSS_KEY_RESP;
24326 case WLAN_HAL_RMV_STAKEY_RSP:
24327 return WDI_RMV_STA_KEY_RESP;
24328 case WLAN_HAL_SET_BCASTKEY_RSP:
24329 return WDI_SET_STA_BCAST_KEY_RESP;
24330 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24331 // return WDI_RMV_STA_BCAST_KEY_RESP;
24332 case WLAN_HAL_ADD_TS_RSP:
24333 return WDI_ADD_TS_RESP;
24334 case WLAN_HAL_DEL_TS_RSP:
24335 return WDI_DEL_TS_RESP;
24336 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24337 return WDI_UPD_EDCA_PRMS_RESP;
24338 case WLAN_HAL_ADD_BA_RSP:
24339 return WDI_ADD_BA_RESP;
24340 case WLAN_HAL_DEL_BA_RSP:
24341 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024342#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 case WLAN_HAL_TSM_STATS_RSP:
24344 return WDI_TSM_STATS_RESP;
24345#endif
24346 case WLAN_HAL_CH_SWITCH_RSP:
24347 return WDI_CH_SWITCH_RESP;
24348 case WLAN_HAL_SET_LINK_ST_RSP:
24349 return WDI_SET_LINK_ST_RESP;
24350 case WLAN_HAL_GET_STATS_RSP:
24351 return WDI_GET_STATS_RESP;
24352 case WLAN_HAL_UPDATE_CFG_RSP:
24353 return WDI_UPDATE_CFG_RESP;
24354 case WLAN_HAL_ADD_BA_SESSION_RSP:
24355 return WDI_ADD_BA_SESSION_RESP;
24356 case WLAN_HAL_TRIGGER_BA_RSP:
24357 return WDI_TRIGGER_BA_RESP;
24358 case WLAN_HAL_UPDATE_BEACON_RSP:
24359 return WDI_UPD_BCON_PRMS_RESP;
24360 case WLAN_HAL_SEND_BEACON_RSP:
24361 return WDI_SND_BCON_RESP;
24362 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24363 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24364 /*Indications*/
24365 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24366 return WDI_HAL_RSSI_NOTIFICATION_IND;
24367 case WLAN_HAL_MISSED_BEACON_IND:
24368 return WDI_HAL_MISSED_BEACON_IND;
24369 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24370 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24371 case WLAN_HAL_MIC_FAILURE_IND:
24372 return WDI_HAL_MIC_FAILURE_IND;
24373 case WLAN_HAL_FATAL_ERROR_IND:
24374 return WDI_HAL_FATAL_ERROR_IND;
24375 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24376 return WDI_HAL_DEL_STA_IND;
24377 case WLAN_HAL_COEX_IND:
24378 return WDI_HAL_COEX_IND;
24379 case WLAN_HAL_OTA_TX_COMPL_IND:
24380 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WLAN_HAL_P2P_NOA_ATTR_IND:
24382 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024383 case WLAN_HAL_P2P_NOA_START_IND:
24384 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024385 case WLAN_HAL_DEL_BA_IND:
24386 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 case WLAN_HAL_TX_PER_HIT_IND:
24388 return WDI_HAL_TX_PER_HIT_IND;
24389 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24390 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024391 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24392 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024393 case WLAN_HAL_SET_TX_POWER_RSP:
24394 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 case WLAN_HAL_SET_P2P_GONOA_RSP:
24396 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024397#ifdef FEATURE_WLAN_TDLS
24398 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24399 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024400 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24401 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024402 case WLAN_HAL_TDLS_IND:
24403 return WDI_HAL_TDLS_IND;
24404#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24424 return WDI_SET_BEACON_FILTER_RESP;
24425 case WLAN_HAL_REM_BCN_FILTER_RSP:
24426 return WDI_REM_BEACON_FILTER_RESP;
24427 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24428 return WDI_SET_RSSI_THRESHOLDS_RESP;
24429 case WLAN_HAL_HOST_OFFLOAD_RSP:
24430 return WDI_HOST_OFFLOAD_RESP;
24431 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24432 return WDI_WOWL_ADD_BC_PTRN_RESP;
24433 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24434 return WDI_WOWL_DEL_BC_PTRN_RESP;
24435 case WLAN_HAL_ENTER_WOWL_RSP:
24436 return WDI_WOWL_ENTER_RESP;
24437 case WLAN_HAL_EXIT_WOWL_RSP:
24438 return WDI_WOWL_EXIT_RESP;
24439 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24440 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24441 case WLAN_HAL_DOWNLOAD_NV_RSP:
24442 return WDI_NV_DOWNLOAD_RESP;
24443 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24444 return WDI_FLUSH_AC_RESP;
24445 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24446 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 case WLAN_HAL_PROCESS_PTT_RSP:
24448 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 case WLAN_HAL_ADD_STA_SELF_RSP:
24450 return WDI_ADD_STA_SELF_RESP;
24451case WLAN_HAL_DEL_STA_SELF_RSP:
24452 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024453#ifdef FEATURE_OEM_DATA_SUPPORT
24454 case WLAN_HAL_START_OEM_DATA_RSP:
24455 return WDI_START_OEM_DATA_RESP;
24456#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 case WLAN_HAL_HOST_RESUME_RSP:
24458 return WDI_HOST_RESUME_RESP;
24459 case WLAN_HAL_KEEP_ALIVE_RSP:
24460 return WDI_KEEP_ALIVE_RESP;
24461#ifdef FEATURE_WLAN_SCAN_PNO
24462 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24463 return WDI_SET_PREF_NETWORK_RESP;
24464 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24467 return WDI_UPDATE_SCAN_PARAMS_RESP;
24468 case WLAN_HAL_PREF_NETW_FOUND_IND:
24469 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24470#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024471#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024472 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24473 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024474#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24476 return WDI_SET_TX_PER_TRACKING_RESP;
24477#ifdef WLAN_FEATURE_PACKET_FILTERING
24478 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24479 return WDI_8023_MULTICAST_LIST_RESP;
24480 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24481 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24482 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24483 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24484 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24485 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24486#endif // WLAN_FEATURE_PACKET_FILTERING
24487
24488 case WLAN_HAL_DUMP_COMMAND_RSP:
24489 return WDI_HAL_DUMP_CMD_RESP;
24490 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24491 return WDI_SET_POWER_PARAMS_RESP;
24492#ifdef WLAN_FEATURE_VOWIFI_11R
24493 case WLAN_HAL_AGGR_ADD_TS_RSP:
24494 return WDI_AGGR_ADD_TS_RESP;
24495#endif
24496
24497#ifdef WLAN_FEATURE_GTK_OFFLOAD
24498 case WLAN_HAL_GTK_OFFLOAD_RSP:
24499 return WDI_GTK_OFFLOAD_RESP;
24500 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24501 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24502#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24503#ifdef WLAN_WAKEUP_EVENTS
24504 case WLAN_HAL_WAKE_REASON_IND:
24505 return WDI_HAL_WAKE_REASON_IND;
24506#endif // WLAN_WAKEUP_EVENTS
24507
24508 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24509 return WDI_SET_TM_LEVEL_RESP;
24510 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24511 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024512#ifdef WLAN_FEATURE_11AC
24513 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24514 return WDI_UPDATE_VHT_OP_MODE_RESP;
24515#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024516#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024517 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24518 return WDI_GET_ROAM_RSSI_RESP;
24519#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024520
Leo Chang9056f462013-08-01 19:21:11 -070024521#ifdef FEATURE_WLAN_LPHB
24522 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024523 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024524 case WLAN_HAL_LPHB_CFG_RSP:
24525 return WDI_LPHB_CFG_RESP;
24526#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024527
24528 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24529 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024530 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24531 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024532
Rajeev79dbe4c2013-10-05 11:03:42 +053024533#ifdef FEATURE_WLAN_BATCH_SCAN
24534 case WLAN_HAL_BATCHSCAN_SET_RSP:
24535 return WDI_SET_BATCH_SCAN_RESP;
24536 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24537 return WDI_BATCHSCAN_RESULT_IND;
24538#endif // FEATURE_WLAN_BATCH_SCAN
24539
Leo Chang0b0e45a2013-12-15 15:18:55 -080024540#ifdef FEATURE_WLAN_CH_AVOID
24541 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24542 return WDI_HAL_CH_AVOID_IND;
24543#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024544 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24545 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024546 case WLAN_HAL_PRINT_REG_INFO_IND:
24547 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024548 case WLAN_HAL_CH_SWITCH_V1_RSP:
24549 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024550 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24551 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024552#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24553 case WLAN_HAL_LL_SET_STATS_RSP:
24554 return WDI_LL_STATS_SET_RSP;
24555 case WLAN_HAL_LL_GET_STATS_RSP:
24556 return WDI_LL_STATS_GET_RSP;
24557 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24558 return WDI_LL_STATS_CLEAR_RSP;
24559 case WLAN_HAL_LL_NOTIFY_STATS:
24560 return WDI_HAL_LL_STATS_RESULTS_IND;
24561#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024562#ifdef WLAN_FEATURE_EXTSCAN
24563 case WLAN_HAL_EXT_SCAN_START_RSP:
24564 return WDI_EXTSCAN_START_RSP;
24565 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24566 return WDI_EXTSCAN_STOP_RSP;
24567 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24568 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24569 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24570 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24571 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24572 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24573 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24574 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24575 case WLAN_HAL_SIG_RSSI_SET_RSP:
24576 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24577 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24578 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24579 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24580 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24581 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24582 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24583 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24584 return WDI_HAL_EXTSCAN_RESULT_IND;
24585 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24586 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24587 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24588 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24589#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024590 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24591 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024592 case WLAN_HAL_FW_STATS_RSP:
24593 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024594 case WLAN_HAL_ENCRYPT_DATA_RSP:
24595 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024596 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24597 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024598 case WLAN_HAL_GET_FRAME_LOG_RSP:
24599 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024600 case WLAN_HAL_NAN_RSP:
24601 return WDI_NAN_RESPONSE;
24602 case WLAN_HAL_NAN_EVT:
24603 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024604 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24605 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024606 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24607 return WDI_MON_START_RSP;
24608 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24609 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024610 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24611 return WDI_FATAL_EVENT_LOGGING_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 }
24615
24616}/*HAL_2_WDI_RSP_TYPE*/
24617
24618
24619/*Convert WDI driver type into HAL driver type*/
24620WPT_STATIC WPT_INLINE tDriverType
24621WDI_2_HAL_DRV_TYPE
24622(
24623 WDI_DriverType wdiDriverType
24624)
24625{
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 the chances of getting inlined*/
24628 switch( wdiDriverType )
24629 {
24630 case WDI_DRIVER_TYPE_PRODUCTION:
24631 return eDRIVER_TYPE_PRODUCTION;
24632 case WDI_DRIVER_TYPE_MFG:
24633 return eDRIVER_TYPE_MFG;
24634 case WDI_DRIVER_TYPE_DVT:
24635 return eDRIVER_TYPE_DVT;
24636 }
24637
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639}/*WDI_2_HAL_DRV_TYPE*/
24640
24641
24642/*Convert WDI stop reason into HAL stop reason*/
24643WPT_STATIC WPT_INLINE tHalStopType
24644WDI_2_HAL_STOP_REASON
24645(
24646 WDI_StopType wdiDriverType
24647)
24648{
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 the chances of getting inlined*/
24651 switch( wdiDriverType )
24652 {
24653 case WDI_STOP_TYPE_SYS_RESET:
24654 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024655 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24656 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 case WDI_STOP_TYPE_RF_KILL:
24658 return HAL_STOP_TYPE_RF_KILL;
24659 }
24660
Jeff Johnsone7245742012-09-05 17:12:55 -070024661 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024662}/*WDI_2_HAL_STOP_REASON*/
24663
24664
24665/*Convert WDI scan mode type into HAL scan mode type*/
24666WPT_STATIC WPT_INLINE eHalSysMode
24667WDI_2_HAL_SCAN_MODE
24668(
24669 WDI_ScanMode wdiScanMode
24670)
24671{
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 the chances of getting inlined*/
24674 switch( wdiScanMode )
24675 {
24676 case WDI_SCAN_MODE_NORMAL:
24677 return eHAL_SYS_MODE_NORMAL;
24678 case WDI_SCAN_MODE_LEARN:
24679 return eHAL_SYS_MODE_LEARN;
24680 case WDI_SCAN_MODE_SCAN:
24681 return eHAL_SYS_MODE_SCAN;
24682 case WDI_SCAN_MODE_PROMISC:
24683 return eHAL_SYS_MODE_PROMISC;
24684 case WDI_SCAN_MODE_SUSPEND_LINK:
24685 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024686 case WDI_SCAN_MODE_ROAM_SCAN:
24687 return eHAL_SYS_MODE_ROAM_SCAN;
24688 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24689 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 }
24691
Jeff Johnsone7245742012-09-05 17:12:55 -070024692 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024693}/*WDI_2_HAL_SCAN_MODE*/
24694
24695/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024696WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024697WDI_2_HAL_SEC_CH_OFFSET
24698(
24699 WDI_HTSecondaryChannelOffset wdiSecChOffset
24700)
24701{
Jeff Johnsone7245742012-09-05 17:12:55 -070024702 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024703 the chances of getting inlined*/
24704 switch( wdiSecChOffset )
24705 {
24706 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24712#ifdef WLAN_FEATURE_11AC
24713 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24714 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24715 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24716 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24717 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24718 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24719 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24720 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24721 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24722 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24723 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24724 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24725 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24726 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24727#endif
24728 default:
24729 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 }
24731
Jeff Johnsone7245742012-09-05 17:12:55 -070024732 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024733}/*WDI_2_HAL_SEC_CH_OFFSET*/
24734
24735/*Convert WDI BSS type into HAL BSS type*/
24736WPT_STATIC WPT_INLINE tSirBssType
24737WDI_2_HAL_BSS_TYPE
24738(
24739 WDI_BssType wdiBSSType
24740)
24741{
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 the chances of getting inlined*/
24744 switch( wdiBSSType )
24745 {
24746 case WDI_INFRASTRUCTURE_MODE:
24747 return eSIR_INFRASTRUCTURE_MODE;
24748 case WDI_INFRA_AP_MODE:
24749 return eSIR_INFRA_AP_MODE;
24750 case WDI_IBSS_MODE:
24751 return eSIR_IBSS_MODE;
24752 case WDI_BTAMP_STA_MODE:
24753 return eSIR_BTAMP_STA_MODE;
24754 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 case WDI_BSS_AUTO_MODE:
24757 return eSIR_AUTO_MODE;
24758 }
24759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024761}/*WDI_2_HAL_BSS_TYPE*/
24762
24763/*Convert WDI NW type into HAL NW type*/
24764WPT_STATIC WPT_INLINE tSirNwType
24765WDI_2_HAL_NW_TYPE
24766(
24767 WDI_NwType wdiNWType
24768)
24769{
Jeff Johnsone7245742012-09-05 17:12:55 -070024770 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024771 the chances of getting inlined*/
24772 switch( wdiNWType )
24773 {
24774 case WDI_11A_NW_TYPE:
24775 return eSIR_11A_NW_TYPE;
24776 case WDI_11B_NW_TYPE:
24777 return eSIR_11B_NW_TYPE;
24778 case WDI_11G_NW_TYPE:
24779 return eSIR_11G_NW_TYPE;
24780 case WDI_11N_NW_TYPE:
24781 return eSIR_11N_NW_TYPE;
24782 }
24783
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785}/*WDI_2_HAL_NW_TYPE*/
24786
24787/*Convert WDI chanel bonding type into HAL cb type*/
24788WPT_STATIC WPT_INLINE ePhyChanBondState
24789WDI_2_HAL_CB_STATE
24790(
24791 WDI_PhyChanBondState wdiCbState
24792)
24793{
Jeff Johnsone7245742012-09-05 17:12:55 -070024794 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 the chances of getting inlined*/
24796 switch ( wdiCbState )
24797 {
24798 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24799 return PHY_SINGLE_CHANNEL_CENTERED;
24800 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24801 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24802 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24803 return PHY_DOUBLE_CHANNEL_CENTERED;
24804 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24805 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024806#ifdef WLAN_FEATURE_11AC
24807 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24808 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24809 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24810 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24811 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24812 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24813 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24814 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24815 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24816 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24817 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24818 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24819 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24820 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24821#endif
24822 case WDI_MAX_CB_STATE:
24823 default:
24824 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024826
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 return PHY_CHANNEL_BONDING_STATE_MAX;
24828}/*WDI_2_HAL_CB_STATE*/
24829
24830/*Convert WDI chanel bonding type into HAL cb type*/
24831WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24832WDI_2_HAL_HT_OPER_MODE
24833(
24834 WDI_HTOperatingMode wdiHTOperMode
24835)
24836{
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024838 the chances of getting inlined*/
24839 switch ( wdiHTOperMode )
24840 {
24841 case WDI_HT_OP_MODE_PURE:
24842 return eSIR_HT_OP_MODE_PURE;
24843 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24844 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24845 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24846 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24847 case WDI_HT_OP_MODE_MIXED:
24848 return eSIR_HT_OP_MODE_MIXED;
24849 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024850
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 return eSIR_HT_OP_MODE_MAX;
24852}/*WDI_2_HAL_HT_OPER_MODE*/
24853
24854/*Convert WDI mimo PS type into HAL mimo PS type*/
24855WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24856WDI_2_HAL_MIMO_PS
24857(
24858 WDI_HTMIMOPowerSaveState wdiHTOperMode
24859)
24860{
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 the chances of getting inlined*/
24863 switch ( wdiHTOperMode )
24864 {
24865 case WDI_HT_MIMO_PS_STATIC:
24866 return eSIR_HT_MIMO_PS_STATIC;
24867 case WDI_HT_MIMO_PS_DYNAMIC:
24868 return eSIR_HT_MIMO_PS_DYNAMIC;
24869 case WDI_HT_MIMO_PS_NA:
24870 return eSIR_HT_MIMO_PS_NA;
24871 case WDI_HT_MIMO_PS_NO_LIMIT:
24872 return eSIR_HT_MIMO_PS_NO_LIMIT;
24873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024874
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 return eSIR_HT_MIMO_PS_MAX;
24876}/*WDI_2_HAL_MIMO_PS*/
24877
24878/*Convert WDI ENC type into HAL ENC type*/
24879WPT_STATIC WPT_INLINE tAniEdType
24880WDI_2_HAL_ENC_TYPE
24881(
24882 WDI_EncryptType wdiEncType
24883)
24884{
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 the chances of getting inlined*/
24887 switch ( wdiEncType )
24888 {
24889 case WDI_ENCR_NONE:
24890 return eSIR_ED_NONE;
24891
24892 case WDI_ENCR_WEP40:
24893 return eSIR_ED_WEP40;
24894
24895 case WDI_ENCR_WEP104:
24896 return eSIR_ED_WEP104;
24897
24898 case WDI_ENCR_TKIP:
24899 return eSIR_ED_TKIP;
24900
24901 case WDI_ENCR_CCMP:
24902 return eSIR_ED_CCMP;
24903
24904 case WDI_ENCR_AES_128_CMAC:
24905 return eSIR_ED_AES_128_CMAC;
24906#if defined(FEATURE_WLAN_WAPI)
24907 case WDI_ENCR_WPI:
24908 return eSIR_ED_WPI;
24909#endif
24910 default:
24911 return eSIR_ED_NOT_IMPLEMENTED;
24912 }
24913
24914}/*WDI_2_HAL_ENC_TYPE*/
24915
24916/*Convert WDI WEP type into HAL WEP type*/
24917WPT_STATIC WPT_INLINE tAniWepType
24918WDI_2_HAL_WEP_TYPE
24919(
24920 WDI_WepType wdiWEPType
24921)
24922{
Jeff Johnsone7245742012-09-05 17:12:55 -070024923 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024924 the chances of getting inlined*/
24925 switch ( wdiWEPType )
24926 {
24927 case WDI_WEP_STATIC:
24928 return eSIR_WEP_STATIC;
24929
24930 case WDI_WEP_DYNAMIC:
24931 return eSIR_WEP_DYNAMIC;
24932 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024933
Jeff Johnson295189b2012-06-20 16:38:30 -070024934 return eSIR_WEP_MAX;
24935}/*WDI_2_HAL_WEP_TYPE*/
24936
24937WPT_STATIC WPT_INLINE tSirLinkState
24938WDI_2_HAL_LINK_STATE
24939(
24940 WDI_LinkStateType wdiLinkState
24941)
24942{
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 the chances of getting inlined*/
24945 switch ( wdiLinkState )
24946 {
24947 case WDI_LINK_IDLE_STATE:
24948 return eSIR_LINK_IDLE_STATE;
24949
24950 case WDI_LINK_PREASSOC_STATE:
24951 return eSIR_LINK_PREASSOC_STATE;
24952
24953 case WDI_LINK_POSTASSOC_STATE:
24954 return eSIR_LINK_POSTASSOC_STATE;
24955
24956 case WDI_LINK_AP_STATE:
24957 return eSIR_LINK_AP_STATE;
24958
24959 case WDI_LINK_IBSS_STATE:
24960 return eSIR_LINK_IBSS_STATE;
24961
24962 case WDI_LINK_BTAMP_PREASSOC_STATE:
24963 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24964
24965 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24966 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24967
24968 case WDI_LINK_BTAMP_AP_STATE:
24969 return eSIR_LINK_BTAMP_AP_STATE;
24970
24971 case WDI_LINK_BTAMP_STA_STATE:
24972 return eSIR_LINK_BTAMP_STA_STATE;
24973
24974 case WDI_LINK_LEARN_STATE:
24975 return eSIR_LINK_LEARN_STATE;
24976
24977 case WDI_LINK_SCAN_STATE:
24978 return eSIR_LINK_SCAN_STATE;
24979
24980 case WDI_LINK_FINISH_SCAN_STATE:
24981 return eSIR_LINK_FINISH_SCAN_STATE;
24982
24983 case WDI_LINK_INIT_CAL_STATE:
24984 return eSIR_LINK_INIT_CAL_STATE;
24985
24986 case WDI_LINK_FINISH_CAL_STATE:
24987 return eSIR_LINK_FINISH_CAL_STATE;
24988
Jeff Johnson295189b2012-06-20 16:38:30 -070024989 case WDI_LINK_LISTEN_STATE:
24990 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024991
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024992 case WDI_LINK_SEND_ACTION_STATE:
24993 return eSIR_LINK_SEND_ACTION_STATE;
24994
Jeff Johnson295189b2012-06-20 16:38:30 -070024995 default:
24996 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024998}
24999
Jeff Johnsone7245742012-09-05 17:12:55 -070025000/*Translate a STA Context from WDI into HAL*/
25001WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025002void
25003WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025004(
Jeff Johnson295189b2012-06-20 16:38:30 -070025005 tConfigStaParams* phalConfigSta,
25006 WDI_ConfigStaReqInfoType* pwdiConfigSta
25007)
25008{
25009 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025010#ifdef WLAN_FEATURE_11AC
25011 /* Get the Version 1 Handler */
25012 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25013 if (WDI_getFwWlanFeatCaps(DOT11AC))
25014 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025015 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025016 }
25017#endif
25018 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025020
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 wpalMemoryCopy(phalConfigSta->bssId,
25022 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25023
25024 wpalMemoryCopy(phalConfigSta->staMac,
25025 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025026
25027 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25028 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25029 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25030 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25031 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25032 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25033 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25034 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25035 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25036 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25037 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25038 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25039 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25040 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25041 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25042 phalConfigSta->action = pwdiConfigSta->wdiAction;
25043 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25044 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25045 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25046 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25047 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25048 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25049 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025050
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25052
Jeff Johnsone7245742012-09-05 17:12:55 -070025053 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025054 pwdiConfigSta->wdiSupportedRates.opRateMode;
25055 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25056 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025057 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25059 }
25060 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25061 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025062 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25064 }
25065 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25066 {
25067 phalConfigSta->supportedRates.aniLegacyRates[i] =
25068 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25069 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25072 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25073 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25076 }
25077 phalConfigSta->supportedRates.rxHighestDataRate =
25078 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25079
Jeff Johnsone7245742012-09-05 17:12:55 -070025080#ifdef WLAN_FEATURE_11AC
25081 if(phalConfigSta_V1 != NULL)
25082 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025083 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25084 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25085 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25086 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025087 }
25088#endif
25089
Jeff Johnson295189b2012-06-20 16:38:30 -070025090 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025091
Jeff Johnsone7245742012-09-05 17:12:55 -070025092#ifdef WLAN_FEATURE_11AC
25093 if(phalConfigSta_V1 != NULL)
25094 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025095 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25096 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025097 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025098 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025099 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25100 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25101
Jeff Johnsone7245742012-09-05 17:12:55 -070025102 }
25103#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025104}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025105
25106/*Translate a Rate set info from WDI into HAL*/
25107WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025108WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025109(
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 tSirMacRateSet* pHalRateSet,
25111 WDI_RateSet* pwdiRateSet
25112)
25113{
Jeff Johnsone7245742012-09-05 17:12:55 -070025114 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25116
25117 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25118 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25119
25120 for ( i = 0; i < pHalRateSet->numRates; i++ )
25121 {
25122 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25123 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025124
Jeff Johnson295189b2012-06-20 16:38:30 -070025125}/*WDI_CopyWDIRateSetToHALRateSet*/
25126
25127
25128/*Translate an EDCA Parameter Record from WDI into HAL*/
25129WPT_STATIC WPT_INLINE void
25130WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025131(
Jeff Johnson295189b2012-06-20 16:38:30 -070025132 tSirMacEdcaParamRecord* phalEdcaParam,
25133 WDI_EdcaParamRecord* pWDIEdcaParam
25134)
25135{
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 the chances of getting inlined*/
25138
25139 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25140 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25141 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25142 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25143
25144 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25145 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25146 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25147}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25148
25149
25150/*Copy a management frame header from WDI fmt into HAL fmt*/
25151WPT_STATIC WPT_INLINE void
25152WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25153(
25154 tSirMacMgmtHdr* pmacMgmtHdr,
25155 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25156)
25157{
25158 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25159 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25160 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25161 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25162 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25163 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25164 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25165 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25166 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25167 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25168 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25169
25170 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25171 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25172
Jeff Johnsone7245742012-09-05 17:12:55 -070025173 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025175 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 pwdiMacMgmtHdr->bssId, 6);
25179
25180 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25181 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25182 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25183
25184}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25185
25186
25187/*Copy config bss parameters from WDI fmt into HAL fmt*/
25188WPT_STATIC WPT_INLINE void
25189WDI_CopyWDIConfigBSSToHALConfigBSS
25190(
25191 tConfigBssParams* phalConfigBSS,
25192 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25193)
25194{
25195
25196 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025197#ifdef WLAN_FEATURE_11AC
25198 /* Get the Version 1 Handler */
25199 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25200 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025201 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025202#endif
25203
Jeff Johnson295189b2012-06-20 16:38:30 -070025204 wpalMemoryCopy( phalConfigBSS->bssId,
25205 pwdiConfigBSS->macBSSID,
25206 WDI_MAC_ADDR_LEN);
25207
25208#ifdef HAL_SELF_STA_PER_BSS
25209 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25210 pwdiConfigBSS->macSelfAddr,
25211 WDI_MAC_ADDR_LEN);
25212#endif
25213
25214 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25215
25216 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25217 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25218
Jeff Johnsone7245742012-09-05 17:12:55 -070025219 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025220 pwdiConfigBSS->ucShortSlotTimeSupported;
25221 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25222 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25223 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25224 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25225 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025226 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25228 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25229 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25230 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25231 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25232 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25233 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25234 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25235 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25236 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25237 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25238
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 phalConfigBSS->htOperMode =
25240 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025241
25242 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25243 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25244 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25245 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25246
25247#ifdef WLAN_FEATURE_VOWIFI
25248 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25249#endif
25250
25251 /*! Used 32 as magic number because that is how the ssid is declared inside the
25252 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025253 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025254 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25255 pwdiConfigBSS->wdiSSID.ucLength : 32;
25256 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 pwdiConfigBSS->wdiSSID.sSSID,
25258 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025259
25260 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25261 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025262
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25264 &pwdiConfigBSS->wdiRateSet);
25265
25266 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25267
25268 if(phalConfigBSS->edcaParamsValid)
25269 {
25270 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25271 &pwdiConfigBSS->wdiBEEDCAParams);
25272 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25273 &pwdiConfigBSS->wdiBKEDCAParams);
25274 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25275 &pwdiConfigBSS->wdiVIEDCAParams);
25276 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25277 &pwdiConfigBSS->wdiVOEDCAParams);
25278 }
25279
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025281
25282 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25283
25284#ifdef WLAN_FEATURE_VOWIFI_11R
25285
Jeff Johnsone7245742012-09-05 17:12:55 -070025286 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025288
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 if( phalConfigBSS->extSetStaKeyParamValid )
25290 {
25291 /*-----------------------------------------------------------------------
25292 Copy the STA Key parameters into the HAL message
25293 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25296
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25299
25300 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25301
25302 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25303
25304 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25305
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25307 keyIndex++)
25308 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25311 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25312 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25313 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25314 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25315 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025317 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025320 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25322 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 WDI_MAX_KEY_LENGTH);
25325 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 }
25327 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25328 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025329 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025330 sizeof(phalConfigBSS->extSetStaKeyParam) );
25331 }
25332
25333#endif /*WLAN_FEATURE_VOWIFI_11R*/
25334
Jeff Johnsone7245742012-09-05 17:12:55 -070025335#ifdef WLAN_FEATURE_11AC
25336 if(phalConfigBSS_V1 != NULL)
25337 {
25338 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25339 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25340 }
25341#endif
25342
Jeff Johnson295189b2012-06-20 16:38:30 -070025343}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25344
25345
Jeff Johnsone7245742012-09-05 17:12:55 -070025346/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 pointed to by user data */
25348WPT_STATIC WPT_INLINE void
25349WDI_ExtractRequestCBFromEvent
25350(
25351 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025352 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 void** ppUserData
25354)
25355{
25356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25357 switch ( pEvent->wdiRequest )
25358 {
25359 case WDI_START_REQ:
25360 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25361 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25362 break;
25363 case WDI_STOP_REQ:
25364 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25365 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25366 break;
25367 case WDI_INIT_SCAN_REQ:
25368 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25369 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25370 break;
25371 case WDI_START_SCAN_REQ:
25372 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25373 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25374 break;
25375 case WDI_END_SCAN_REQ:
25376 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25377 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25378 break;
25379 case WDI_FINISH_SCAN_REQ:
25380 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25381 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25382 break;
25383 case WDI_JOIN_REQ:
25384 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25385 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25386 break;
25387 case WDI_CONFIG_BSS_REQ:
25388 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25389 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25390 break;
25391 case WDI_DEL_BSS_REQ:
25392 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25393 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25394 break;
25395 case WDI_POST_ASSOC_REQ:
25396 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25397 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25398 break;
25399 case WDI_DEL_STA_REQ:
25400 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25401 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25402 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025403
25404 case WDI_ADD_STA_SELF_REQ:
25405 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25406 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25407 break;
25408
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 case WDI_DEL_STA_SELF_REQ:
25410 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25411 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25412 break;
25413
25414 case WDI_SET_BSS_KEY_REQ:
25415 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25416 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25417 break;
25418 case WDI_RMV_BSS_KEY_REQ:
25419 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25420 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25421 break;
25422 case WDI_SET_STA_KEY_REQ:
25423 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25424 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25425 break;
25426 case WDI_RMV_STA_KEY_REQ:
25427 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25428 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25429 break;
25430 case WDI_ADD_TS_REQ:
25431 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25432 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25433 break;
25434 case WDI_DEL_TS_REQ:
25435 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25436 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25437 break;
25438 case WDI_UPD_EDCA_PRMS_REQ:
25439 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25440 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25441 break;
25442 case WDI_ADD_BA_SESSION_REQ:
25443 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25444 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25445 break;
25446 case WDI_DEL_BA_REQ:
25447 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25448 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25449 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025450#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 case WDI_TSM_STATS_REQ:
25452 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25453 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25454 break;
25455#endif
25456 case WDI_CH_SWITCH_REQ:
25457 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25458 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25459 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025460 case WDI_CH_SWITCH_REQ_V1:
25461 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25462 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25463 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025464 case WDI_CONFIG_STA_REQ:
25465 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25466 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25467 break;
25468 case WDI_SET_LINK_ST_REQ:
25469 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25470 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25471 break;
25472 case WDI_GET_STATS_REQ:
25473 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25474 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25475 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025476#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025477 case WDI_GET_ROAM_RSSI_REQ:
25478 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25479 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25480 break;
25481#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025482 case WDI_UPDATE_CFG_REQ:
25483 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25484 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25485 break;
25486 case WDI_ADD_BA_REQ:
25487 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25488 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25489 break;
25490 case WDI_TRIGGER_BA_REQ:
25491 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25492 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25493 break;
25494 case WDI_UPD_BCON_PRMS_REQ:
25495 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25496 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25497 break;
25498 case WDI_SND_BCON_REQ:
25499 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25500 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25501 break;
25502 case WDI_ENTER_BMPS_REQ:
25503 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25504 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25505 break;
25506 case WDI_EXIT_BMPS_REQ:
25507 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25508 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25509 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025510 case WDI_ENTER_IMPS_REQ:
25511 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25512 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25513 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 case WDI_ENTER_UAPSD_REQ:
25515 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25516 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25517 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025518 case WDI_EXIT_UAPSD_REQ:
25519 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25520 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25521 break;
25522 case WDI_SET_UAPSD_PARAM_REQ:
25523 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25524 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25525 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 case WDI_UPDATE_UAPSD_PARAM_REQ:
25527 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25528 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25529 break;
25530 case WDI_CONFIGURE_RXP_FILTER_REQ:
25531 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25532 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25533 break;
25534 case WDI_SET_BEACON_FILTER_REQ:
25535 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25536 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25537 break;
25538 case WDI_REM_BEACON_FILTER_REQ:
25539 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25540 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 case WDI_SET_RSSI_THRESHOLDS_REQ:
25543 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25544 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25545 break;
25546 case WDI_HOST_OFFLOAD_REQ:
25547 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25548 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25549 break;
25550 case WDI_WOWL_ADD_BC_PTRN_REQ:
25551 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25552 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25553 break;
25554 case WDI_WOWL_DEL_BC_PTRN_REQ:
25555 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25556 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25557 break;
25558 case WDI_WOWL_ENTER_REQ:
25559 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25560 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25561 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025562 case WDI_WOWL_EXIT_REQ:
25563 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25564 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25565 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25567 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25568 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25569 break;
25570 case WDI_FLUSH_AC_REQ:
25571 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25572 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25573 break;
25574 case WDI_BTAMP_EVENT_REQ:
25575 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25576 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25577 break;
25578 case WDI_KEEP_ALIVE_REQ:
25579 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25580 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25581 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025582#if defined FEATURE_WLAN_SCAN_PNO
25583 case WDI_SET_PREF_NETWORK_REQ:
25584 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25585 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25586 break;
25587 case WDI_SET_RSSI_FILTER_REQ:
25588 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25589 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25590 break;
25591 case WDI_UPDATE_SCAN_PARAMS_REQ:
25592 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25593 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25594 break;
25595#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 case WDI_SET_TX_PER_TRACKING_REQ:
25597 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25598 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025599 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025600#if defined WLAN_FEATURE_PACKET_FILTERING
25601 case WDI_8023_MULTICAST_LIST_REQ:
25602 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25603 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25604 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025605 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25606 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25607 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25608 break;
25609 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25610 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25611 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25612 break;
25613 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25614 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25615 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25616 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025617#endif
25618 case WDI_SET_POWER_PARAMS_REQ:
25619 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25620 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25621 break;
25622#if defined WLAN_FEATURE_GTK_OFFLOAD
25623 case WDI_GTK_OFFLOAD_REQ:
25624 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25625 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25626 break;
25627 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25628 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25629 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25630 break;
25631#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025632
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 default:
25634 *ppfnReqCB = NULL;
25635 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 }
25638}/*WDI_ExtractRequestCBFromEvent*/
25639
25640
25641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025642 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 frame xtl is enabled for a particular STA.
25644
25645 WDI_PostAssocReq must have been called.
25646
Jeff Johnsone7245742012-09-05 17:12:55 -070025647 @param uSTAIdx: STA index
25648
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 @see WDI_PostAssocReq
25650 @return Result of the function call
25651*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025652wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025653WDI_IsHwFrameTxTranslationCapable
25654(
25655 wpt_uint8 uSTAIdx
25656)
25657{
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 uma value*/
25660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 ------------------------------------------------------------------------*/
25663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25664 {
25665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25666 "WDI API call before module is initialized - Fail request");
25667
Jeff Johnsone7245742012-09-05 17:12:55 -070025668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 }
25670
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025671#ifdef WLAN_SOFTAP_VSTA_FEATURE
25672 if (IS_VSTA_IDX(uSTAIdx))
25673 {
25674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25675 "STA %d is a Virtual STA, "
25676 "HW frame translation disabled", uSTAIdx);
25677 return eWLAN_PAL_FALSE;
25678 }
25679#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025680
Jeff Johnson295189b2012-06-20 16:38:30 -070025681 return gWDICb.bFrameTransEnabled;
25682}/*WDI_IsHwFrameTxTranslationCapable*/
25683
Katya Nigam6201c3e2014-05-27 17:51:42 +053025684
25685/**
25686 @brief WDI_IsSelfSTA - check if staid is self sta index
25687
25688
25689 @param pWDICtx: pointer to the WLAN DAL context
25690 ucSTAIdx: station index
25691
25692 @return Result of the function call
25693*/
25694wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25695{
25696 wpt_uint8 ucSTAType;
25697
25698 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25699 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25700 {
25701 if( ucSTAType == WDI_STA_ENTRY_SELF )
25702 return eWLAN_PAL_TRUE;
25703 }
25704
25705 return eWLAN_PAL_FALSE;
25706}
25707
25708
25709
Jeff Johnson295189b2012-06-20 16:38:30 -070025710#ifdef FEATURE_WLAN_SCAN_PNO
25711/**
25712 @brief WDI_SetPreferredNetworkList
25713
Jeff Johnsone7245742012-09-05 17:12:55 -070025714 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025715 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025716
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 wdiPNOScanCb: callback for passing back the response
25718 of the Set PNO operation received from the
25719 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025720
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025722 callback
25723
Jeff Johnson295189b2012-06-20 16:38:30 -070025724 @return Result of the function call
25725*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025727WDI_SetPreferredNetworkReq
25728(
25729 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25730 WDI_PNOScanCb wdiPNOScanCb,
25731 void* pUserData
25732)
25733{
25734 WDI_EventInfoType wdiEventData = {{0}};
25735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25736
25737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 ------------------------------------------------------------------------*/
25740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25741 {
25742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25743 "WDI API call before module is initialized - Fail request");
25744
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 }
25747
25748 /*------------------------------------------------------------------------
25749 Fill in Event data and post to the Main FSM
25750 ------------------------------------------------------------------------*/
25751 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025752 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025753 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 wdiEventData.pUserData = pUserData;
25756
25757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25758}
25759
25760
25761/**
25762 @brief WDI_SetRssiFilterReq
25763
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025765 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025766
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 wdiRssiFilterCb: callback for passing back the response
25768 of the Set RSSI Filter operation received from the
25769 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025770
Jeff Johnson295189b2012-06-20 16:38:30 -070025771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025772 callback
25773
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 @return Result of the function call
25775*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025777WDI_SetRssiFilterReq
25778(
25779 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25780 WDI_RssiFilterCb wdiRssiFilterCb,
25781 void* pUserData
25782)
25783{
25784 WDI_EventInfoType wdiEventData = {{0}};
25785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25786
25787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025789 ------------------------------------------------------------------------*/
25790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25791 {
25792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25793 "WDI API call before module is initialized - Fail request");
25794
Jeff Johnsone7245742012-09-05 17:12:55 -070025795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 }
25797
25798 /*------------------------------------------------------------------------
25799 Fill in Event data and post to the Main FSM
25800 ------------------------------------------------------------------------*/
25801 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 wdiEventData.pUserData = pUserData;
25806
25807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25808}/*WDI_SetRssiFilterReq*/
25809
25810/**
25811 @brief WDI_UpdateScanParamsReq
25812
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025815
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 wdiUpdateScanParamsCb: callback for passing back the response
25817 of the Set PNO operation received from the
25818 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025819
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025821 callback
25822
Jeff Johnson295189b2012-06-20 16:38:30 -070025823 @return Result of the function call
25824*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025825WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025826WDI_UpdateScanParamsReq
25827(
25828 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25829 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25830 void* pUserData
25831)
25832{
25833 WDI_EventInfoType wdiEventData = {{0}};
25834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25835
25836 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025837 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 ------------------------------------------------------------------------*/
25839 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25840 {
25841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25842 "WDI API call before module is initialized - Fail request");
25843
Jeff Johnsone7245742012-09-05 17:12:55 -070025844 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 }
25846
25847 /*------------------------------------------------------------------------
25848 Fill in Event data and post to the Main FSM
25849 ------------------------------------------------------------------------*/
25850 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025851 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025852 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025853 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025854 wdiEventData.pUserData = pUserData;
25855
25856 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25857}
25858
25859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025862
25863 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 pwdiPNOScanReqParams: pointer to the info received
25865 from upper layers
25866 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 and its size
25868
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 @return Result of the function call
25870*/
25871
25872WDI_Status
25873WDI_PackPreferredNetworkList
25874(
25875 WDI_ControlBlockType* pWDICtx,
25876 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25877 wpt_uint8** ppSendBuffer,
25878 wpt_uint16* pSize
25879)
25880{
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 wpt_uint16 usDataOffset = 0;
25883 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025884 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 /*-----------------------------------------------------------------------
25887 Get message buffer
25888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025890 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025892 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 {
25894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025895 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025896 pwdiPNOScanReqParams);
25897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 }
25900
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025901 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25902
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 /*-------------------------------------------------------------------------
25904 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25905 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025906 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025908 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25910
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025911 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25916
25917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25920 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25921 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25922
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025923 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025924 {
25925 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025926 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25928
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025929 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025931 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025932
25933 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025934 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025936
25937 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025938 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025939 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025940
Jeff Johnsone7245742012-09-05 17:12:55 -070025941 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025942 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025944 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25945 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25946 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25947 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025948
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025949 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025952
25953 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025954 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25956
25957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025959 pPrefNetwListParams->aNetworks[i].ssId.length,
25960 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 }
25962
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025963 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25966 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25967 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25968
25969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025971 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25973 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25974
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025975 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025977 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025979 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25981 }
25982
25983 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025984 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25986 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25987 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025989
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025990 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025991 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025992 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025993
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25996 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25997 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025998 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025999
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026000 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026001 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026002 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026003
26004 /*Set the output values*/
26005 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026006 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026007
26008 return WDI_STATUS_SUCCESS;
26009}/*WDI_PackPreferredNetworkList*/
26010
26011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026014
26015 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 pwdiPNOScanReqParams: pointer to the info received
26017 from upper layers
26018 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026019 and its size
26020
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 @return Result of the function call
26022*/
26023
26024WDI_Status
26025WDI_PackPreferredNetworkListNew
26026(
26027 WDI_ControlBlockType* pWDICtx,
26028 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26029 wpt_uint8** ppSendBuffer,
26030 wpt_uint16* pSize
26031)
26032{
Jeff Johnsone7245742012-09-05 17:12:55 -070026033 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 wpt_uint16 usDataOffset = 0;
26035 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026036 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026038
26039 /*-----------------------------------------------------------------------
26040 Get message buffer
26041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026043 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026045 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 {
26047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026048 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 pwdiPNOScanReqParams);
26050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 }
26053
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026054 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26055
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 /*-------------------------------------------------------------------------
26057 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26058 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026059 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26063
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026064 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26069
26070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26073 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26074 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26075
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026076 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 {
26078 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026079 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026080 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26081
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026082 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026084 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026085
26086 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026087 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026089
26090 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026091 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026093
26094 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026095 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026096 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026097
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026100 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26102
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026103 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026104 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026105 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026106
26107 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026108 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26110
26111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026112 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026113 pPrefNetwListParams->aNetworks[i].ssId.length,
26114 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026115 }
26116
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026117 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26120 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26121 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26122
26123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026124 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026125 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26127 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26128
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026129 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026131 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026133 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26135 }
26136
26137 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026138 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26140 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26141 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026142 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026143
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026144 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026145 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026146 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026147
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026148 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026149 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26150 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26151 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026152 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026153
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026154 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026156 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026157
Jeff Johnson295189b2012-06-20 16:38:30 -070026158
26159 /*Set the output values*/
26160 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026161 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026162
26163 return WDI_STATUS_SUCCESS;
26164}/*WDI_PackPreferredNetworkListNew*/
26165
26166/**
26167 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026168
26169 @param pWDICtx: pointer to the WLAN DAL context
26170 pEventData: pointer to the event information structure
26171
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 @return Result of the function call
26173*/
26174WDI_Status
26175WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026176(
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 WDI_ControlBlockType* pWDICtx,
26178 WDI_EventInfoType* pEventData
26179)
26180{
26181 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26182 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186
26187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026189 -------------------------------------------------------------------------*/
26190 if (( NULL == pEventData ) ||
26191 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26192 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26193 {
26194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 }
26199
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026200 /*----------------------------------------------------------------------
26201 Avoid Enable PNO during any active session or an ongoing session
26202 ----------------------------------------------------------------------*/
26203 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26204 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26205 {
26206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26207 "%s:(Active/Ongoing Session) - Fail request", __func__);
26208
26209 return WDI_STATUS_E_FAILURE;
26210 }
26211
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 /*-------------------------------------------------------------------------
26213 Pack the PNO request structure based on version
26214 -------------------------------------------------------------------------*/
26215 if ( pWDICtx->wdiPNOVersion > 0 )
26216 {
26217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026218 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 pWDICtx->wdiPNOVersion);
26220
26221 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26222 &pSendBuffer, &usSendSize);
26223 }
26224 else
26225 {
26226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026227 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 pWDICtx->wdiPNOVersion);
26229
26230 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26231 &pSendBuffer, &usSendSize);
26232 }
26233
26234 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26235 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26236 {
26237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026238 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026240 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 }
26242
26243 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026245
26246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026247 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26250 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026251}
26252
26253/**
26254 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026255
26256 @param pWDICtx: pointer to the WLAN DAL context
26257 pEventData: pointer to the event information structure
26258
Jeff Johnson295189b2012-06-20 16:38:30 -070026259 @see
26260 @return Result of the function call
26261*/
26262WDI_Status
26263WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026264(
Jeff Johnson295189b2012-06-20 16:38:30 -070026265 WDI_ControlBlockType* pWDICtx,
26266 WDI_EventInfoType* pEventData
26267)
26268{
26269 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26270 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 wpt_uint16 usDataOffset = 0;
26273 wpt_uint16 usSendSize = 0;
26274 wpt_uint8 ucRssiThreshold;
26275
26276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 -------------------------------------------------------------------------*/
26279 if (( NULL == pEventData ) ||
26280 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26281 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26282 {
26283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026287 }
26288
26289 /*-----------------------------------------------------------------------
26290 Get message buffer
26291 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026292 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 sizeof(ucRssiThreshold),
26294 &pSendBuffer, &usDataOffset, &usSendSize))||
26295 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26296 {
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026298 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026302 }
26303
26304 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26305
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 wpalMemoryCopy( pSendBuffer+usDataOffset,
26307 &ucRssiThreshold,
26308 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026309
26310 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026312
26313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26317 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026318}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026319#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26320/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026321 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026323 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026324 by the Device Interface
26325
26326 wdiRoamOffloadScancb: callback for passing back the response
26327 of the Roam Candidate Lookup Req operation received from the
26328 device
26329
26330 pUserData: user data will be passed back with the
26331 callback
26332 @return Result of the function call
26333*/
26334WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026335WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026336(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026337 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026338 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26339 void* pUserData
26340)
26341{
26342 WDI_EventInfoType wdiEventData = {{0}};
26343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26344
26345 /*------------------------------------------------------------------------
26346 Sanity Check
26347 ------------------------------------------------------------------------*/
26348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26349 {
26350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26351 "WDI API call before module is initialized - Fail request");
26352
26353 return WDI_STATUS_E_NOT_ALLOWED;
26354 }
26355
26356 /*------------------------------------------------------------------------
26357 Fill in Event data and post to the Main FSM
26358 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026359 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26360 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26361 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026362 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26363 wdiEventData.pUserData = pUserData;
26364
26365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26366}
26367
26368void
26369WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26370{
26371 switch (wdiEdType)
26372 {
26373 case WDI_ED_NONE:
26374 *EdType = eED_NONE;
26375 break;
26376 case WDI_ED_WEP40:
26377 case WDI_ED_WEP104:
26378 *EdType = eED_WEP;
26379 break;
26380 case WDI_ED_TKIP:
26381 *EdType = eED_TKIP;
26382 break;
26383 case WDI_ED_CCMP:
26384#ifdef WLAN_FEATURE_11W
26385 case WDI_ED_AES_128_CMAC:
26386#endif
26387 *EdType = eED_CCMP;
26388 break;
26389#ifdef FEATURE_WLAN_WAPI
26390 case WDI_ED_WPI:
26391 *EdType = eED_WPI;
26392 break;
26393#endif
26394 case WDI_ED_ANY:
26395 *EdType = eED_ANY;
26396 break;
26397
26398 default:
26399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26400 "%s: Unknown Encryption Type", __func__);
26401 break;
26402 }
26403}
26404
26405/**
26406 @brief Helper function to pack Start Roam Candidate Lookup
26407 Request parameters
26408
26409 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026410 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026411 from upper layers
26412 ppSendBuffer, pSize - out pointers of the packed buffer
26413 and its size
26414
26415 @return Result of the function call
26416*/
26417
26418WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026419WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026420(
26421 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026422 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026423 wpt_uint8** ppSendBuffer,
26424 wpt_uint16* pSize
26425)
26426{
26427 wpt_uint8* pSendBuffer = NULL;
26428 wpt_uint16 usDataOffset = 0;
26429 wpt_uint16 usSendSize = 0;
26430 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26431 wpt_uint8 i;
26432 /*-----------------------------------------------------------------------
26433 Get message buffer
26434 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026436 sizeof(tRoamCandidateListParams),
26437 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026438 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026439 {
26440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026441 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026442 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026443 WDI_ASSERT(0);
26444 return WDI_STATUS_E_FAILURE;
26445 }
26446 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026447 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026448 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026449 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026450 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026451 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026452 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026453 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026454 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026455 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026456 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026457
26458 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026459 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026460 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026461 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026462 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26463 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026464 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26465 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26466 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26467 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26468 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026469 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026470 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026471 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026472 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26473 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26474 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26475 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26476 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26477 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26478 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026479 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026480 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026481 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26482 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26483 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026484
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26486 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26487 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26488 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26489 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26490 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026491 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026492 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26493 pRoamCandidateListParams->RoamScanOffloadEnabled,
26494 pRoamCandidateListParams->Command,
26495 pRoamCandidateListParams->StartScanReason,
26496 pRoamCandidateListParams->NeighborScanTimerPeriod,
26497 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26498 pRoamCandidateListParams->NeighborScanChannelMinTime,
26499 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26500 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26501 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26502 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26503 pRoamCandidateListParams->ConnectedNetwork.authentication,
26504 pRoamCandidateListParams->ConnectedNetwork.encryption,
26505 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26506 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26507 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026508 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026509 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026510 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26513 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026514 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026515 pRoamCandidateListParams->us24GProbeSize);
26516 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026517 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026518 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026519 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026520 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26521 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026522 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026523 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026524 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26525 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26526 pRoamCandidateListParams->nProbes =
26527 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26528 pRoamCandidateListParams->HomeAwayTime =
26529 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026531 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26532 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026534 }
26535
26536
26537 /*Set the output values*/
26538 *ppSendBuffer = pSendBuffer;
26539 *pSize = usSendSize;
26540 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026541}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026542
26543/**
26544 @brief Process Start Roam Candidate Lookup Request function
26545
26546 @param pWDICtx: pointer to the WLAN DAL context
26547 pEventData: pointer to the event information structure
26548
26549 @return Result of the function call
26550*/
26551WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026552WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026553(
26554 WDI_ControlBlockType* pWDICtx,
26555 WDI_EventInfoType* pEventData
26556)
26557{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026558 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026559 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26560 wpt_uint8* pSendBuffer = NULL;
26561 wpt_uint16 usSendSize = 0;
26562 WDI_Status wdiStatus;
26563 /*-------------------------------------------------------------------------
26564 Sanity check
26565 -------------------------------------------------------------------------*/
26566 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026567 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026568 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26569 {
26570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26571 "%s: Invalid parameters", __func__);
26572 WDI_ASSERT(0);
26573 return WDI_STATUS_E_FAILURE;
26574 }
26575
26576 /*-------------------------------------------------------------------------
26577 Pack the Start Roam Candidate Lookup request structure based on version
26578 -------------------------------------------------------------------------*/
26579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26580 "%s: Packing Roam Candidate Lookup request ", __func__);
26581
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026582 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026583 &pSendBuffer, &usSendSize);
26584
26585 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26586 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26587 {
26588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26589 "%s: failed to pack request parameters", __func__);
26590 WDI_ASSERT(0);
26591 return wdiStatus;
26592 }
26593
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026594 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26595 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026596
26597 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026598 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026599 -------------------------------------------------------------------------*/
26600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026601 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026602}
26603
26604/**
26605 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26606 response is being received over the bus from HAL)
26607
26608 @param pWDICtx: pointer to the WLAN DAL context
26609 pEventData: pointer to the event information structure
26610
26611 @see
26612 @return Result of the function call
26613*/
26614WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026615WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026616(
26617 WDI_ControlBlockType* pWDICtx,
26618 WDI_EventInfoType* pEventData
26619)
26620{
26621 WDI_Status wdiStatus;
26622 eHalStatus halStatus;
26623 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26624
26625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26626
26627 /*-------------------------------------------------------------------------
26628 Sanity check
26629 -------------------------------------------------------------------------*/
26630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26631 ( NULL == pEventData->pEventData ))
26632 {
26633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26634 "%s: Invalid parameters", __func__);
26635 WDI_ASSERT(0);
26636 return WDI_STATUS_E_FAILURE;
26637 }
26638
26639 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26640
26641 /*-------------------------------------------------------------------------
26642 Extract response and send it to UMAC
26643 -------------------------------------------------------------------------*/
26644 halStatus = *((eHalStatus*)pEventData->pEventData);
26645 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26646
26647 /*Notify UMAC*/
26648 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26649
26650 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026651}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026652#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026653
26654/**
26655 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026656
26657 @param pWDICtx: pointer to the WLAN DAL context
26658 pEventData: pointer to the event information structure
26659
Jeff Johnson295189b2012-06-20 16:38:30 -070026660 @see
26661 @return Result of the function call
26662*/
26663WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026664WDI_PackUpdateScanParamsReq
26665(
26666 WDI_ControlBlockType* pWDICtx,
26667 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26668 wpt_uint8** ppSendBuffer,
26669 wpt_uint16* pSize
26670)
26671{
26672 wpt_uint8* pSendBuffer = NULL;
26673 wpt_uint16 usDataOffset = 0;
26674 wpt_uint16 usSendSize = 0;
26675 tUpdateScanParams updateScanParams = {0};
26676
26677
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026679 "Begin WDI Update Scan Parameters Old Style Params");
26680 /*-----------------------------------------------------------------------
26681 Get message buffer
26682 -----------------------------------------------------------------------*/
26683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26684 sizeof(updateScanParams),
26685 &pSendBuffer, &usDataOffset, &usSendSize))||
26686 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26687 {
26688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026689 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026690 pwdiUpdateScanParams);
26691 WDI_ASSERT(0);
26692 return WDI_STATUS_E_FAILURE;
26693 }
26694
26695 //
26696 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26697 //
26698
26699 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26700 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26701
26702 updateScanParams.ucChannelCount =
26703 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26704 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26705 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26706 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26707
26708 wpalMemoryCopy( updateScanParams.aChannels,
26709 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26710 updateScanParams.ucChannelCount);
26711
26712
26713 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26714 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26715 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26716 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26717 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26718
26719 wpalMemoryCopy( pSendBuffer+usDataOffset,
26720 &updateScanParams,
26721 sizeof(updateScanParams));
26722
26723 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26724 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26725
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026727 "End Update Scan Parameters Old Style");
26728
26729 /*Set the output values*/
26730 *ppSendBuffer = pSendBuffer;
26731 *pSize = usSendSize;
26732
26733 return WDI_STATUS_SUCCESS;
26734}
26735
26736/**
26737 @brief Process Update Scan Params function
26738
26739 @param pWDICtx: pointer to the WLAN DAL context
26740 pEventData: pointer to the event information structure
26741
26742 @see
26743 @return Result of the function call
26744*/
26745WDI_Status
26746WDI_PackUpdateScanParamsReqEx
26747(
26748 WDI_ControlBlockType* pWDICtx,
26749 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26750 wpt_uint8** ppSendBuffer,
26751 wpt_uint16* pSize
26752)
26753{
26754 wpt_uint8* pSendBuffer = NULL;
26755 wpt_uint16 usDataOffset = 0;
26756 wpt_uint16 usSendSize = 0;
26757 tUpdateScanParamsEx updateScanParams = {0};
26758
26759
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026760 /*-----------------------------------------------------------------------
26761 Get message buffer
26762 -----------------------------------------------------------------------*/
26763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26764 sizeof(updateScanParams),
26765 &pSendBuffer, &usDataOffset, &usSendSize))||
26766 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26767 {
26768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026769 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026770 pwdiUpdateScanParams);
26771 WDI_ASSERT(0);
26772 return WDI_STATUS_E_FAILURE;
26773 }
26774
26775 //
26776 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26777 //
26778
26779 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26780 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26781
26782 updateScanParams.ucChannelCount =
26783 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26784 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26785 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26786 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26787
26788 wpalMemoryCopy( updateScanParams.aChannels,
26789 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26790 updateScanParams.ucChannelCount);
26791
26792
26793 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26794 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26795 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26796 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26797 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26798
26799 wpalMemoryCopy( pSendBuffer+usDataOffset,
26800 &updateScanParams,
26801 sizeof(updateScanParams));
26802
26803 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26804 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26805
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026806 /*Set the output values*/
26807 *ppSendBuffer = pSendBuffer;
26808 *pSize = usSendSize;
26809
26810 return WDI_STATUS_SUCCESS;
26811}
26812
26813/**
26814 @brief Process Update Scan Params function
26815
26816 @param pWDICtx: pointer to the WLAN DAL context
26817 pEventData: pointer to the event information structure
26818
26819 @see
26820 @return Result of the function call
26821*/
26822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026823WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026824(
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 WDI_ControlBlockType* pWDICtx,
26826 WDI_EventInfoType* pEventData
26827)
26828{
26829 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26830 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026832 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026833 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026834
26835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026837 -------------------------------------------------------------------------*/
26838 if (( NULL == pEventData ) ||
26839 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26840 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26841 {
26842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026843 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 }
26847
26848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26849 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026850
26851 //
26852 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26853 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026854 if ( pWDICtx->wlanVersion.revision < 1 )
26855 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026856 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026857 &pSendBuffer, &usSendSize);
26858 }
26859 else
26860 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026861 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26862 &pSendBuffer, &usSendSize);
26863 }
26864
26865 if(WDI_STATUS_SUCCESS != wdiStatus)
26866 {
26867 //memory allocation failed
26868 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026869 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026870
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026872 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026875 wdiUpdateScanParamsCb, pEventData->pUserData,
26876 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026877}
26878
26879/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026880 @brief Process Update Channel Params function
26881
26882 @param pWDICtx: pointer to the WLAN DAL context
26883 pEventData: pointer to the event information structure
26884
26885 @see
26886 @return Result of the function call
26887*/
26888WDI_Status
26889WDI_ProcessUpdateChannelParamsReq
26890(
26891 WDI_ControlBlockType* pWDICtx,
26892 WDI_EventInfoType* pEventData
26893)
26894{
26895 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26896 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26897 wpt_uint8* pSendBuffer = NULL;
26898 wpt_uint16 usDataOffset = 0;
26899 wpt_uint16 usSendSize = 0;
26900 tUpdateChannelReqType *updateChannelParams;
26901 wpt_uint32 usUpdateChanParamSize;
26902 wpt_uint8 num_channels = 0;
26903
26904 /*-------------------------------------------------------------------------
26905 Sanity check
26906 -------------------------------------------------------------------------*/
26907 if (( NULL == pEventData ) ||
26908 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26909 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26910 {
26911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26912 "%s: Invalid parameters", __func__);
26913 WDI_ASSERT(0);
26914 return WDI_STATUS_E_FAILURE;
26915 }
26916 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026917 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026918
26919 /*-----------------------------------------------------------------------
26920 Get message buffer
26921 -----------------------------------------------------------------------*/
26922 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26923 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26924 &pSendBuffer, &usDataOffset, &usSendSize))||
26925 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26926 {
26927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26928 "Unable to get send buffer in Update Channel Params req %p",
26929 pwdiUpdateChanListParams);
26930 WDI_ASSERT(0);
26931 return WDI_STATUS_E_FAILURE;
26932 }
26933 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26934
26935 updateChannelParams->numChan = num_channels;
26936 wpalMemoryCopy(&updateChannelParams->chanParam,
26937 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26938 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26939
26940 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26941 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26942
26943 /*-------------------------------------------------------------------------
26944 Send Update channel request to fw
26945 -------------------------------------------------------------------------*/
26946 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26947 wdiUpdateChanParamsCb, pEventData->pUserData,
26948 WDI_UPDATE_CHAN_RESP);
26949}
26950
26951/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026952 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026953
26954 @param pWDICtx: pointer to the WLAN DAL context
26955 pEventData: pointer to the event information structure
26956
Jeff Johnson295189b2012-06-20 16:38:30 -070026957 @see
26958 @return Result of the function call
26959*/
26960WDI_Status
26961WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026962(
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 WDI_ControlBlockType* pWDICtx,
26964 WDI_EventInfoType* pEventData
26965)
26966{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026967 WDI_LowLevelIndType wdiInd;
26968 tpPrefNetwFoundParams pNetwFoundParams;
26969 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026970
26971
26972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026974 -------------------------------------------------------------------------*/
26975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26976 ( NULL == pEventData->pEventData ))
26977 {
26978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026980 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 }
26983
26984 /*-------------------------------------------------------------------------
26985 Extract indication and send it to UMAC
26986 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026987 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26988
26989 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26990 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26991 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26992
26993 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26994 {
26995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26996 "%s: fail to allocate memory", __func__);
26997 return WDI_STATUS_MEM_FAILURE;
26998 }
26999
27000 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27001 (pNetwFoundParams->ssId.length < 32 )?
27002 pNetwFoundParams->ssId.length : 32;
27003 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27004 pNetwFoundParams->ssId.ssId,
27005 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27006 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27007 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27008 pNetwFoundParams->frameLength;
27009 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27010 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27011 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027012
27013 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027014 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027015
Jeff Johnson295189b2012-06-20 16:38:30 -070027016 // DEBUG
27017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027018 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027019 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027020 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027021 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027022 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027023 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27024
ltimariub77f24b2013-01-24 18:54:33 -080027025 if ( pWDICtx->wdiLowLevelIndCB )
27026 {
27027 /*Notify UMAC*/
27028 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27029 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027030
27031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027032}
27033
27034/**
27035 @brief Process PNO Rsp function (called when a
27036 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027037
27038 @param pWDICtx: pointer to the WLAN DAL context
27039 pEventData: pointer to the event information structure
27040
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 @see
27042 @return Result of the function call
27043*/
27044WDI_Status
27045WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027046(
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 WDI_ControlBlockType* pWDICtx,
27048 WDI_EventInfoType* pEventData
27049)
27050{
27051 WDI_Status wdiStatus;
27052 eHalStatus halStatus;
27053 WDI_PNOScanCb wdiPNOScanCb = NULL;
27054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27055
27056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 -------------------------------------------------------------------------*/
27059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27060 ( NULL == pEventData->pEventData ))
27061 {
27062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027066 }
27067
27068
Jeff Johnsone7245742012-09-05 17:12:55 -070027069 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027070
27071 /*-------------------------------------------------------------------------
27072 Extract response and send it to UMAC
27073 -------------------------------------------------------------------------*/
27074 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027075 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027076
27077 /*Notify UMAC*/
27078 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27079
Jeff Johnsone7245742012-09-05 17:12:55 -070027080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027081}/*WDI_ProcessSetPreferredNetworkRsp*/
27082
27083/**
27084 @brief Process RSSI Filter Rsp function (called when a
27085 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027086
27087 @param pWDICtx: pointer to the WLAN DAL context
27088 pEventData: pointer to the event information structure
27089
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 @see
27091 @return Result of the function call
27092*/
27093WDI_Status
27094WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027095(
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 WDI_ControlBlockType* pWDICtx,
27097 WDI_EventInfoType* pEventData
27098)
27099{
27100 WDI_Status wdiStatus;
27101 eHalStatus halStatus;
27102 WDI_RssiFilterCb wdiRssiFilterCb;
27103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27104
27105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027107 -------------------------------------------------------------------------*/
27108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27109 ( NULL == pEventData->pEventData ))
27110 {
27111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027115 }
27116
Jeff Johnsone7245742012-09-05 17:12:55 -070027117 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027118
27119 /*-------------------------------------------------------------------------
27120 Extract response and send it to UMAC
27121 -------------------------------------------------------------------------*/
27122 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027123 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027124
27125 /*Notify UMAC*/
27126 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27127
Jeff Johnsone7245742012-09-05 17:12:55 -070027128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027129}/*WDI_ProcessSetRssiFilterRsp*/
27130
27131/**
27132 @brief Process Update Scan Params Rsp function (called when a
27133 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027134
27135 @param pWDICtx: pointer to the WLAN DAL context
27136 pEventData: pointer to the event information structure
27137
Jeff Johnson295189b2012-06-20 16:38:30 -070027138 @see
27139 @return Result of the function call
27140*/
27141WDI_Status
27142WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027143(
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 WDI_ControlBlockType* pWDICtx,
27145 WDI_EventInfoType* pEventData
27146)
27147{
27148 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027151 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27153
27154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 -------------------------------------------------------------------------*/
27157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27158 ( NULL == pEventData->pEventData ))
27159 {
27160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027164 }
27165
27166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027167 "%s: Process UPD scan params ptr : %p",
27168 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027169
Jeff Johnsone7245742012-09-05 17:12:55 -070027170 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027171
27172 /*-------------------------------------------------------------------------
27173 Extract response and send it to UMAC
27174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 sizeof(halUpdScanParams.status));
27178
27179 uStatus = halUpdScanParams.status;
27180
27181 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027183
27184 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027185 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027186
Jeff Johnsone7245742012-09-05 17:12:55 -070027187 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027188
27189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027191 halUpdScanParams.status);
27192
27193 /*Notify UMAC*/
27194 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27195
Jeff Johnsone7245742012-09-05 17:12:55 -070027196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027197}
27198#endif // FEATURE_WLAN_SCAN_PNO
27199
27200#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027202WDI_8023MulticastListReq
27203(
27204 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27205 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27206 void* pUserData
27207)
27208{
27209 WDI_EventInfoType wdiEventData;
27210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27211
27212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027213 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027214
27215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027217 ------------------------------------------------------------------------*/
27218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27219 {
27220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27221 "WDI API call before module is initialized - Fail request");
27222
Jeff Johnsone7245742012-09-05 17:12:55 -070027223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 }
27225
27226 /*------------------------------------------------------------------------
27227 Fill in Event data and post to the Main FSM
27228 ------------------------------------------------------------------------*/
27229 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027230 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027231 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027232 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 wdiEventData.pUserData = pUserData;
27234
27235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27236}
27237
Jeff Johnsone7245742012-09-05 17:12:55 -070027238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027239WDI_ReceiveFilterSetFilterReq
27240(
27241 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27242 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27243 void* pUserData
27244)
27245{
27246 WDI_EventInfoType wdiEventData;
27247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27248
27249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027250 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027251
27252 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027253 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027254 ------------------------------------------------------------------------*/
27255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27256 {
27257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27258 "WDI API call before module is initialized - Fail request");
27259
Jeff Johnsone7245742012-09-05 17:12:55 -070027260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 }
27262
27263 /*------------------------------------------------------------------------
27264 Fill in Event data and post to the Main FSM
27265 ------------------------------------------------------------------------*/
27266 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027267 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27268 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027269 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27270 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027271 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027272 wdiEventData.pUserData = pUserData;
27273
27274
27275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27276}
27277
Jeff Johnsone7245742012-09-05 17:12:55 -070027278WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027279WDI_FilterMatchCountReq
27280(
27281 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27282 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27283 void* pUserData
27284)
27285{
27286 WDI_EventInfoType wdiEventData;
27287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27288
27289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027290 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027291
27292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 ------------------------------------------------------------------------*/
27295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27296 {
27297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27298 "WDI API call before module is initialized - Fail request");
27299
Jeff Johnsone7245742012-09-05 17:12:55 -070027300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027301 }
27302
27303 /*------------------------------------------------------------------------
27304 Fill in Event data and post to the Main FSM
27305 ------------------------------------------------------------------------*/
27306 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027307 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 wdiEventData.pUserData = pUserData;
27311
27312
27313 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27314}
27315
Jeff Johnsone7245742012-09-05 17:12:55 -070027316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027317WDI_ReceiveFilterClearFilterReq
27318(
27319 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27320 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27321 void* pUserData
27322)
27323{
27324 WDI_EventInfoType wdiEventData;
27325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27326
27327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027328 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027329
27330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027331 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027332 ------------------------------------------------------------------------*/
27333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27334 {
27335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27336 "WDI API call before module is initialized - Fail request");
27337
Jeff Johnsone7245742012-09-05 17:12:55 -070027338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027339 }
27340
27341 /*------------------------------------------------------------------------
27342 Fill in Event data and post to the Main FSM
27343 ------------------------------------------------------------------------*/
27344 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027345 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 wdiEventData.pUserData = pUserData;
27349
27350
27351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27352}
27353
27354/**
27355 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027356
27357 @param pWDICtx: pointer to the WLAN DAL context
27358 pEventData: pointer to the event information structure
27359
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 @see
27361 @return Result of the function call
27362*/
27363WDI_Status
27364WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027365(
Jeff Johnson295189b2012-06-20 16:38:30 -070027366 WDI_ControlBlockType* pWDICtx,
27367 WDI_EventInfoType* pEventData
27368)
27369{
27370 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27371 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 wpt_uint16 usDataOffset = 0;
27374 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027375 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027377 wpt_uint8 ucCurrentBSSSesIdx = 0;
27378 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027379
27380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027381 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027382
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027383 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27384 if( NULL == pRcvFltMcAddrListType )
27385 {
27386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27387 "Failed to alloc in WDI_Process8023MulticastListReq");
27388 return WDI_STATUS_E_FAILURE;
27389 }
27390
Jeff Johnson295189b2012-06-20 16:38:30 -070027391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 -------------------------------------------------------------------------*/
27394 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027395 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027397 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027398 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27399 {
27400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027401 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027402 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027404 return WDI_STATUS_E_FAILURE;
27405 }
27406
27407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27408 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27409 &pBSSSes);
27410 if ( NULL == pBSSSes )
27411 {
27412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027413 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027414 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 }
27417
27418 /*-----------------------------------------------------------------------
27419 Get message buffer
27420 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27422 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027423 sizeof(tHalRcvFltMcAddrListType),
27424 &pSendBuffer, &usDataOffset, &usSendSize))||
27425 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27426 {
27427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27428 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027429 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 pEventData, pwdiFltPktSetMcListReqParamsType,
27431 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027432 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027435 }
27436
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027437 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027438 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027439 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027440 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027441 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027442 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27443 sizeof(tSirMacAddr));
27444 }
27445
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027446 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027447 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027448 pRcvFltMcAddrListType,
27449 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027450
27451 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027452 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027453
27454
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027455 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027457 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027459 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027461 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027462}
27463
27464/**
27465 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027466
27467 @param pWDICtx: pointer to the WLAN DAL context
27468 pEventData: pointer to the event information structure
27469
Jeff Johnson295189b2012-06-20 16:38:30 -070027470 @see
27471 @return Result of the function call
27472*/
27473WDI_Status
27474WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027475(
Jeff Johnson295189b2012-06-20 16:38:30 -070027476 WDI_ControlBlockType* pWDICtx,
27477 WDI_EventInfoType* pEventData
27478)
27479{
27480 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27481 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027482 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 wpt_uint16 usDataOffset = 0;
27484 wpt_uint16 usSendSize = 0;
27485 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027486 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027488 wpt_uint8 ucCurrentBSSSesIdx = 0;
27489 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027490 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27491 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027492
27493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027494 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027495
27496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027498 -------------------------------------------------------------------------*/
27499 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027500 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027501 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27504 {
27505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 return WDI_STATUS_E_FAILURE;
27509 }
27510
27511 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27512 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27513 &pBSSSes);
27514 if ( NULL == pBSSSes )
27515 {
27516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027517 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027519 }
27520
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027521 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27522 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027523
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027524 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27525 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27526 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27527
27528 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27529 usSessRcvPktFilterCfgSize);
27530
27531 if(NULL == pSessRcvPktFilterCfg)
27532 {
27533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27534 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027535 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027536 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027537 WDI_ASSERT(0);
27538 return WDI_STATUS_E_FAILURE;
27539 }
27540
27541 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27542
27543 /*-----------------------------------------------------------------------
27544 Get message buffer
27545 -----------------------------------------------------------------------*/
27546
27547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27548 usSessRcvPktFilterCfgSize,
27549 &pSendBuffer, &usDataOffset, &usSendSize))||
27550 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27551 {
27552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27553 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027554 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027555 pEventData, pwdiSetRcvPktFilterReqInfo,
27556 wdiReceiveFilterSetFilterCb);
27557 WDI_ASSERT(0);
27558 wpalMemoryFree(pSessRcvPktFilterCfg);
27559 return WDI_STATUS_E_FAILURE;
27560 }
27561
27562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027563 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027564 usSendSize,pSessRcvPktFilterCfg);
27565
27566 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27567 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27568 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27569 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27570
27571 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27572
27573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27574 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27575 pSessRcvPktFilterCfg->filterType);
27576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27577 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27578 pSessRcvPktFilterCfg->coleasceTime);
27579
27580 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27581 {
27582 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27583 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27584 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27585 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27586 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27587 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27588 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27589 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27590
27591 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27592 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27593 8);
27594 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27595 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27596 8);
27597
27598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027599 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027600 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27601 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27602
27603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027604 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027605 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27606 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27607
27608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027609 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027610 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27611 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27612 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27613 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27614 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27615 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27616
27617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027618 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027619 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27620 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27621 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27622 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27623 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27624 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27625 }
27626
27627 wpalMemoryCopy( pSendBuffer+usDataOffset,
27628 pSessRcvPktFilterCfg,
27629 usSessRcvPktFilterCfgSize);
27630
27631
27632 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27633 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27634
27635 wpalMemoryFree(pSessRcvPktFilterCfg);
27636
27637 }
27638 /*If SLM_SESSIONIZATION is not supported then do this */
27639 else
27640 {
27641 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27642 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27643 * sizeof(tHalRcvPktFilterParams));
27644
27645 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 usRcvPktFilterCfgSize);
27647
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 if(NULL == pRcvPktFilterCfg)
27649 {
27650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27651 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027652 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027653 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027654 WDI_ASSERT(0);
27655 return WDI_STATUS_E_FAILURE;
27656 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027657
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027658 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027659
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027660 /*-----------------------------------------------------------------------
27661 Get message buffer
27662 -----------------------------------------------------------------------*/
27663 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 usRcvPktFilterCfgSize,
27665 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027666 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27667 {
27668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027669 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027670 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027671 pEventData, pwdiSetRcvPktFilterReqInfo,
27672 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027673 WDI_ASSERT(0);
27674 wpalMemoryFree(pRcvPktFilterCfg);
27675 return WDI_STATUS_E_FAILURE;
27676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027677
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027679 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027680 usSendSize,usRcvPktFilterCfgSize);
27681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027682 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27683 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27684 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27685 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027686
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027688 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027689 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027691 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027692 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027693
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027694 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27695 {
27696 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27697 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27698 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27699 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27700 pRcvPktFilterCfg->paramsData[i].dataOffset =
27701 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27702 pRcvPktFilterCfg->paramsData[i].dataLength =
27703 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027704
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027705 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27707 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027708 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27710 8);
27711
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027713 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027714 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27716
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027718 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027719 pRcvPktFilterCfg->paramsData[i].dataOffset,
27720 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027721
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027723 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027724 pRcvPktFilterCfg->paramsData[i].compareData[0],
27725 pRcvPktFilterCfg->paramsData[i].compareData[1],
27726 pRcvPktFilterCfg->paramsData[i].compareData[2],
27727 pRcvPktFilterCfg->paramsData[i].compareData[3],
27728 pRcvPktFilterCfg->paramsData[i].compareData[4],
27729 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027730
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027732 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027733 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27734 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27735 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27736 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27737 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27738 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27739 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027740
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027741 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027742 pRcvPktFilterCfg,
27743 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027744
27745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027746 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27747 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027750 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027751 wpalMemoryFree(pRcvPktFilterCfg);
27752 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027754 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027757 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027758 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027759}
27760
27761/**
27762 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027763
27764 @param pWDICtx: pointer to the WLAN DAL context
27765 pEventData: pointer to the event information structure
27766
Jeff Johnson295189b2012-06-20 16:38:30 -070027767 @see
27768 @return Result of the function call
27769*/
27770WDI_Status
27771WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027772(
Jeff Johnson295189b2012-06-20 16:38:30 -070027773 WDI_ControlBlockType* pWDICtx,
27774 WDI_EventInfoType* pEventData
27775)
27776{
27777 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27778 NULL;
27779 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27780 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027782 wpt_uint16 usDataOffset = 0;
27783 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027784 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27785 wpt_uint8 ucCurrentBSSSesIdx = 0;
27786 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027787
27788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027789 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027790
27791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 -------------------------------------------------------------------------*/
27794 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027795 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27799 {
27800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027804 }
27805
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027806 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27807 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27808 &pBSSSes);
27809 if ( NULL == pBSSSes )
27810 {
27811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027812 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027813 return WDI_STATUS_E_FAILURE;
27814 }
27815
Jeff Johnson295189b2012-06-20 16:38:30 -070027816 /*-----------------------------------------------------------------------
27817 Get message buffer
27818 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027819 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27820 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027821 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027823 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027824 {
27825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27826 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027827 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027828 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27829 wdiFilterMatchCountCb);
27830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027832 }
27833
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027834 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27835 wpalMemoryCopy( pSendBuffer+usDataOffset,
27836 &rcvFltPktMatchCntReqParam,
27837 sizeof(rcvFltPktMatchCntReqParam));
27838
Jeff Johnson295189b2012-06-20 16:38:30 -070027839 //
27840 // Don't need to fill send buffer other than header
27841 //
27842 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027843 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027844
27845
27846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027847 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27850 wdiFilterMatchCountCb,
27851 pEventData->pUserData,
27852 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027853}
27854
27855/**
27856 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027857
27858 @param pWDICtx: pointer to the WLAN DAL context
27859 pEventData: pointer to the event information structure
27860
Jeff Johnson295189b2012-06-20 16:38:30 -070027861 @see
27862 @return Result of the function call
27863*/
27864WDI_Status
27865WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027866(
Jeff Johnson295189b2012-06-20 16:38:30 -070027867 WDI_ControlBlockType* pWDICtx,
27868 WDI_EventInfoType* pEventData
27869)
Jeff Johnsone7245742012-09-05 17:12:55 -070027870{
Jeff Johnson295189b2012-06-20 16:38:30 -070027871 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27872 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027874 wpt_uint16 usDataOffset = 0;
27875 wpt_uint16 usSendSize = 0;
27876 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027877 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027878 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027879
27880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027881 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027882
27883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027885 -------------------------------------------------------------------------*/
27886 if (( NULL == pEventData ) ||
27887 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27888 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027889 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027890 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27891 {
27892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027895 return WDI_STATUS_E_FAILURE;
27896 }
27897
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027898 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027899 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27900 &pBSSSes);
27901 if ( NULL == pBSSSes )
27902 {
27903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027904 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027906 }
27907
27908 /*-----------------------------------------------------------------------
27909 Get message buffer
27910 -----------------------------------------------------------------------*/
27911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027912 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027913 sizeof(tHalRcvFltPktClearParam),
27914 &pSendBuffer, &usDataOffset, &usSendSize))||
27915 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27916 {
27917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27918 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027919 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 pEventData, pwdiRcvFltPktClearReqParamsType,
27921 wdiRcvFltPktClearFilterCb);
27922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027924 }
27925
27926
27927 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027928 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027929 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027930 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027931
Jeff Johnsone7245742012-09-05 17:12:55 -070027932 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27933 wpalMemoryCopy( pSendBuffer+usDataOffset,
27934 &rcvFltPktClearParam,
27935 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027936
27937 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027938 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027939
27940
27941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027942 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027945 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027946 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027947}
27948
27949/**
27950 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027951
27952 @param pWDICtx: pointer to the WLAN DAL context
27953 pEventData: pointer to the event information structure
27954
Jeff Johnson295189b2012-06-20 16:38:30 -070027955 @see
27956 @return Result of the function call
27957*/
27958WDI_Status
27959WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027960(
Jeff Johnson295189b2012-06-20 16:38:30 -070027961 WDI_ControlBlockType* pWDICtx,
27962 WDI_EventInfoType* pEventData
27963)
27964{
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 eHalStatus halStatus;
27966 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027967 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27968 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27970
27971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027972 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027973
27974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027976 -------------------------------------------------------------------------*/
27977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27978 ( NULL == pEventData->pEventData ))
27979 {
27980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027984 }
27985
Jeff Johnsone7245742012-09-05 17:12:55 -070027986 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027987
27988 /*-------------------------------------------------------------------------
27989 Extract response and send it to UMAC
27990 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027991 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27992 {
27993 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27994 pEventData->pEventData,
27995 sizeof(halRcvFltPktSetMcListRsp));
27996
27997 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27998 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27999 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28000 halRcvFltPktSetMcListRsp.bssIdx;
28001 }
28002 else
28003 {
28004 halStatus = *((eHalStatus*)pEventData->pEventData);
28005 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028007
28008 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028009 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028010
Jeff Johnsone7245742012-09-05 17:12:55 -070028011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028012}
28013
28014/**
28015 @brief Process Set Rsp function (called when a
28016 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028017
28018 @param pWDICtx: pointer to the WLAN DAL context
28019 pEventData: pointer to the event information structure
28020
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 @see
28022 @return Result of the function call
28023*/
28024WDI_Status
28025WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028026(
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 WDI_ControlBlockType* pWDICtx,
28028 WDI_EventInfoType* pEventData
28029)
28030{
Jeff Johnson295189b2012-06-20 16:38:30 -070028031 eHalStatus halStatus;
28032 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028033 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28034 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28036
28037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028038 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028039
28040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028042 -------------------------------------------------------------------------*/
28043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28044 ( NULL == pEventData->pEventData ))
28045 {
28046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028050 }
28051
28052 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028053 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028054
28055 /*-------------------------------------------------------------------------
28056 Extract response and send it to UMAC
28057 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028058 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28059 {
28060 wpalMemoryCopy( &halSetPktFilterRspParams,
28061 pEventData->pEventData,
28062 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028063
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028064 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28065 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28066 }
28067 else
28068 {
28069 halStatus = *((eHalStatus*)pEventData->pEventData);
28070 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28071 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028072 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028073 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028074
Jeff Johnsone7245742012-09-05 17:12:55 -070028075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028076}
28077
28078/**
28079 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028080
28081 @param pWDICtx: pointer to the WLAN DAL context
28082 pEventData: pointer to the event information structure
28083
Jeff Johnson295189b2012-06-20 16:38:30 -070028084 @see
28085 @return Result of the function call
28086*/
28087WDI_Status
28088WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028089(
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 WDI_ControlBlockType* pWDICtx,
28091 WDI_EventInfoType* pEventData
28092)
28093{
Jeff Johnson295189b2012-06-20 16:38:30 -070028094 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028095 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028096 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28097 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028098
28099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28100
28101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028102 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028103
28104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028106 -------------------------------------------------------------------------*/
28107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28108 ( NULL == pEventData->pEventData ))
28109 {
28110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028114 }
28115
Jeff Johnsone7245742012-09-05 17:12:55 -070028116 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028117
28118 /*-------------------------------------------------------------------------
28119 Extract response and send it to UMAC
28120 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028121 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28122 {
28123 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28124 pEventData->pEventData,
28125 sizeof(halRcvFltrPktMatachRsp));
28126
28127 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28128 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28129 }
28130 else
28131 {
28132 halStatus = *((eHalStatus*)pEventData->pEventData);
28133 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28134 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028135
28136 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028137 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028138
Jeff Johnsone7245742012-09-05 17:12:55 -070028139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028140}
28141
28142/**
28143 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028144
28145 @param pWDICtx: pointer to the WLAN DAL context
28146 pEventData: pointer to the event information structure
28147
Jeff Johnson295189b2012-06-20 16:38:30 -070028148 @see
28149 @return Result of the function call
28150*/
28151WDI_Status
28152WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028153(
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 WDI_ControlBlockType* pWDICtx,
28155 WDI_EventInfoType* pEventData
28156)
28157{
Jeff Johnson295189b2012-06-20 16:38:30 -070028158 eHalStatus halStatus;
28159 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028160 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28161 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28163
28164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028165 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028166
28167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028169 -------------------------------------------------------------------------*/
28170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28171 ( NULL == pEventData->pEventData ))
28172 {
28173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028177 }
28178
28179 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028180 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028181
28182 /*-------------------------------------------------------------------------
28183 Extract response and send it to UMAC
28184 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028185 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28186 {
28187 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28188 pEventData->pEventData,
28189 sizeof(halRcvFltPktClearRspMsg));
28190
28191 wdiRcvFltPktClearRspParamsType.wdiStatus =
28192 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28193 wdiRcvFltPktClearRspParamsType.bssIdx =
28194 halRcvFltPktClearRspMsg.bssIdx;
28195 }
28196 else
28197 {
28198 halStatus = *((eHalStatus*)pEventData->pEventData);
28199 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28200 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028201
28202 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028203 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028204
Jeff Johnsone7245742012-09-05 17:12:55 -070028205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028206}
28207#endif // WLAN_FEATURE_PACKET_FILTERING
28208
28209/**
28210 @brief Process Shutdown Rsp function
28211 There is no shutdown response comming from HAL
28212 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028213
Jeff Johnson295189b2012-06-20 16:38:30 -070028214 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028215 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028216
28217 @see
28218 @return Result of the function call
28219*/
28220WDI_Status
28221WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028222(
Jeff Johnson295189b2012-06-20 16:38:30 -070028223 WDI_ControlBlockType* pWDICtx,
28224 WDI_EventInfoType* pEventData
28225)
28226{
28227 /*There is no shutdown response comming from HAL - function just kept for
28228 simmetry */
28229 WDI_ASSERT(0);
28230 return WDI_STATUS_SUCCESS;
28231}/*WDI_ProcessShutdownRsp*/
28232
28233/**
28234 @brief WDI_SetPowerParamsReq
28235
Jeff Johnsone7245742012-09-05 17:12:55 -070028236 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028237 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028238
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 wdiPowerParamsCb: callback for passing back the response
28240 of the Set Power Params operation received from the
28241 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028242
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028244 callback
28245
Jeff Johnson295189b2012-06-20 16:38:30 -070028246 @return Result of the function call
28247*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028249WDI_SetPowerParamsReq
28250(
28251 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28252 WDI_SetPowerParamsCb wdiPowerParamsCb,
28253 void* pUserData
28254)
28255{
28256 WDI_EventInfoType wdiEventData;
28257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28258
28259 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028260 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028261 ------------------------------------------------------------------------*/
28262 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28263 {
28264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28265 "WDI API call before module is initialized - Fail request");
28266
Jeff Johnsone7245742012-09-05 17:12:55 -070028267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028268 }
28269
28270 /*------------------------------------------------------------------------
28271 Fill in Event data and post to the Main FSM
28272 ------------------------------------------------------------------------*/
28273 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028274 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028275 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028276 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028277 wdiEventData.pUserData = pUserData;
28278
28279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28280}/*WDI_SetPowerParamsReq*/
28281
28282/**
28283 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028284
28285 @param pWDICtx: pointer to the WLAN DAL context
28286 pEventData: pointer to the event information structure
28287
Jeff Johnson295189b2012-06-20 16:38:30 -070028288 @see
28289 @return Result of the function call
28290*/
28291WDI_Status
28292WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028293(
Jeff Johnson295189b2012-06-20 16:38:30 -070028294 WDI_ControlBlockType* pWDICtx,
28295 WDI_EventInfoType* pEventData
28296)
28297{
28298 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28299 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 wpt_uint16 usDataOffset = 0;
28302 wpt_uint16 usSendSize = 0;
28303 tSetPowerParamsType powerParams;
28304
28305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028307 -------------------------------------------------------------------------*/
28308 if (( NULL == pEventData ) ||
28309 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28310 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28311 {
28312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 }
28317
28318 /*-----------------------------------------------------------------------
28319 Get message buffer
28320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028322 sizeof(powerParams),
28323 &pSendBuffer, &usDataOffset, &usSendSize))||
28324 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28325 {
28326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028327 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028328 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028331 }
28332
28333 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028334 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028335 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28336
28337 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028338 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028339 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28340
28341 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028342 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028343 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28344
28345 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028346 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028347 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28348
28349 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028350 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028351 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28352
28353 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028354 powerParams.uBETInterval =
28355 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028356
Yue Mac24062f2013-05-13 17:01:29 -070028357 /* MAX LI for modulated DTIM */
28358 powerParams.uMaxLIModulatedDTIM =
28359 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028360
28361 wpalMemoryCopy( pSendBuffer+usDataOffset,
28362 &powerParams,
28363 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028364
28365 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028366 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028367
28368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028369 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28372 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028373}
28374
28375/**
28376 @brief Process Power Params Rsp function (called when a
28377 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028378
28379 @param pWDICtx: pointer to the WLAN DAL context
28380 pEventData: pointer to the event information structure
28381
Jeff Johnson295189b2012-06-20 16:38:30 -070028382 @see
28383 @return Result of the function call
28384*/
28385WDI_Status
28386WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028387(
Jeff Johnson295189b2012-06-20 16:38:30 -070028388 WDI_ControlBlockType* pWDICtx,
28389 WDI_EventInfoType* pEventData
28390)
28391{
28392 WDI_Status wdiStatus;
28393 eHalStatus halStatus;
28394 WDI_SetPowerParamsCb wdiPowerParamsCb;
28395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28396
28397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028399 -------------------------------------------------------------------------*/
28400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28401 ( NULL == pEventData->pEventData ))
28402 {
28403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028407 }
28408
Jeff Johnsone7245742012-09-05 17:12:55 -070028409 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028410
28411 /*-------------------------------------------------------------------------
28412 Extract response and send it to UMAC
28413 -------------------------------------------------------------------------*/
28414 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028415 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028416
28417 /*Notify UMAC*/
28418 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28419
Jeff Johnsone7245742012-09-05 17:12:55 -070028420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028421}/*WDI_ProcessSetPowerParamsRsp*/
28422
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028423/**
28424 @brief WDI_dhcpStartInd
28425 Host will send an event to the FW when DHCP is initiated
28426
28427 @param
28428 WDI_DHCPInd: DHCP Indication
28429 @see
28430 @return Result of the function call
28431*/
28432WDI_Status
28433WDI_dhcpStartInd
28434(
28435 WDI_DHCPInd *wdiDHCPInd
28436)
28437{
28438 WDI_EventInfoType wdiEventData;
28439
28440 /*------------------------------------------------------------------------
28441 Sanity Check
28442 ------------------------------------------------------------------------*/
28443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28444 {
28445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28446 "WDI API call before module is initialized - Fail request");
28447
28448 return WDI_STATUS_E_NOT_ALLOWED;
28449 }
28450
28451 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28452 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028453 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028454 wdiEventData.pCBfnc = NULL;
28455 wdiEventData.pUserData = NULL;
28456
28457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28458}
28459
28460
28461/**
28462 @brief WDI_dhcpStopInd
28463 Host will send an event to the FW when DHCP is completed
28464
28465 @param
28466 WDI_DHCPInd: DHCP Indication
28467 @see
28468 @return Result of the function call
28469*/
28470WDI_Status
28471WDI_dhcpStopInd
28472(
28473 WDI_DHCPInd *wdiDHCPInd
28474)
28475{
28476 WDI_EventInfoType wdiEventData;
28477
28478 /*------------------------------------------------------------------------
28479 Sanity Check
28480 ------------------------------------------------------------------------*/
28481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28482 {
28483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28484 "WDI API call before module is initialized - Fail request");
28485
28486 return WDI_STATUS_E_NOT_ALLOWED;
28487 }
28488
28489 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28490 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028491 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028492 wdiEventData.pCBfnc = NULL;
28493 wdiEventData.pUserData = NULL;
28494
28495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28496}
28497
28498
28499/**
28500 @brief Process DHCP Start Indication message and post it to HAL
28501
28502 @param pWDICtx: pointer to the WLAN DAL context
28503 pEventData: pointer to the event information structure
28504
28505 @see
28506 @return Result of the function call
28507*/
28508WDI_Status
28509WDI_ProcessDHCPStartInd
28510(
28511 WDI_ControlBlockType* pWDICtx,
28512 WDI_EventInfoType* pEventData
28513)
28514{
28515 wpt_uint8* pSendBuffer = NULL;
28516 wpt_uint16 usDataOffset = 0;
28517 wpt_uint16 usSendSize = 0;
28518 wpt_uint16 usLen = 0;
28519 WDI_DHCPInd* pwdiDHCPInd = NULL;
28520 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028521 WDI_Status wdiStatus;
28522
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028523
28524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28525
28526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28527 "%s", __func__);
28528
28529 /*-------------------------------------------------------------------------
28530 Sanity check
28531 -------------------------------------------------------------------------*/
28532 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28533 {
28534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28535 "%s: Invalid parameters", __func__);
28536 WDI_ASSERT(0);
28537 return WDI_STATUS_E_FAILURE;
28538 }
28539 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28540 /*-----------------------------------------------------------------------
28541 Get message buffer
28542 -----------------------------------------------------------------------*/
28543
28544 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28545 WDI_DHCP_START_IND,
28546 sizeof(tDHCPInfo),
28547 &pSendBuffer, &usDataOffset, &usSendSize))||
28548 ( usSendSize < (usDataOffset + usLen )))
28549 {
28550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28551 "Unable to get send buffer in DHCP Start req %p ",
28552 pEventData);
28553 WDI_ASSERT(0);
28554 return WDI_STATUS_E_FAILURE;
28555 }
28556
Sandeep Puligillaee789512014-02-13 19:14:52 +053028557 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028558 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28559 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28560 WDI_MAC_ADDR_LEN);
28561
28562 pWDICtx->pReqStatusUserData = NULL;
28563 pWDICtx->pfncRspCB = NULL;
28564
28565 /*-------------------------------------------------------------------------
28566 Send DHCP Start Indication to HAL
28567 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028568 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28569 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028570}/*WDI_ProcessDHCPStartInd*/
28571
28572/**
28573 @brief Process DHCP Stop indication message and post it to HAL
28574
28575 @param pWDICtx: pointer to the WLAN DAL context
28576 pEventData: pointer to the event information structure
28577
28578 @see
28579 @return Result of the function call
28580*/
28581WDI_Status
28582WDI_ProcessDHCPStopInd
28583(
28584 WDI_ControlBlockType* pWDICtx,
28585 WDI_EventInfoType* pEventData
28586)
28587{
28588 wpt_uint8* pSendBuffer = NULL;
28589 wpt_uint16 usDataOffset = 0;
28590 wpt_uint16 usSendSize = 0;
28591 wpt_uint16 usLen = 0;
28592 WDI_DHCPInd* pwdiDHCPInd = NULL;
28593 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028594 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028595
28596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28597
28598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28599 "%s", __func__);
28600
28601 /*-------------------------------------------------------------------------
28602 Sanity check
28603 -------------------------------------------------------------------------*/
28604
28605 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28606 {
28607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28608 "%s: Invalid parameters", __func__);
28609 WDI_ASSERT(0);
28610 return WDI_STATUS_E_FAILURE;
28611 }
28612 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28613 /*-----------------------------------------------------------------------
28614 Get message buffer
28615 -----------------------------------------------------------------------*/
28616
28617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28618 WDI_DHCP_STOP_IND,
28619 sizeof(tDHCPInfo),
28620 &pSendBuffer, &usDataOffset, &usSendSize))||
28621 ( usSendSize < (usDataOffset + usLen )))
28622 {
28623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28624 "Unable to get send buffer in DHCP Start req %p ",
28625 pEventData);
28626 WDI_ASSERT(0);
28627 return WDI_STATUS_E_FAILURE;
28628 }
28629
Sandeep Puligillaee789512014-02-13 19:14:52 +053028630 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028631 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28632 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28633 WDI_MAC_ADDR_LEN);
28634
28635 pWDICtx->pReqStatusUserData = NULL;
28636 pWDICtx->pfncRspCB = NULL;
28637 /*-------------------------------------------------------------------------
28638 Send DHCP Stop indication to HAL
28639 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028640 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28641 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028642
28643}/*WDI_ProcessDHCPStopInd*/
28644
28645
Jeff Johnson295189b2012-06-20 16:38:30 -070028646#ifdef WLAN_FEATURE_GTK_OFFLOAD
28647/**
28648 @brief WDI_GTKOffloadReq will be called when the upper MAC
28649 wants to set GTK Rekey Counter while in power save. Upon
28650 the call of this API the WLAN DAL will pack and send a
28651 HAL GTK offload request message to the lower RIVA
28652 sub-system if DAL is in state STARTED.
28653
28654 In state BUSY this request will be queued. Request won't
28655 be allowed in any other state.
28656
28657 WDI_PostAssocReq must have been called.
28658
28659 @param pwdiGtkOffloadParams: the GTK offload as specified
28660 by the Device Interface
28661
28662 wdiGtkOffloadCb: callback for passing back the response
28663 of the GTK offload operation received from the device
28664
28665 pUserData: user data will be passed back with the
28666 callback
28667
28668 @see WDI_PostAssocReq
28669 @return Result of the function call
28670*/
28671WDI_Status
28672WDI_GTKOffloadReq
28673(
28674 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28675 WDI_GtkOffloadCb wdiGtkOffloadCb,
28676 void* pUserData
28677)
28678{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028679 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28681
28682 /*------------------------------------------------------------------------
28683 Sanity Check
28684 ------------------------------------------------------------------------*/
28685 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28686 {
28687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28688 "WDI API call before module is initialized - Fail request");
28689
28690 return WDI_STATUS_E_NOT_ALLOWED;
28691 }
28692
28693 /*------------------------------------------------------------------------
28694 Fill in Event data and post to the Main FSM
28695 ------------------------------------------------------------------------*/
28696 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28697 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028698 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028699 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28700 wdiEventData.pUserData = pUserData;
28701
28702 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28703}
28704
28705
28706/**
28707 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28708 MAC wants to get GTK Rekey Counter while in power save.
28709 Upon the call of this API the WLAN DAL will pack and
28710 send a HAL GTK offload request message to the lower RIVA
28711 sub-system if DAL is in state STARTED.
28712
28713 In state BUSY this request will be queued. Request won't
28714 be allowed in any other state.
28715
28716 WDI_PostAssocReq must have been called.
28717
28718 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28719 Information Message as specified by the
28720 Device Interface
28721
28722 wdiGtkOffloadGetInfoCb: callback for passing back the
28723 response of the GTK offload operation received from the
28724 device
28725
28726 pUserData: user data will be passed back with the
28727 callback
28728
28729 @see WDI_PostAssocReq
28730 @return Result of the function call
28731*/
28732WDI_Status
28733WDI_GTKOffloadGetInfoReq
28734(
28735 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28736 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28737 void* pUserData
28738)
28739{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028740 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28742
28743 /*------------------------------------------------------------------------
28744 Sanity Check
28745 ------------------------------------------------------------------------*/
28746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28747 {
28748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28749 "WDI API call before module is initialized - Fail request");
28750
28751 return WDI_STATUS_E_NOT_ALLOWED;
28752 }
28753
28754 /*------------------------------------------------------------------------
28755 Fill in Event data and post to the Main FSM
28756 ------------------------------------------------------------------------*/
28757 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28758 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28759 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28760 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28761 wdiEventData.pUserData = pUserData;
28762
28763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28764}
28765
28766
28767/**
28768 @brief Process set GTK Offload Request function
28769
28770 @param pWDICtx: pointer to the WLAN DAL context
28771 pEventData: pointer to the event information structure
28772
28773 @see
28774 @return Result of the function call
28775*/
28776WDI_Status
28777WDI_ProcessGTKOffloadReq
28778(
28779 WDI_ControlBlockType* pWDICtx,
28780 WDI_EventInfoType* pEventData
28781)
28782{
28783 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28784 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28785 wpt_uint8* pSendBuffer = NULL;
28786 wpt_uint16 usDataOffset = 0;
28787 wpt_uint16 usSendSize = 0;
28788 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028789 wpt_uint8 ucCurrentSessionId = 0;
28790 WDI_BSSSessionType* pBSSSes = NULL;
28791
Jeff Johnson295189b2012-06-20 16:38:30 -070028792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28793
28794 /*-------------------------------------------------------------------------
28795 Sanity check
28796 -------------------------------------------------------------------------*/
28797 if (( NULL == pEventData ) ||
28798 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28799 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28800 {
28801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028803 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028804 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028805 }
28806
28807 /*-----------------------------------------------------------------------
28808 Get message buffer
28809 -----------------------------------------------------------------------*/
28810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28811 sizeof(gtkOffloadReqParams),
28812 &pSendBuffer, &usDataOffset, &usSendSize))||
28813 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28814 {
28815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028816 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028817 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28818 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028819 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028820 }
28821
28822 //
28823 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28824 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028825 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28826 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28827 &pBSSSes);
28828 if ( NULL == pBSSSes )
28829 {
28830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028831 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028832 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028833 }
28834
28835 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28836
Jeff Johnson295189b2012-06-20 16:38:30 -070028837 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28838 // Copy KCK
28839 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28840 // Copy KEK
28841 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28842 // Copy KeyReplayCounter
28843 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28844
28845 wpalMemoryCopy( pSendBuffer+usDataOffset,
28846 &gtkOffloadReqParams,
28847 sizeof(gtkOffloadReqParams));
28848
28849 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28850 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28851
28852 /*-------------------------------------------------------------------------
28853 Send Get STA Request to HAL
28854 -------------------------------------------------------------------------*/
28855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28856 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028857
28858fail:
28859 // Release the message buffer so we don't leak
28860 wpalMemoryFree(pSendBuffer);
28861
28862failRequest:
28863 //WDA should have failure check to avoid the memory leak
28864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028865}
28866
28867
28868/**
28869 @brief Process GTK Offload Get Information Request function
28870
28871 @param pWDICtx: pointer to the WLAN DAL context
28872 pEventData: pointer to the event information structure
28873
28874 @see
28875 @return Result of the function call
28876*/
28877WDI_Status
28878WDI_ProcessGTKOffloadGetInfoReq
28879(
28880 WDI_ControlBlockType* pWDICtx,
28881 WDI_EventInfoType* pEventData
28882)
28883{
28884 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28885 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28886 wpt_uint8* pSendBuffer = NULL;
28887 wpt_uint16 usDataOffset = 0;
28888 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028889 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28890 wpt_uint8 ucCurrentSessionId = 0;
28891 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028892
28893 /*-------------------------------------------------------------------------
28894 Sanity check
28895 -------------------------------------------------------------------------*/
28896 if (( NULL == pEventData ) ||
28897 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28898 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28899 {
28900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028902 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028903 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028904 }
28905
28906 /*-----------------------------------------------------------------------
28907 Get message buffer
28908 -----------------------------------------------------------------------*/
28909 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028910 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028911 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028912 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 {
28914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028915 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028916 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28917 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028918 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028919 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028920 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28921 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28922 &pBSSSes);
28923 if ( NULL == pBSSSes )
28924 {
28925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028926 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028927 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028928 }
28929 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028930
28931 //
28932 // Don't need to fill send buffer other than header
28933 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028934 wpalMemoryCopy( pSendBuffer+usDataOffset,
28935 &halGtkOffloadGetInfoReqParams,
28936 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028937
28938 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28939 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28940
28941 /*-------------------------------------------------------------------------
28942 Send Get STA Request to HAL
28943 -------------------------------------------------------------------------*/
28944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28945 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028946fail:
28947 // Release the message buffer so we don't leak
28948 wpalMemoryFree(pSendBuffer);
28949
28950failRequest:
28951 //WDA should have failure check to avoid the memory leak
28952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028953}
28954
28955/**
28956 @brief Process host offload Rsp function (called when a
28957 response is being received over the bus from HAL)
28958
28959 @param pWDICtx: pointer to the WLAN DAL context
28960 pEventData: pointer to the event information structure
28961
28962 @see
28963 @return Result of the function call
28964*/
28965WDI_Status
28966WDI_ProcessGtkOffloadRsp
28967(
28968 WDI_ControlBlockType* pWDICtx,
28969 WDI_EventInfoType* pEventData
28970)
28971{
Jeff Johnson295189b2012-06-20 16:38:30 -070028972 eHalStatus halStatus;
28973 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028974 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28975 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028976
28977 /*-------------------------------------------------------------------------
28978 Sanity check
28979 -------------------------------------------------------------------------*/
28980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28981 ( NULL == pEventData->pEventData))
28982 {
28983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028985 WDI_ASSERT(0);
28986 return WDI_STATUS_E_FAILURE;
28987 }
28988
Wilson Yang00256342013-10-10 23:13:38 -070028989 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28990
Jeff Johnson295189b2012-06-20 16:38:30 -070028991 /*-------------------------------------------------------------------------
28992 Extract response and send it to UMAC
28993 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028994 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28995 {
28996 wpalMemoryCopy( &halGtkOffloadRspParams,
28997 pEventData->pEventData,
28998 sizeof(halGtkOffloadRspParams));
28999
29000 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029001 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029002 wdiGtkOffloadRsparams.bssIdx =
29003 halGtkOffloadRspParams.bssIdx;
29004 }
29005 else
29006 {
29007 halStatus = *((eHalStatus*)pEventData->pEventData);
29008 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29009 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029010
29011 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029012 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029013
29014 return WDI_STATUS_SUCCESS;
29015}
29016
29017/**
29018 @brief Process GTK Offload Get Information Response function
29019
29020 @param pWDICtx: pointer to the WLAN DAL context
29021 pEventData: pointer to the event information structure
29022
29023 @see
29024 @return Result of the function call
29025*/
29026WDI_Status
29027WDI_ProcessGTKOffloadGetInfoRsp
29028(
29029 WDI_ControlBlockType* pWDICtx,
29030 WDI_EventInfoType* pEventData
29031)
29032{
Jeff Johnson295189b2012-06-20 16:38:30 -070029033 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029034 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029035 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29036 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029037 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029038
Jeff Johnson295189b2012-06-20 16:38:30 -070029039
29040 /*-------------------------------------------------------------------------
29041 Sanity check
29042 -------------------------------------------------------------------------*/
29043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29044 ( NULL == pEventData->pEventData ))
29045 {
29046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029048 WDI_ASSERT(0);
29049 return WDI_STATUS_E_FAILURE;
29050 }
29051
Wilson Yang00256342013-10-10 23:13:38 -070029052 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29053
29054 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029055 Extract response and send it to UMAC
29056 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029057 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29058 {
29059 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29060 pEventData->pEventData,
29061 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029062
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029063 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029064 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029065 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29066 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29067 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29068 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29069 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29070 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29071 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29072 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029073
29074 wpalMutexAcquire(&pWDICtx->wptMutex);
29075 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29076 &pBSSSes);
29077
29078 if ( NULL == pBSSSes )
29079 {
29080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29081 "Association sequence for this BSS does not exist or "
29082 "association no longer in progress - mysterious HAL response");
29083 wpalMutexRelease(&pWDICtx->wptMutex);
29084 return WDI_STATUS_E_NOT_ALLOWED;
29085 }
29086
29087 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29088 sizeof (wpt_macAddr));
29089 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029090 }
29091 else
29092 {
29093 halStatus = *((eHalStatus*)pEventData->pEventData);
29094 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029096 /*Notify UMAC*/
29097 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29098 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029099 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029100
29101 return WDI_STATUS_SUCCESS;
29102}
29103#endif // WLAN_FEATURE_GTK_OFFLOAD
29104
29105#ifdef WLAN_WAKEUP_EVENTS
29106WDI_Status
29107WDI_ProcessWakeReasonInd
29108(
29109 WDI_ControlBlockType* pWDICtx,
29110 WDI_EventInfoType* pEventData
29111)
29112{
29113 WDI_LowLevelIndType *pWdiInd;
29114 tpWakeReasonParams pWakeReasonParams;
29115 wpt_uint32 allocSize = 0;
29116
29117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029118 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029119
29120 /*-------------------------------------------------------------------------
29121 Sanity check
29122 -------------------------------------------------------------------------*/
29123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29124 ( NULL == pEventData->pEventData ))
29125 {
29126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029128 WDI_ASSERT( 0 );
29129 return WDI_STATUS_E_FAILURE;
29130 }
29131
29132 /*-------------------------------------------------------------------------
29133 Extract indication and send it to UMAC
29134 -------------------------------------------------------------------------*/
29135 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29136
29137 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29138
29139 //Allocate memory for WDI_WakeReasonIndType structure
29140 pWdiInd = wpalMemoryAllocate(allocSize) ;
29141
29142 if(NULL == pWdiInd)
29143 {
29144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029145 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029146 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029147 WDI_ASSERT(0);
29148 return WDI_STATUS_E_FAILURE;
29149 }
29150
29151 wpalMemoryZero(pWdiInd, allocSize);
29152
29153 /* Fill in the indication parameters*/
29154 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29155 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29156 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29157 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29158 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29159 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29160 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29161 &(pWakeReasonParams->aDataStart[0]),
29162 pWakeReasonParams->ulStoredDataLen);
29163
ltimariub77f24b2013-01-24 18:54:33 -080029164
29165 if ( pWDICtx->wdiLowLevelIndCB )
29166 {
29167 /*Notify UMAC*/
29168 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029170
29171 //Free memory allocated for WDI_WakeReasonIndType structure
29172 wpalMemoryFree(pWdiInd);
29173
29174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029175 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029176
29177 return WDI_STATUS_SUCCESS;
29178}
29179#endif // WLAN_WAKEUP_EVENTS
29180
29181void WDI_GetWcnssCompiledApiVersion
29182(
29183 WDI_WlanVersionType *pWcnssApiVersion
29184)
29185{
29186 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29187 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29188 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29189 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29190}
29191
29192/**
29193 @brief Process Set TM Level Rsp function (called when a
29194 response is being received over the bus from HAL)
29195
29196 @param pWDICtx: pointer to the WLAN DAL context
29197 pEventData: pointer to the event information structure
29198
29199 @see
29200 @return Result of the function call
29201*/
29202WDI_Status
29203WDI_ProcessSetTmLevelRsp
29204(
29205 WDI_ControlBlockType* pWDICtx,
29206 WDI_EventInfoType* pEventData
29207)
29208{
29209 WDI_Status wdiStatus;
29210 eHalStatus halStatus;
29211 WDI_SetTmLevelCb wdiSetTmLevelCb;
29212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29213
29214 /*-------------------------------------------------------------------------
29215 Sanity check
29216 -------------------------------------------------------------------------*/
29217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29218 ( NULL == pEventData->pEventData ))
29219 {
29220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029222 WDI_ASSERT(0);
29223 return WDI_STATUS_E_FAILURE;
29224 }
29225
29226 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29227
29228 /*-------------------------------------------------------------------------
29229 Extract response and send it to UMAC
29230 -------------------------------------------------------------------------*/
29231 halStatus = *((eHalStatus*)pEventData->pEventData);
29232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29233
29234 /*Notify UMAC*/
29235 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29236
29237 return WDI_STATUS_SUCCESS;
29238}/*WDI_ProcessSetTmLevelRsp*/
29239
29240/**
29241 @brief Process Set Thermal Mitigation level Changed request
29242
29243 @param pWDICtx: pointer to the WLAN DAL context
29244 pEventData: pointer to the event information structure
29245
29246 @see
29247 @return Result of the function call
29248*/
29249WDI_Status
29250WDI_ProcessSetTmLevelReq
29251(
29252 WDI_ControlBlockType* pWDICtx,
29253 WDI_EventInfoType* pEventData
29254)
29255{
29256 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29257 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29258 wpt_uint8* pSendBuffer = NULL;
29259 wpt_uint16 usDataOffset = 0;
29260 wpt_uint16 usSendSize = 0;
29261 tSetThermalMitgationType halTmMsg;
29262
29263 /*-------------------------------------------------------------------------
29264 Sanity check
29265 -------------------------------------------------------------------------*/
29266 if (( NULL == pEventData ) ||
29267 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29268 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29269 {
29270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029272 WDI_ASSERT(0);
29273 return WDI_STATUS_E_FAILURE;
29274 }
29275
29276 /*-----------------------------------------------------------------------
29277 Get message buffer
29278 -----------------------------------------------------------------------*/
29279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29280 sizeof(halTmMsg),
29281 &pSendBuffer, &usDataOffset, &usSendSize))||
29282 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29283 {
29284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029285 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029286 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29287 WDI_ASSERT(0);
29288 return WDI_STATUS_E_FAILURE;
29289 }
29290
29291 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29292 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29293
29294 wpalMemoryCopy( pSendBuffer+usDataOffset,
29295 &halTmMsg,
29296 sizeof(halTmMsg));
29297
29298 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29299 pWDICtx->pfncRspCB = NULL;
29300 /*-------------------------------------------------------------------------
29301 Send Get STA Request to HAL
29302 -------------------------------------------------------------------------*/
29303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29304 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29305}
29306
29307/* Fill the value from the global features enabled array to the global capabilities
29308 * bitmap struct
29309 */
29310static void
29311FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29312{
29313 wpt_int8 i;
29314 for (i=0; i<len; i++)
29315 {
29316 setFeatCaps(fCaps, enabledFeat[i]);
29317 }
29318}
29319
29320/**
29321 @brief WDI_featureCapsExchangeReq
29322 Post feature capability bitmap exchange event.
29323 Host will send its own capability to FW in this req and
29324 expect FW to send its capability back as a bitmap in Response
29325
29326 @param
29327
29328 wdiFeatureCapsExchangeCb: callback called on getting the response.
29329 It is kept to mantain similarity between WDI reqs and if needed, can
29330 be used in future. Currently, It is set to NULL
29331
29332 pUserData: user data will be passed back with the
29333 callback
29334
29335 @see
29336 @return Result of the function call
29337*/
29338WDI_Status
29339WDI_featureCapsExchangeReq
29340(
29341 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29342 void* pUserData
29343)
29344{
29345 WDI_EventInfoType wdiEventData;
29346 wpt_int32 fCapsStructSize;
29347
29348 /*------------------------------------------------------------------------
29349 Sanity Check
29350 ------------------------------------------------------------------------*/
29351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29352 {
29353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29354 "WDI API call before module is initialized - Fail request");
29355
29356 return WDI_STATUS_E_NOT_ALLOWED;
29357 }
29358
29359 /* Allocate memory separately for global variable carrying FW caps */
29360 fCapsStructSize = sizeof(tWlanFeatCaps);
29361 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29362 if ( NULL == gpHostWlanFeatCaps )
29363 {
29364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029365 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029366 WDI_ASSERT(0);
29367 return WDI_STATUS_MEM_FAILURE;
29368 }
29369
29370 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29371
29372 /*------------------------------------------------------------------------
29373 Fill in Event data and post to the Main FSM
29374 ------------------------------------------------------------------------*/
29375 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29376 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029378 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029379 gpHostWlanFeatCaps->featCaps[0],
29380 gpHostWlanFeatCaps->featCaps[1],
29381 gpHostWlanFeatCaps->featCaps[2],
29382 gpHostWlanFeatCaps->featCaps[3]
29383 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029385 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029386 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29387 wdiEventData.pEventData = gpHostWlanFeatCaps;
29388 wdiEventData.uEventDataSize = fCapsStructSize;
29389 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29390 wdiEventData.pUserData = pUserData;
29391
29392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29393}
29394
29395/**
Yathish9f22e662012-12-10 14:21:35 -080029396 @brief Disable Active mode offload in Host
29397
29398 @param void
29399 @see
29400 @return void
29401*/
29402void
29403WDI_disableCapablityFeature(wpt_uint8 feature_index)
29404{
29405 supportEnabledFeatures[feature_index] = 0;
29406 return;
29407}
29408
29409/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029410 @brief Process Host-FW Capability Exchange Request function
29411
29412 @param pWDICtx: pointer to the WLAN DAL context
29413 pEventData: pointer to the event information structure
29414
29415 @see
29416 @return Result of the function call
29417*/
29418WDI_Status
29419WDI_ProcessFeatureCapsExchangeReq
29420(
29421 WDI_ControlBlockType* pWDICtx,
29422 WDI_EventInfoType* pEventData
29423)
29424{
29425 wpt_uint8* pSendBuffer = NULL;
29426 wpt_uint16 usDataOffset = 0;
29427 wpt_uint16 usSendSize = 0;
29428 wpt_uint16 usLen = 0;
29429
29430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29431
29432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029433 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029434
29435 /*-------------------------------------------------------------------------
29436 Sanity check
29437 -------------------------------------------------------------------------*/
29438 /* Call back function is NULL since not required for cap exchange req */
29439 if (( NULL == pEventData ) ||
29440 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29441 {
29442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029444 WDI_ASSERT(0);
29445 return WDI_STATUS_E_FAILURE;
29446 }
29447
29448 /*-----------------------------------------------------------------------
29449 Get message buffer
29450 -----------------------------------------------------------------------*/
29451 usLen = sizeof(tWlanFeatCaps);
29452
29453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29454 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29455 usLen,
29456 &pSendBuffer, &usDataOffset, &usSendSize))||
29457 ( usSendSize < (usDataOffset + usLen )))
29458 {
29459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029460 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029461 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29462 WDI_ASSERT(0);
29463 return WDI_STATUS_E_FAILURE;
29464 }
29465
29466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029467 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029468 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29469 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29470 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29471 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29472 );
29473
29474 /* Copy host caps after the offset in the send buffer */
29475 wpalMemoryCopy( pSendBuffer+usDataOffset,
29476 (tWlanFeatCaps *)pEventData->pEventData,
29477 usLen);
29478
29479 /*-------------------------------------------------------------------------
29480 Send Start Request to HAL
29481 -------------------------------------------------------------------------*/
29482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29483 (WDI_StartRspCb)pEventData->pCBfnc,
29484 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29485
29486}/*WDI_ProcessFeatureCapsExchangeReq*/
29487
29488/**
29489 @brief Process Host-FW Capability Exchange Response function
29490
29491 @param pWDICtx: pointer to the WLAN DAL context
29492 pEventData: pointer to the event information structure
29493
29494 @see
29495 @return Result of the function call
29496*/
29497WDI_Status
29498WDI_ProcessFeatureCapsExchangeRsp
29499(
29500 WDI_ControlBlockType* pWDICtx,
29501 WDI_EventInfoType* pEventData
29502)
29503{
29504 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29505 wpt_int32 fCapsStructSize;
29506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29507
29508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029509 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029510
29511 /*-------------------------------------------------------------------------
29512 Sanity check
29513 -------------------------------------------------------------------------*/
29514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29515 ( NULL == pEventData->pEventData ))
29516 {
29517 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029520 WDI_ASSERT(0);
29521 return WDI_STATUS_E_FAILURE;
29522 }
29523
29524 /* Allocate memory separately for global variable carrying FW caps */
29525 fCapsStructSize = sizeof(tWlanFeatCaps);
29526 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29527 if ( NULL == gpFwWlanFeatCaps )
29528 {
29529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029530 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029531 WDI_ASSERT(0);
29532 return WDI_STATUS_MEM_FAILURE;
29533 }
29534
29535 /*-------------------------------------------------------------------------
29536 Unpack HAL Response Message - the header was already extracted by the
29537 main Response Handling procedure
29538 -------------------------------------------------------------------------*/
29539 /*-------------------------------------------------------------------------
29540 Extract response and send it to UMAC
29541 -------------------------------------------------------------------------*/
29542
29543 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29544 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029546 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029547 gpFwWlanFeatCaps->featCaps[0],
29548 gpFwWlanFeatCaps->featCaps[1],
29549 gpFwWlanFeatCaps->featCaps[2],
29550 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029551 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029553 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029554 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29555
29556 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29557 if (wdiFeatureCapsExchangeCb != NULL)
29558 wdiFeatureCapsExchangeCb(NULL, NULL);
29559
29560 return WDI_STATUS_SUCCESS;
29561}
29562
Mohit Khanna4a70d262012-09-11 16:30:12 -070029563#ifdef WLAN_FEATURE_11AC
29564WDI_Status
29565WDI_ProcessUpdateVHTOpModeRsp
29566(
29567 WDI_ControlBlockType* pWDICtx,
29568 WDI_EventInfoType* pEventData
29569)
29570{
29571 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29572 WDI_Status wdiStatus;
29573 eHalStatus halStatus;
29574
29575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29576
29577 /*-------------------------------------------------------------------------
29578 Sanity check
29579 -------------------------------------------------------------------------*/
29580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29581 ( NULL == pEventData->pEventData))
29582 {
29583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029584 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029585 WDI_ASSERT(0);
29586 return WDI_STATUS_E_FAILURE;
29587 }
29588 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29589
29590 /*-------------------------------------------------------------------------
29591 Extract response and send it to UMAC
29592 -------------------------------------------------------------------------*/
29593 halStatus = *((eHalStatus*)pEventData->pEventData);
29594 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29595
29596 /*Notify UMAC*/
29597 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29598
29599 return WDI_STATUS_SUCCESS;
29600}
29601#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029602/**
29603 @brief WDI_getHostWlanFeatCaps
29604 WDI API that returns whether the feature passed to it as enum value in
29605 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29606 variable storing host capability bitmap to find this. This can be used by
29607 other moduels to decide certain things like call different APIs based on
29608 whether a particular feature is supported.
29609
29610 @param
29611
29612 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29613
29614 @see
29615 @return
29616 0 - if the feature is NOT supported in host
29617 any non-zero value - if the feature is SUPPORTED in host.
29618*/
29619wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29620{
29621 wpt_uint8 featSupported = 0;
29622 if (gpHostWlanFeatCaps != NULL)
29623 {
29624 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29625 }
29626 else
29627 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029629 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029630 }
29631 return featSupported;
29632}
29633
29634/**
29635 @brief WDI_getFwWlanFeatCaps
29636 WDI API that returns whether the feature passed to it as enum value in
29637 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29638 variable storing host capability bitmap to find this. This can be used by
29639 other moduels to decide certain things like call different APIs based on
29640 whether a particular feature is supported.
29641
29642 @param
29643
29644 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29645 in wlan_hal_msg.h.
29646
29647 @see
29648 @return
29649 0 - if the feature is NOT supported in FW
29650 any non-zero value - if the feature is SUPPORTED in FW.
29651*/
29652wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29653{
29654 wpt_uint8 featSupported = 0;
29655 if (gpFwWlanFeatCaps != NULL)
29656 {
29657 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29658 }
29659 else
29660 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029662 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029663 }
29664 return featSupported;
29665}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029666
Katya Nigamf0511f62015-05-05 16:40:57 +053029667wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29668{
29669 /* 5gHz Channel */
29670 if( channel >= 34 && channel <= 165 )
29671 {
29672 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29673 {
29674 if ( channel== 36 || channel == 52 || channel == 100 ||
29675 channel == 116 || channel == 149 )
29676 {
29677 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29678 }
29679 else if ( channel == 40 || channel == 56 || channel == 104 ||
29680 channel == 120 || channel == 153 )
29681 {
29682 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29683 }
29684 else if ( channel == 44 || channel == 60 || channel == 108 ||
29685 channel == 124 || channel == 157 )
29686 {
29687 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29688 }
29689 else if ( channel == 48 || channel == 64 || channel == 112 ||
29690 channel == 128 || channel == 144 || channel == 161 )
29691 {
29692 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29693 }
29694 else if ( channel == 165 )
29695 {
29696 return PHY_SINGLE_CHANNEL_CENTERED;
29697 }
29698 }
29699
29700 else
29701 {
29702 if ( channel== 40 || channel == 48 || channel == 56 ||
29703 channel == 64 || channel == 104 || channel == 112 ||
29704 channel == 120 || channel == 128 || channel == 136 ||
29705 channel == 144 || channel == 153 || channel == 161 )
29706 {
29707 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29708 }
29709 else if ( channel== 36 || channel == 44 || channel == 52 ||
29710 channel == 60 || channel == 100 || channel == 108 ||
29711 channel == 116 || channel == 124 || channel == 132 ||
29712 channel == 140 || channel == 149 || channel == 157 )
29713 {
29714 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29715 }
29716 else if ( channel == 165 )
29717 {
29718 return PHY_SINGLE_CHANNEL_CENTERED;
29719 }
29720 }
29721 }
29722
29723 /* 2.4Ghz Channel */
29724 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29725 {
29726 if (channel >= 1 && channel <= 7)
29727 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29728 else if (channel >= 8 && channel <= 13)
29729 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29730 else if (channel ==14)
29731 return PHY_SINGLE_CHANNEL_CENTERED;
29732 }
29733 return PHY_SINGLE_CHANNEL_CENTERED;
29734}
29735
Mohit Khanna4a70d262012-09-11 16:30:12 -070029736#ifdef WLAN_FEATURE_11AC
29737WDI_Status
29738WDI_ProcessUpdateVHTOpModeReq
29739(
29740 WDI_ControlBlockType* pWDICtx,
29741 WDI_EventInfoType* pEventData
29742)
29743{
29744 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29745 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29746 wpt_uint8* pSendBuffer = NULL;
29747 wpt_uint16 usDataOffset = 0;
29748 wpt_uint16 usSendSize = 0;
29749
29750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29751
29752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029753 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029754
29755 /*-------------------------------------------------------------------------
29756 Sanity check
29757 -------------------------------------------------------------------------*/
29758 if (( NULL == pEventData ) ||
29759 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29760 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29761 {
29762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029763 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029764 WDI_ASSERT(0);
29765 return WDI_STATUS_E_FAILURE;
29766 }
29767
29768 /*-----------------------------------------------------------------------
29769 Get message buffer
29770 -----------------------------------------------------------------------*/
29771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29772 sizeof(WDI_UpdateVHTOpMode),
29773 &pSendBuffer, &usDataOffset, &usSendSize))||
29774 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29775 {
29776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29777 "Unable to get send buffer in update vht opMode req");
29778 WDI_ASSERT(0);
29779 return WDI_STATUS_E_FAILURE;
29780 }
29781
29782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029783 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029784
29785 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29786 sizeof(WDI_UpdateVHTOpMode));
29787
29788 /*-------------------------------------------------------------------------
29789 Send Start Request to HAL
29790 -------------------------------------------------------------------------*/
29791 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29792 wdiVHTOpModeCb,
29793 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29794
29795}
29796
29797WDI_Status
29798WDI_UpdateVHTOpModeReq
29799(
29800 WDI_UpdateVHTOpMode *pData,
29801 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29802 void* pUserData
29803)
29804{
29805 WDI_EventInfoType wdiEventData;
29806
29807 /*------------------------------------------------------------------------
29808 Sanity Check
29809 ------------------------------------------------------------------------*/
29810 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29811 {
29812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29813 "WDI API call before module is initialized - Fail request");
29814
29815 return WDI_STATUS_E_NOT_ALLOWED;
29816 }
29817
29818 /*------------------------------------------------------------------------
29819 Fill in Event data and post to the Main FSM
29820 ------------------------------------------------------------------------*/
29821 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29822 wdiEventData.pEventData = pData;
29823 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29824 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29825 wdiEventData.pUserData = pUserData;
29826
29827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029828 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029829
29830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29831
29832}
29833#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029834
29835/**
29836 @brief WDI_TransportChannelDebug -
29837 Display DXE Channel debugging information
29838 User may request to display DXE channel snapshot
29839 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029840
Jeff Johnsonb88db982012-12-10 13:34:59 -080029841 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029842 @param debugFlags : Enable stall detect features
29843 defined by WPAL_DeviceDebugFlags
29844 These features may effect
29845 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029846 @see
29847 @return none
29848*/
29849void WDI_TransportChannelDebug
29850(
29851 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029852 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029853)
29854{
Mihir Shete40a55652014-03-02 14:14:47 +053029855 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029856 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029857}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029858/**
29859 @brief WDI_SsrTimerCB
29860 Callback function for SSR timer, if this is called then the graceful
29861 shutdown for Riva did not happen.
29862
29863 @param pUserData : user data to timer
29864
29865 @see
29866 @return none
29867*/
29868void
29869WDI_SsrTimerCB
29870(
29871 void *pUserData
29872)
29873{
29874 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29876
29877 if (NULL == pWDICtx )
29878 {
29879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029880 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029881 WDI_ASSERT(0);
29882 return;
29883 }
29884 wpalRivaSubystemRestart();
29885
29886 return;
29887
29888}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029889
29890/**
29891 @brief WDI_SetEnableSSR -
29892 This API is called to enable/disable SSR on WDI timeout.
29893
29894 @param enableSSR : enable/disable SSR
29895
29896 @see
29897 @return none
29898*/
29899void WDI_SetEnableSSR(wpt_boolean enableSSR)
29900{
29901 gWDICb.bEnableSSR = enableSSR;
29902}
Leo Chang9056f462013-08-01 19:21:11 -070029903
29904
29905#ifdef FEATURE_WLAN_LPHB
29906/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029907 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029908 This function will be invoked when FW detects low power
29909 heart beat failure
29910
29911 @param pWDICtx : wdi context
29912 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029913 @see
29914 @return Result of the function call
29915*/
29916WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029917WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029918(
29919 WDI_ControlBlockType* pWDICtx,
29920 WDI_EventInfoType* pEventData
29921)
29922{
29923 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029924 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29926
29927 /*-------------------------------------------------------------------------
29928 Sanity check
29929 -------------------------------------------------------------------------*/
29930 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29931 (NULL == pEventData->pEventData))
29932 {
29933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29934 "%s: Invalid parameters", __func__);
29935 WDI_ASSERT(0);
29936 return WDI_STATUS_E_FAILURE;
29937 }
29938
29939 /*-------------------------------------------------------------------------
29940 Extract indication and send it to UMAC
29941 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029942 wpalMemoryCopy(&lphbIndicationParam,
29943 pEventData->pEventData,
29944 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029945
Leo Changd9df8aa2013-09-26 13:32:26 -070029946 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029947 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029948 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029949 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029950 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029951 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029952 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029953 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029954 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029955 /*Notify UMAC*/
29956 if (pWDICtx->wdiLowLevelIndCB)
29957 {
29958 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29959 }
29960
29961 return WDI_STATUS_SUCCESS;
29962}
29963
29964/**
29965 @brief WDI_ProcessLphbCfgRsp -
29966 LPHB configuration response from FW
29967
29968 @param pWDICtx : wdi context
29969 pEventData : indication data
29970
29971 @see
29972 @return Result of the function call
29973*/
29974WDI_Status WDI_ProcessLphbCfgRsp
29975(
29976 WDI_ControlBlockType* pWDICtx,
29977 WDI_EventInfoType* pEventData
29978)
29979{
29980 WDI_Status wdiStatus;
29981 eHalStatus halStatus;
29982 WDI_LphbCfgCb wdiLphbCfgCb;
29983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29984
29985 /*-------------------------------------------------------------------------
29986 Sanity check
29987 -------------------------------------------------------------------------*/
29988 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29989 (NULL == pEventData->pEventData))
29990 {
29991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29992 "%s: Invalid parameters", __func__);
29993 WDI_ASSERT(0);
29994 return WDI_STATUS_E_FAILURE;
29995 }
29996
29997 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29998
29999 /*-------------------------------------------------------------------------
30000 Extract response and send it to UMAC
30001 -------------------------------------------------------------------------*/
30002 halStatus = *((eHalStatus*)pEventData->pEventData);
30003 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30004
30005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30006 "LPHB Cfg Rsp Return status %d", wdiStatus);
30007 /*Notify UMAC*/
30008 if (NULL != wdiLphbCfgCb)
30009 {
30010 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30011 }
30012
30013 return WDI_STATUS_SUCCESS;
30014}
30015
30016/**
30017 @brief WDI_ProcessLPHBConfReq -
30018 LPHB configuration request to FW
30019
30020 @param pWDICtx : wdi context
30021 pEventData : indication data
30022
30023 @see
30024 @return none
30025*/
30026WDI_Status WDI_ProcessLPHBConfReq
30027(
30028 WDI_ControlBlockType* pWDICtx,
30029 WDI_EventInfoType* pEventData
30030)
30031{
30032 WDI_LPHBReq *pLphbReqParams;
30033 WDI_Status wdiStatus;
30034 wpt_uint8* pSendBuffer = NULL;
30035 wpt_uint16 usDataOffset = 0;
30036 wpt_uint16 usSendSize = 0;
30037 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30039
30040 /*-------------------------------------------------------------------------
30041 Sanity check
30042 -------------------------------------------------------------------------*/
30043 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30044 {
30045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30046 "%s: Invalid parameters in Suspend ind",__func__);
30047 WDI_ASSERT(0);
30048 return WDI_STATUS_E_FAILURE;
30049 }
30050
30051 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30052
30053 /*-----------------------------------------------------------------------
30054 Get message buffer
30055 -----------------------------------------------------------------------*/
30056 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30057 WDI_LPHB_CFG_REQ,
30058 sizeof(tHalLowPowerHeartBeatReqMsg),
30059 &pSendBuffer, &usDataOffset, &usSendSize))||
30060 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30061 {
30062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30063 "Unable to get send buffer in LPHB Ind ");
30064 WDI_ASSERT(0);
30065 return WDI_STATUS_E_FAILURE;
30066 }
30067
30068 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30069 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30070
30071 halLphbReqRarams->lowPowerHeartBeatCmdType =
30072 (tANI_U16)(++pLphbReqParams->cmd);
30073 switch ((tANI_U16)pLphbReqParams->cmd)
30074 {
30075 case WDI_LPHB_SET_EN_PARAMS_INDID:
30076 halLphbReqRarams->sessionIdx =
30077 pLphbReqParams->params.lphbEnableReq.session;
30078 halLphbReqRarams->options.control.heartBeatEnable =
30079 pLphbReqParams->params.lphbEnableReq.enable;
30080 halLphbReqRarams->options.control.heartBeatType =
30081 pLphbReqParams->params.lphbEnableReq.item;
30082 break;
30083
30084 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30085 halLphbReqRarams->sessionIdx =
30086 pLphbReqParams->params.lphbTcpParamReq.session;
30087 halLphbReqRarams->options.tcpParams.timeOutSec =
30088 pLphbReqParams->params.lphbTcpParamReq.timeout;
30089 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30090 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30091 sizeof(v_U32_t));
30092 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30093 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30094 sizeof(v_U32_t));
30095
30096 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30097 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30098 WDI_MAC_ADDR_LEN);
30099
30100 halLphbReqRarams->options.tcpParams.hostPort =
30101 pLphbReqParams->params.lphbTcpParamReq.src_port;
30102 halLphbReqRarams->options.tcpParams.destPort =
30103 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030104 halLphbReqRarams->options.tcpParams.timePeriodSec =
30105 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30106 halLphbReqRarams->options.tcpParams.tcpSn =
30107 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030108 break;
30109
30110 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30111 halLphbReqRarams->sessionIdx =
30112 pLphbReqParams->params.lphbTcpFilterReq.session;
30113 halLphbReqRarams->options.tcpUdpFilter.offset =
30114 pLphbReqParams->params.lphbTcpFilterReq.offset;
30115 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30116 pLphbReqParams->params.lphbTcpFilterReq.length;
30117 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30118 pLphbReqParams->params.lphbTcpFilterReq.filter,
30119 WDI_LPHB_FILTER_LEN);
30120 break;
30121
30122 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30123 halLphbReqRarams->sessionIdx =
30124 pLphbReqParams->params.lphbUdpParamReq.session;
30125 halLphbReqRarams->options.udpParams.timeOutSec =
30126 pLphbReqParams->params.lphbUdpParamReq.timeout;
30127 halLphbReqRarams->options.udpParams.timePeriodSec =
30128 pLphbReqParams->params.lphbUdpParamReq.interval;
30129 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30130 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30131 sizeof(v_U32_t));
30132 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30133 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30134 sizeof(v_U32_t));
30135
30136 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30137 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30138 WDI_MAC_ADDR_LEN);
30139
30140 halLphbReqRarams->options.udpParams.hostPort =
30141 pLphbReqParams->params.lphbUdpParamReq.src_port;
30142 halLphbReqRarams->options.udpParams.destPort =
30143 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30144 break;
30145
30146 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30147 halLphbReqRarams->sessionIdx =
30148 pLphbReqParams->params.lphbUdpFilterReq.session;
30149 halLphbReqRarams->options.tcpUdpFilter.offset =
30150 pLphbReqParams->params.lphbUdpFilterReq.offset;
30151 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30152 pLphbReqParams->params.lphbUdpFilterReq.length;
30153 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30154 pLphbReqParams->params.lphbUdpFilterReq.filter,
30155 WDI_LPHB_FILTER_LEN);
30156 break;
30157
30158 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30159 /* NA */
30160 break;
30161
30162 default:
30163 break;
30164 }
30165
30166 /*-------------------------------------------------------------------------
30167 Send Suspend Request to HAL
30168 -------------------------------------------------------------------------*/
30169 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30170 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30171
30172 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30173 usSendSize, pWDICtx->pfncRspCB,
30174 pWDICtx->pReqStatusUserData,
30175 WDI_LPHB_CFG_RESP);
30176
30177 return wdiStatus;
30178}
30179
30180/**
30181 @brief WDI_LPHBConfReq -
30182 LPHB configuration request API
30183
30184 @param lphbconfParam : configuration parameter
30185 usrData : client context
30186 lphbCfgCb : callback function pointer
30187
30188 @see
30189 @return Success or fail status code
30190*/
30191WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30192 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30193{
30194 WDI_EventInfoType wdiEventData;
30195
30196 /*------------------------------------------------------------------------
30197 Sanity Check
30198 ------------------------------------------------------------------------*/
30199 if (eWLAN_PAL_FALSE == gWDIInitialized)
30200 {
30201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30202 "WDI API call before module is initialized - Fail request");
30203
30204 return WDI_STATUS_E_NOT_ALLOWED;
30205 }
30206
30207 /*------------------------------------------------------------------------
30208 Fill in Event data and post to the Main FSM
30209 ------------------------------------------------------------------------*/
30210 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30211 wdiEventData.pEventData = lphbconfParam;
30212 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30213 wdiEventData.pCBfnc = lphbCfgCb;
30214 wdiEventData.pUserData = usrData;
30215
30216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30217}
30218#endif /* FEATURE_WLAN_LPHB */
30219
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030220/**
30221 @brief WDI_ProcessIbssPeerInactivityInd
30222 Process peer inactivity indication coming from HAL
30223
30224 @param pWDICtx: pointer to the WLAN DAL context
30225 pEventData: pointer to the event information structure
30226 @see
30227 @return Result of the function call
30228*/
30229WDI_Status
30230WDI_ProcessIbssPeerInactivityInd
30231(
30232 WDI_ControlBlockType* pWDICtx,
30233 WDI_EventInfoType* pEventData
30234)
30235{
30236 WDI_LowLevelIndType wdiInd;
30237 tIbssPeerInactivityIndMsg halIbssIndMsg;
30238
30239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30240
30241 /*-------------------------------------------------------------------------
30242 Sanity check
30243 -------------------------------------------------------------------------*/
30244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30245 ( NULL == pEventData->pEventData ))
30246 {
30247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30248 "%s: Invalid parameters", __func__);
30249 WDI_ASSERT( 0 );
30250 return WDI_STATUS_E_FAILURE;
30251 }
30252
30253 /*-------------------------------------------------------------------------
30254 Extract indication and send it to UMAC
30255 -------------------------------------------------------------------------*/
30256 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30257 pEventData->pEventData,
30258 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30259
30260 /*Fill in the indication parameters*/
30261 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30262
30263 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30264 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30265
30266 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30267 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30268
30269 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30270 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30271 sizeof(tSirMacAddr));
30272
30273 /*Notify UMAC*/
30274 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30275
30276 return WDI_STATUS_SUCCESS;
30277
30278} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030279
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030280/**
30281*@brief WDI_RateUpdateInd will be called when the upper MAC
30282 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030283
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030284
30285 @param wdiRateUpdateIndParams:
30286
30287
30288 @see
30289 @return Result of the function call
30290*/
30291WDI_Status
30292WDI_RateUpdateInd
30293(
30294 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30295)
30296{
30297 WDI_EventInfoType wdiEventData;
30298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30299
30300 /*------------------------------------------------------------------------
30301 Sanity Check
30302 ------------------------------------------------------------------------*/
30303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30304 {
30305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30306 "WDI API call before module is initialized - Fail request");
30307
30308 return WDI_STATUS_E_NOT_ALLOWED;
30309 }
30310
30311 /*------------------------------------------------------------------------
30312 Fill in Event data and post to the Main FSM
30313 ------------------------------------------------------------------------*/
30314 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30315 wdiEventData.pEventData = wdiRateUpdateIndParams;
30316 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30317 wdiEventData.pCBfnc = NULL;
30318 wdiEventData.pUserData = NULL;
30319
30320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30321
30322}/* WDI_RateUpdateInd */
30323
30324/**
30325 @brief Process Rate Update Indication and post it to HAL
30326
30327 @param pWDICtx: pointer to the WLAN DAL context
30328 pEventData: pointer to the event information structure
30329
30330 @see
30331 @return Result of the function call
30332*/
30333WDI_Status
30334WDI_ProcessRateUpdateInd
30335(
30336 WDI_ControlBlockType* pWDICtx,
30337 WDI_EventInfoType* pEventData
30338)
30339{
30340 wpt_uint8* pSendBuffer = NULL;
30341 wpt_uint16 usDataOffset = 0;
30342 wpt_uint16 usSendSize = 0;
30343 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30344 tHalRateUpdateInd *pRateUpdateInd;
30345 WDI_Status wdiStatus;
30346
30347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30348
30349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30350 "%s", __func__);
30351
30352 /*-------------------------------------------------------------------------
30353 Sanity check
30354 -------------------------------------------------------------------------*/
30355 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30356 {
30357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30358 "%s: Invalid parameters", __func__);
30359 WDI_ASSERT(0);
30360 return WDI_STATUS_E_FAILURE;
30361 }
30362 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30363 /*-----------------------------------------------------------------------
30364 Get message buffer
30365 -----------------------------------------------------------------------*/
30366
30367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30368 WDI_RATE_UPDATE_IND,
30369 sizeof(tHalRateUpdateParams),
30370 &pSendBuffer, &usDataOffset, &usSendSize))||
30371 ( usSendSize < (usDataOffset +
30372 sizeof(tHalRateUpdateParams) )))
30373 {
30374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30375 "Unable to get send buffer in Rate Update Indication %p ",
30376 pEventData);
30377 WDI_ASSERT(0);
30378 return WDI_STATUS_E_FAILURE;
30379 }
30380
30381 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30382
30383 /* Copy the bssid */
30384 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30385 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30386
30387 /* Copy the tx flags */
30388 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30389 pwdiRateUpdateInd->ucastDataRateTxFlag;
30390 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30391 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30392 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30393 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30394 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30395 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30396
30397 /* Copy the tx rates */
30398 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30399 pwdiRateUpdateInd->ucastDataRate;
30400 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30401 pwdiRateUpdateInd->reliableMcastDataRate;
30402 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30403 pwdiRateUpdateInd->mcastDataRate24GHz;
30404 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30405 pwdiRateUpdateInd->mcastDataRate5GHz;
30406
30407 /*-------------------------------------------------------------------------
30408 Send Rate Update Indication to HAL
30409 -------------------------------------------------------------------------*/
30410 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30411 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30412
30413 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30414
30415 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30416 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30417
30418} /* WDI_ProcessRateUpdateInd */
30419
30420#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030421/**
30422 @brief Process stop batch indication from WDA
30423
30424 @param pWDICtx: pointer to the WLAN DAL context
30425 pEventData: pointer to the event information structure
30426
30427 @see
30428 @return Result of the function call
30429*/
30430WDI_Status
30431WDI_ProcessStopBatchScanInd
30432(
30433 WDI_ControlBlockType* pWDICtx,
30434 WDI_EventInfoType* pEventData
30435)
30436{
30437 wpt_uint8* pSendBuffer = NULL;
30438 wpt_uint16 usDataOffset = 0;
30439 wpt_uint16 usSendSize = 0;
30440 WDI_Status wdiStatus;
30441 tHalBatchScanStopIndParam *pHalInd = NULL;
30442 WDI_StopBatchScanIndType *pWdiInd = NULL;
30443
30444
30445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30446
30447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30448 "%s", __func__);
30449
30450 /*-------------------------------------------------------------------------
30451 Sanity check
30452 -------------------------------------------------------------------------*/
30453
30454 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30455 {
30456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30457 "%s: Invalid parameters", __func__);
30458 WDI_ASSERT(0);
30459 return WDI_STATUS_E_FAILURE;
30460 }
30461 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30462 /*-----------------------------------------------------------------------
30463 Get message buffer
30464 -----------------------------------------------------------------------*/
30465
30466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30467 WDI_STOP_BATCH_SCAN_IND,
30468 sizeof(tHalBatchScanStopIndParam),
30469 &pSendBuffer, &usDataOffset, &usSendSize))||
30470 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30471 {
30472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30473 "Unable to get send buffer in stop batch scan ind %p ",
30474 pEventData);
30475 WDI_ASSERT(0);
30476 return WDI_STATUS_E_FAILURE;
30477 }
30478
30479 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30480 pHalInd->param = pWdiInd->param;
30481
30482 pWDICtx->pReqStatusUserData = NULL;
30483 pWDICtx->pfncRspCB = NULL;
30484 /*-------------------------------------------------------------------------
30485 Send Stop batch scan indication to HAL
30486 -------------------------------------------------------------------------*/
30487 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30488 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30489}
30490
30491/**
30492 @brief This API is called to trigger batch scan results from FW
30493
30494 @param pWDICtx: pointer to the WLAN DAL context
30495 pEventData: pointer to the event information structure
30496
30497 @see
30498 @return Result of the function call
30499*/
30500WDI_Status
30501WDI_ProcessTriggerBatchScanResultInd
30502(
30503 WDI_ControlBlockType* pWDICtx,
30504 WDI_EventInfoType* pEventData
30505)
30506{
30507 WDI_Status wdiStatus;
30508 wpt_uint8* pSendBuffer = NULL;
30509 wpt_uint16 usDataOffset = 0;
30510 wpt_uint16 usSendSize = 0;
30511 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30512 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30513
30514
30515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30516
30517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30518 "%s", __func__);
30519
30520 /*-------------------------------------------------------------------------
30521 Sanity check
30522 -------------------------------------------------------------------------*/
30523
30524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30525 {
30526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30527 "%s: Invalid parameters", __func__);
30528 WDI_ASSERT(0);
30529 return WDI_STATUS_E_FAILURE;
30530 }
30531 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30532 /*-----------------------------------------------------------------------
30533 Get message buffer
30534 -----------------------------------------------------------------------*/
30535
30536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30537 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30538 sizeof(tHalBatchScanTriggerResultParam),
30539 &pSendBuffer, &usDataOffset, &usSendSize))||
30540 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30541 {
30542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30543 "Unable to get send buffer in stop batch scan ind %p ",
30544 pEventData);
30545 WDI_ASSERT(0);
30546 return WDI_STATUS_E_FAILURE;
30547 }
30548
30549 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30550 pHalInd->param = pWdiInd->param;
30551
30552 pWDICtx->pReqStatusUserData = NULL;
30553 pWDICtx->pfncRspCB = NULL;
30554 /*-------------------------------------------------------------------------
30555 Send trigger batch scan result indication to HAL
30556 -------------------------------------------------------------------------*/
30557 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30558 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30559}
30560
30561
30562/**
30563 @brief Process set batch scan response from FW
30564
30565 @param pWDICtx: pointer to the WLAN DAL context
30566 pEventData: pointer to the event information structure
30567
30568 @see
30569 @return Result of the function call
30570*/
30571WDI_Status
30572WDI_ProcessSetBatchScanRsp
30573(
30574 WDI_ControlBlockType* pWDICtx,
30575 WDI_EventInfoType* pEventData
30576)
30577{
30578 WDI_SetBatchScanCb wdiSetBatchScanCb;
30579 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30580
30581 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30583
30584 /*sanity check*/
30585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30586 ( NULL == pEventData->pEventData))
30587 {
30588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30589 "%s: Invalid parameters", __func__);
30590 WDI_ASSERT(0);
30591 return WDI_STATUS_E_FAILURE;
30592 }
30593
30594 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30595 if ( NULL == wdiSetBatchScanCb)
30596 {
30597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30598 "%s: call back function is NULL", __func__);
30599 WDI_ASSERT(0);
30600 return WDI_STATUS_E_FAILURE;
30601 }
30602
30603 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30604
30605 if (NULL == pSetBatchScanRsp)
30606 {
30607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030608 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030609 pWDICtx, pEventData, pEventData->pEventData);
30610 WDI_ASSERT(0);
30611 return WDI_STATUS_E_FAILURE;
30612 }
30613
Sunil Duttbd736ed2014-05-26 21:19:41 +053030614 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030615 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30616
30617 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30618
Sunil Duttbd736ed2014-05-26 21:19:41 +053030619 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030620 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30621
30622 wpalMemoryFree(pSetBatchScanRsp);
30623
30624 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030625}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030626
30627/**
30628 @brief Process batch scan result indication from FW
30629
30630 @param pWDICtx: pointer to the WLAN DAL context
30631 pEventData: pointer to the event information structure
30632
30633 @see
30634 @return Result of the function call
30635*/
30636WDI_Status
30637WDI_ProcessBatchScanResultInd
30638(
30639 WDI_ControlBlockType* pWDICtx,
30640 WDI_EventInfoType* pEventData
30641)
30642{
30643 void *pBatchScanResultInd;
30644 WDI_LowLevelIndType wdiInd;
30645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30646
Sunil Duttbd736ed2014-05-26 21:19:41 +053030647 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30649 ( NULL == pEventData->pEventData))
30650 {
30651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30652 "%s: Invalid parameters", __func__);
30653 WDI_ASSERT(0);
30654 return WDI_STATUS_E_FAILURE;
30655 }
30656
Sunil Duttbd736ed2014-05-26 21:19:41 +053030657 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030658 pBatchScanResultInd = (void *)pEventData->pEventData;
30659
Sunil Duttbd736ed2014-05-26 21:19:41 +053030660 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030661 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30662
30663 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30664
Sunil Duttbd736ed2014-05-26 21:19:41 +053030665 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030666 if (pWDICtx->wdiLowLevelIndCB)
30667 {
30668 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30669 }
30670 else
30671 {
30672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30673 "%s: WDILowLevelIndCb is null", __func__);
30674 WDI_ASSERT(0);
30675 return WDI_STATUS_E_FAILURE;
30676 }
30677
30678 return WDI_STATUS_SUCCESS;
30679} /*End of WDI_ProcessBatchScanResultInd*/
30680
Sunil Duttbd736ed2014-05-26 21:19:41 +053030681#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30682/**
30683 @brief Process Link Layer Statistics Result indication from FW
30684
30685 @param pWDICtx: pointer to the WLAN DAL context
30686 pEventData: pointer to the event information structure
30687
30688 @see
30689 @return Result of the function call
30690*/
30691WDI_Status
30692WDI_ProcessLinkLayerStatsResultsInd
30693(
30694 WDI_ControlBlockType* pWDICtx,
30695 WDI_EventInfoType* pEventData
30696)
30697{
30698 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030699 WDI_LLstatsResultsType *halLLStatsResults;
30700 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030701 WDI_LowLevelIndType wdiInd;
30702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30703
30704 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30705 "%s: Event RESULTS Indication", __func__);
30706
30707 /* sanity check */
30708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30709 ( NULL == pEventData->pEventData))
30710 {
30711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30712 "%s: Invalid parameters", __func__);
30713 WDI_ASSERT(0);
30714 return WDI_STATUS_E_FAILURE;
30715 }
30716
30717 /* extract response and send it to UMAC */
30718 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30719
30720 /* Fill in the indication parameters */
30721 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30722
Dino Mycled3d50022014-07-07 12:58:25 +053030723 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30724 = pLinkLayerStatsInd;
30725
30726 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30727
30728
30729 /* Need to fill in the MAC address */
30730 if ( WDI_STATUS_SUCCESS !=
30731 WDI_STATableGetStaMacAddr(pWDICtx,
30732 halLLStatsResults->iface_id,
30733 &macAddr))
30734 {
30735 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30736 " ifaceId: %u does not exist in the WDI Station Table",
30737 halLLStatsResults->iface_id);
30738
30739 return WDI_STATUS_E_FAILURE;
30740 }
30741 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30742 macAddr, WDI_MAC_ADDR_LEN);
30743
30744 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30745 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30746 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030747
30748 /* Notify UMAC */
30749 if (pWDICtx->wdiLowLevelIndCB)
30750 {
30751 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30752 }
30753 else
30754 {
30755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30756 "%s: WDILowLevelIndCb is null", __func__);
30757 WDI_ASSERT(0);
30758 return WDI_STATUS_E_FAILURE;
30759 }
30760
30761 return WDI_STATUS_SUCCESS;
30762} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30763#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30764
Rajeev79dbe4c2013-10-05 11:03:42 +053030765/**
30766 @brief WDI_ProcessSetBatchScanReq -
30767 Set batch scan request to FW
30768
30769 @param pWDICtx : wdi context
30770 pEventData : indication data
30771
30772 @see
30773 @return none
30774*/
30775WDI_Status WDI_ProcessSetBatchScanReq
30776(
30777 WDI_ControlBlockType* pWDICtx,
30778 WDI_EventInfoType* pEventData
30779)
30780{
30781 WDI_SetBatchScanReqType *pWdiReq;
30782 WDI_Status wdiStatus;
30783 wpt_uint8* pSendBuffer = NULL;
30784 wpt_uint16 usDataOffset = 0;
30785 wpt_uint16 usSendSize = 0;
30786 tHalBatchScanSetParams *pHalReq;
30787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30788
30789 /*sanity check*/
30790 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30791 {
30792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30793 "%s: Invalid parameters in set batch scan request", __func__);
30794 WDI_ASSERT(0);
30795 return WDI_STATUS_E_FAILURE;
30796 }
30797
30798
30799 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30800
30801
30802 /*get message buffer*/
30803 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30804 WDI_SET_BATCH_SCAN_REQ,
30805 sizeof(tHalBatchScanSetParams),
30806 &pSendBuffer, &usDataOffset, &usSendSize))||
30807 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30808 {
30809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30810 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30811 WDI_ASSERT(0);
30812 return WDI_STATUS_E_FAILURE;
30813 }
30814
30815 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30816
30817 pHalReq->rtt = pWdiReq->rtt;
30818 pHalReq->rfBand = pWdiReq->rfBand;
30819 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30820 pHalReq->scanInterval = pWdiReq->scanFrequency;
30821 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30822
30823 /*send set batch scan request to fw*/
30824 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30825 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30826
30827 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30828 usSendSize, pWDICtx->pfncRspCB,
30829 pWDICtx->pReqStatusUserData,
30830 WDI_SET_BATCH_SCAN_RESP);
30831
30832 return wdiStatus;
30833}
30834
30835/**
30836 @brief WDI_SetBatchScanReq
30837 This API is called to set batch scan request in FW
30838
30839 @param pBatchScanReqParam : pointer to set batch scan re param
30840 usrData : Client context
30841 setBatchScanRspCb : set batch scan resp callback
30842 @see
30843 @return SUCCESS or FAIL
30844*/
30845WDI_Status WDI_SetBatchScanReq
30846(
30847 void *pBatchScanReqParam,
30848 void *usrData,
30849 WDI_SetBatchScanCb setBatchScanRspCb
30850)
30851{
30852 WDI_EventInfoType wdiEventData;
30853
30854 /*sanity check*/
30855 if (eWLAN_PAL_FALSE == gWDIInitialized)
30856 {
30857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30858 "WDI API call before module is initialized - Fail request");
30859
30860 return WDI_STATUS_E_NOT_ALLOWED;
30861 }
30862
30863 /* fill in event data and post to the main FSM */
30864 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30865 wdiEventData.pEventData = pBatchScanReqParam;
30866 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30867 wdiEventData.pCBfnc = setBatchScanRspCb;
30868 wdiEventData.pUserData = usrData;
30869
30870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30871}
30872
30873/**
30874 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30875
30876 @param None
30877
30878 @see
30879
30880 @return Status of the request
30881*/
30882WDI_Status
30883WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30884{
30885 WDI_EventInfoType wdiEventData;
30886
30887 /*-------------------------------------------------------------------------
30888 Sanity Check
30889 ------------------------------------------------------------------------*/
30890 if (eWLAN_PAL_FALSE == gWDIInitialized)
30891 {
30892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30893 "WDI API call before module is initialized - Fail request!");
30894
30895 return WDI_STATUS_E_NOT_ALLOWED;
30896 }
30897
30898 /*-------------------------------------------------------------------------
30899 Fill in Event data and post to the Main FSM
30900 ------------------------------------------------------------------------*/
30901 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30902 wdiEventData.pEventData = pWdiReq;
30903 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30904 wdiEventData.pCBfnc = NULL;
30905 wdiEventData.pUserData = NULL;
30906
30907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30908}
30909
30910/**
30911 @brief WDI_TriggerBatchScanResultInd
30912 This API is called to pull batch scan result from FW
30913
30914 @param pWdiReq : pointer to get batch scan ind param
30915 @see
30916 @return SUCCESS or FAIL
30917*/
30918WDI_Status WDI_TriggerBatchScanResultInd
30919(
30920 WDI_TriggerBatchScanResultIndType *pWdiReq
30921)
30922{
30923 WDI_EventInfoType wdiEventData;
30924 /*-------------------------------------------------------------------------
30925 Sanity Check
30926 ------------------------------------------------------------------------*/
30927 if (eWLAN_PAL_FALSE == gWDIInitialized)
30928 {
30929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30930 "WDI API call before module is initialized - Fail request!");
30931
30932 return WDI_STATUS_E_NOT_ALLOWED;
30933 }
30934
30935 /*-------------------------------------------------------------------------
30936 Fill in Event data and post to the Main FSM
30937 ------------------------------------------------------------------------*/
30938 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30939 wdiEventData.pEventData = pWdiReq;
30940 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30941 wdiEventData.pCBfnc = NULL;
30942 wdiEventData.pUserData = NULL;
30943
30944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30945}
Rajeev79dbe4c2013-10-05 11:03:42 +053030946#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030947
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030948/**
30949 @brief Process Update Channel Rsp function (called when a response is
30950 being received over the bus from HAL)
30951
30952 @param pWDICtx: pointer to the WLAN DAL context
30953 pEventData: pointer to the event information structure
30954
30955 @see
30956 @return Result of the function call
30957*/
30958WDI_Status
30959WDI_ProcessUpdateChanRsp
30960(
30961 WDI_ControlBlockType* pWDICtx,
30962 WDI_EventInfoType* pEventData
30963)
30964{
30965 WDI_Status wdiStatus;
30966 eHalStatus halStatus;
30967 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30969
30970 /*-------------------------------------------------------------------------
30971 Sanity check
30972 -------------------------------------------------------------------------*/
30973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30974 ( NULL == pEventData->pEventData))
30975 {
30976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30977 "%s: Invalid parameters", __func__);
30978 WDI_ASSERT(0);
30979 return WDI_STATUS_E_FAILURE;
30980 }
30981
30982 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30983
30984 /*-------------------------------------------------------------------------
30985 Extract response and send it to UMAC
30986 -------------------------------------------------------------------------*/
30987 halStatus = *((eHalStatus*)pEventData->pEventData);
30988 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30989
30990 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30991
30992 return WDI_STATUS_SUCCESS;
30993}/*WDI_ProcessUpdateChanRsp*/
30994
Leo Chang0b0e45a2013-12-15 15:18:55 -080030995#ifdef FEATURE_WLAN_CH_AVOID
30996/**
30997 @brief v -WDI_ProcessChAvoidInd
30998
30999
31000 @param pWDICtx : wdi context
31001 pEventData : indication data
31002 @see
31003 @return Result of the function call
31004*/
31005WDI_Status
31006WDI_ProcessChAvoidInd
31007(
31008 WDI_ControlBlockType* pWDICtx,
31009 WDI_EventInfoType* pEventData
31010)
31011{
31012 WDI_LowLevelIndType wdiInd;
31013 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31014 wpt_uint16 rangeLoop;
31015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31016
31017 /*-------------------------------------------------------------------------
31018 Sanity check
31019 -------------------------------------------------------------------------*/
31020 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31021 (NULL == pEventData->pEventData))
31022 {
31023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31024 "%s: Invalid parameters", __func__);
31025 WDI_ASSERT(0);
31026 return WDI_STATUS_E_FAILURE;
31027 }
31028
31029 /*-------------------------------------------------------------------------
31030 Extract indication and send it to UMAC
31031 -------------------------------------------------------------------------*/
31032 wpalMemoryCopy(&chAvoidIndicationParam,
31033 pEventData->pEventData,
31034 sizeof(tHalAvoidFreqRangeIndParams));
31035
Abhishek Singhe34eb552015-06-18 10:12:15 +053031036 /* Avoid Over flow */
31037 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31038 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31039
Leo Chang0b0e45a2013-12-15 15:18:55 -080031040 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31041 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31042 chAvoidIndicationParam.avoidCnt;
31043 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31044 (void *)chAvoidIndicationParam.avoidRange,
31045 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31046 sizeof(WDI_ChAvoidFreqType));
31047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31048 "%s: band count %d", __func__,
31049 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31050 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31051 {
31052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31053 "%s: srart freq %d, end freq %d", __func__,
31054 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31055 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31056 }
31057
31058 /*Notify UMAC*/
31059 if (pWDICtx->wdiLowLevelIndCB)
31060 {
31061 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31062 }
31063
31064 return WDI_STATUS_SUCCESS;
31065}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031066
Leo Chang0b0e45a2013-12-15 15:18:55 -080031067#endif /* FEATURE_WLAN_CH_AVOID */
31068
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031069/**
31070 @brief Process OBSS Start scan result indication
31071
31072 @param pWDICtx: pointer to the WLAN DAL context
31073 pEventData: pointer to the event information structure
31074
31075 @see
31076 @return Result of the function call
31077*/
31078WDI_Status
31079WDI_ProcessHT40OBSSScanInd
31080(
31081 WDI_ControlBlockType* pWDICtx,
31082 WDI_EventInfoType* pEventData
31083)
31084{
31085 wpt_uint8* pSendBuffer = NULL;
31086 wpt_uint16 usDataOffset = 0;
31087 wpt_uint16 usSendSize = 0;
31088 wpt_uint16 usLen = 0;
31089 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31090 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31091 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31092 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31093
31094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31095
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031097 "%s", __func__);
31098
31099 /*-------------------------------------------------------------------------
31100 Sanity check
31101 -------------------------------------------------------------------------*/
31102 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31103 {
31104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31105 "%s: Invalid parameters", __func__);
31106 WDI_ASSERT(0);
31107 return WDI_STATUS_E_FAILURE;
31108 }
31109 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31110
31111 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31112 /*-----------------------------------------------------------------------
31113 Get message buffer
31114 -----------------------------------------------------------------------*/
31115
31116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31117 WDI_START_HT40_OBSS_SCAN_IND,
31118 sizeof(tHT40ObssScanIndType),
31119 &pSendBuffer, &usDataOffset, &usSendSize))||
31120 ( usSendSize < (usDataOffset + usLen )))
31121 {
31122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31123 "Unable to get send buffer in HT40 OBSS Start req %p ",
31124 pEventData);
31125 WDI_ASSERT(0);
31126 return WDI_STATUS_E_FAILURE;
31127 }
31128 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31129 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31130 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31131 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31132 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31133 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31134 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31135 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31136 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31137 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31138 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31139 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31140 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31141 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31142 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31143 pHT40ObssScanInd->OBSSScanActivityThreshold =
31144 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31145 pHT40ObssScanInd->selfStaIdx =
31146 pwdiHT40OBSSScanInd->selfStaIdx;
31147 pHT40ObssScanInd->bssIdx =
31148 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031149 pHT40ObssScanInd->currentOperatingClass =
31150 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031151 pHT40ObssScanInd->fortyMHZIntolerent =
31152 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31153 pHT40ObssScanInd->channelCount =
31154 pwdiHT40OBSSScanInd->channelCount;
31155
31156 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31157 WDI_ROAM_SCAN_MAX_CHANNELS);
31158 pHT40ObssScanInd->ieFieldLen =
31159 pwdiHT40OBSSScanInd->ieFieldLen;
31160
31161 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31162 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31163 pWDICtx->pReqStatusUserData = NULL;
31164 pWDICtx->pfncRspCB = NULL;
31165
31166 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31167 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31168
31169 /*-------------------------------------------------------------------------
31170 Send OBSS Start Indication to HAL
31171 -------------------------------------------------------------------------*/
31172 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31173 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31174
31175} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31176
31177
31178/**
31179 @brief wdi_HT40OBSSScanInd
31180 This API is called to start OBSS scan
31181
31182 @param pWdiReq : pointer to get ind param
31183 @see
31184 @return SUCCESS or FAIL
31185*/
31186WDI_Status WDI_HT40OBSSScanInd
31187(
31188 WDI_HT40ObssScanParamsType *pWdiReq
31189)
31190{
31191 WDI_EventInfoType wdiEventData;
31192
31193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31194 "%s", __func__);
31195 /*-------------------------------------------------------------------------
31196 Sanity Check
31197 ------------------------------------------------------------------------*/
31198 if (eWLAN_PAL_FALSE == gWDIInitialized)
31199 {
31200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31201 "WDI API call before module is initialized - Fail request!");
31202
31203 return WDI_STATUS_E_NOT_ALLOWED;
31204 }
31205
31206 /*-------------------------------------------------------------------------
31207 Fill in Event data and post to the Main FSM
31208 ------------------------------------------------------------------------*/
31209 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31210 wdiEventData.pEventData = pWdiReq;
31211 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31212 wdiEventData.pCBfnc = NULL;
31213 wdiEventData.pUserData = NULL;
31214
31215
31216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31217}
31218
31219/**
31220 @brief Process OBSS Stop scan result
31221
31222 @param pWDICtx: pointer to the WLAN DAL context
31223 pEventData: pointer to the event information structure
31224
31225 @see
31226 @return Result of the function call
31227*/
31228WDI_Status
31229WDI_ProcessHT40OBSSStopScanInd
31230(
31231 WDI_ControlBlockType* pWDICtx,
31232 WDI_EventInfoType* pEventData
31233)
31234{
31235 wpt_uint8* pSendBuffer = NULL;
31236 wpt_uint16 usDataOffset = 0;
31237 wpt_uint16 usSendSize = 0;
31238 wpt_uint16 usLen = 0;
31239 wpt_uint8 *wdiBssIdx = 0;
31240 tANI_U8 *bssIdx = 0;
31241 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31242
31243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31244
31245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31246 "%s", __func__);
31247
31248 /*-------------------------------------------------------------------------
31249 Sanity check
31250 -------------------------------------------------------------------------*/
31251 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31252 {
31253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31254 "%s: Invalid parameters", __func__);
31255 WDI_ASSERT(0);
31256 return WDI_STATUS_E_FAILURE;
31257 }
31258 bssIdx = (wpt_uint8*)pEventData->pEventData;
31259 /*-----------------------------------------------------------------------
31260 Get message buffer
31261 -----------------------------------------------------------------------*/
31262
31263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31264 WDI_STOP_HT40_OBSS_SCAN_IND,
31265 sizeof(tANI_U8),
31266 &pSendBuffer, &usDataOffset, &usSendSize))||
31267 ( usSendSize < (usDataOffset + usLen )))
31268 {
31269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31270 "Unable to get send buffer in HT40 OBSS Start req %p ",
31271 pEventData);
31272 WDI_ASSERT(0);
31273 return WDI_STATUS_E_FAILURE;
31274 }
31275
31276 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31277 bssIdx = wdiBssIdx;
31278
31279 pWDICtx->pReqStatusUserData = NULL;
31280 pWDICtx->pfncRspCB = NULL;
31281
31282 /*-------------------------------------------------------------------------
31283 Send DHCP Start Indication to HAL
31284 -------------------------------------------------------------------------*/
31285 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31286 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31287} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31288
31289/**
31290 @brief WDI_HT40OBSSStopScanInd
31291 This API is called to start OBSS scan
31292 @param pWdiReq : pointer to get ind param
31293 @see
31294 @return SUCCESS or FAIL
31295*/
31296WDI_Status WDI_HT40OBSSStopScanInd
31297(
31298 wpt_uint8 bssIdx
31299)
31300{
31301 WDI_EventInfoType wdiEventData;
31302
31303 /*-------------------------------------------------------------------------
31304 Sanity Check
31305 ------------------------------------------------------------------------*/
31306 if (eWLAN_PAL_FALSE == gWDIInitialized)
31307 {
31308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31309 "WDI API call before module is initialized - Fail request!");
31310
31311 return WDI_STATUS_E_NOT_ALLOWED;
31312 }
31313
31314 /*-------------------------------------------------------------------------
31315 Fill in Event data and post to the Main FSM
31316 ------------------------------------------------------------------------*/
31317 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31318 wdiEventData.pEventData = &bssIdx;
31319 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31320 wdiEventData.pCBfnc = NULL;
31321 wdiEventData.pUserData = NULL;
31322
31323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31324}
31325
c_hpothu86041002014-04-14 19:06:51 +053031326WDI_Status
31327WDI_printRegInfo
31328(
31329 WDI_ControlBlockType* pWDICtx,
31330 WDI_EventInfoType* pEventData
31331)
31332{
31333 tHalRegDebugInfo *pRegTable;
31334 tHalRegDebugInfoParams *pRegParams;
31335 uint32 cnt=0;
31336
31337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31338 "%s: ", __func__);
31339 /*-------------------------------------------------------------------------
31340 Sanity check
31341 -------------------------------------------------------------------------*/
31342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31343 ( NULL == pEventData->pEventData))
31344 {
31345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31346 "%s: Invalid parameters", __func__);
31347 WDI_ASSERT(0);
31348 return WDI_STATUS_E_FAILURE;
31349 }
31350
31351 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31352
31353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31354 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31355 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31356
31357 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31358
31359 if (pRegParams->regCount <= 0)
31360 {
31361 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31362 "%s incorrect parameters passed", __func__);
31363 return WDI_STATUS_E_FAILURE;
31364 }
31365
31366 while(pRegParams->regCount--)
31367 {
31368 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31369 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31370 cnt++;
31371 }
31372
31373 return WDI_STATUS_SUCCESS;
31374}
c_hpothu92367912014-05-01 15:18:17 +053031375
31376/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031377 * FUNCTION: WDI_delBaInd
31378 * send the delBA to peer.
31379 */
31380
31381WDI_Status
31382WDI_delBaInd
31383(
31384 WDI_ControlBlockType* pWDICtx,
31385 WDI_EventInfoType* pEventData
31386
31387)
31388{
31389 tHalWlanDelBaIndMsg halDelBaInd;
31390 WDI_LowLevelIndType wdiInd;
31391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31392
31393 /*-------------------------------------------------------------------------
31394 Sanity check
31395 -------------------------------------------------------------------------*/
31396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31397 ( NULL == pEventData->pEventData))
31398 {
31399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31400 "%s: Invalid parameters", __func__);
31401 WDI_ASSERT(0);
31402 return WDI_STATUS_E_FAILURE;
31403 }
31404
31405 /*-------------------------------------------------------------------------
31406 Extract indication and send it to UMAC
31407 -------------------------------------------------------------------------*/
31408
31409 /* Parameters need to be unpacked according to HAL struct*/
31410 wpalMemoryCopy( &halDelBaInd,
31411 pEventData->pEventData,
31412 sizeof(halDelBaInd));
31413
31414 /*Fill in the indication parameters*/
31415 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31416
31417 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31418 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31419 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31420
31421 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31422 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31423 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31424
31425 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31426 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31427 if ( pWDICtx->wdiLowLevelIndCB )
31428 {
31429 /*Notify UMAC*/
31430 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31431 }
31432
31433 return WDI_STATUS_SUCCESS;
31434
31435
31436}
31437
31438/*
c_hpothu92367912014-05-01 15:18:17 +053031439 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31440 * send the response to PE with beacon miss count
31441 * received from WDI.
31442 */
31443WDI_Status
31444WDI_ProcessGetBcnMissRateRsp
31445(
31446 WDI_ControlBlockType* pWDICtx,
31447 WDI_EventInfoType* pEventData
31448)
31449{
31450 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31451 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31452
31453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31454 "In %s",__func__);
31455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31456
31457 /*-------------------------------------------------------------------------
31458 Sanity check
31459 -------------------------------------------------------------------------*/
31460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31461 ( NULL == pEventData->pEventData))
31462 {
31463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31464 "%s: Invalid parameters", __func__);
31465 WDI_ASSERT(0);
31466 return WDI_STATUS_E_FAILURE;
31467 }
31468
31469 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31470 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31471
31472 /*Notify UMAC*/
31473 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31474 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31475 return WDI_STATUS_SUCCESS;
31476}
31477
31478/*
31479 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31480 * Request to WDI to get missed beacon rate.
31481 */
31482WDI_Status
31483WDI_ProcessGetBcnMissRateReq
31484(
31485 WDI_ControlBlockType* pWDICtx,
31486 WDI_EventInfoType* pEventData
31487)
31488{
31489 wpt_uint8* pSendBuffer = NULL;
31490 wpt_uint16 usDataOffset = 0;
31491 wpt_uint16 usSendSize = 0;
31492 wpt_uint8 ucCurrentBSSSesIdx = 0;
31493 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031494 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31495 tHalBcnMissRateReqParams halBcnMissRateReq;
31496
31497/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31498
31499 /*-------------------------------------------------------------------------
31500 Sanity check
31501 -------------------------------------------------------------------------*/
31502 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31503 ( NULL == pEventData->pCBfnc ) )
31504 {
31505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31506 "%s: Invalid parameters", __func__);
31507 WDI_ASSERT(0);
31508 return WDI_STATUS_E_FAILURE;
31509 }
31510
31511 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31512
31513 wpalMutexAcquire(&pWDICtx->wptMutex);
31514
31515 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31516 pEventData->pEventData, &pBSSSes);
31517 if ( NULL == pBSSSes )
31518 {
31519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31520 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031521 MAC_ADDRESS_STR, __func__,
31522 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031523 wpalMutexRelease(&pWDICtx->wptMutex);
31524 return WDI_STATUS_E_NOT_ALLOWED;
31525 }
31526 wpalMutexRelease(&pWDICtx->wptMutex);
31527
31528 /*-----------------------------------------------------------------------
31529 Get message buffer
31530 -----------------------------------------------------------------------*/
31531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31532 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31533 sizeof(tHalBcnMissRateReqParams),
31534 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31535 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31536 {
31537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31538 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31539 pEventData);
31540 WDI_ASSERT(0);
31541 return WDI_STATUS_E_FAILURE;
31542 }
31543
31544 pWDICtx->wdiReqStatusCB = NULL;
31545 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31546
31547 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31548
31549 wpalMemoryCopy( pSendBuffer+usDataOffset,
31550 &halBcnMissRateReq,
31551 sizeof(tHalBcnMissRateReqParams));
31552 /*-------------------------------------------------------------------------
31553 Send Get STA Request to HAL
31554 -------------------------------------------------------------------------*/
31555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31556 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31557}
31558
31559/**
31560 @brief WDI_GetBcnMissRate
31561
31562 @param pUserData: user data will be passed back with the
31563 callback
31564 WDI_GetBcnMissRateCb: callback for passing back the response
31565 of the get stats operation received from the device
31566 bssid: bssid, to send bssIdx to FW
31567
31568 @return SUCCESS or FAIL
31569*/
31570WDI_Status WDI_GetBcnMissRate( void *pUserData,
31571 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31572 tANI_U8 *bssid )
31573{
31574 WDI_EventInfoType wdiEventData;
31575
31576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31577
31578 /*------------------------------------------------------------------------
31579 Sanity Check
31580 ------------------------------------------------------------------------*/
31581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31582 {
31583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31584 "WDI API call before module is initialized - Fail request");
31585
31586 return WDI_STATUS_E_NOT_ALLOWED;
31587 }
31588
31589 /*------------------------------------------------------------------------
31590 Fill in Event data and post to the Main FSM
31591 ------------------------------------------------------------------------*/
31592 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31593 wdiEventData.pEventData = bssid;
31594 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31595 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31596 wdiEventData.pUserData = pUserData;
31597
31598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31599}
Abhishek Singh85b74712014-10-08 11:38:19 +053031600
31601/*
31602 * FUNCTION: WDI_ProcessGetFwStatsRsp
31603 * send the response with FW stats asked.
31604 */
31605WDI_Status
31606 WDI_ProcessGetFwStatsRsp
31607(
31608 WDI_ControlBlockType* pWDICtx,
31609 WDI_EventInfoType* pEventData
31610)
31611{
31612 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31613 tpHalfwStatsRspParams pHalFwstatsRsp;
31614 WDI_FWStatsResults fwStats;
31615
31616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31617
31618 /*-------------------------------------------------------------------------
31619 Sanity check
31620 -------------------------------------------------------------------------*/
31621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31622 ( NULL == pEventData->pEventData))
31623 {
31624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31625 "%s: Invalid parameters", __func__);
31626 WDI_ASSERT(0);
31627 return WDI_STATUS_E_FAILURE;
31628 }
31629 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31630 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31631
31632 if(pHalFwstatsRsp->length)
31633 {
31634 switch( pHalFwstatsRsp->type )
31635 {
31636 case FW_UBSP_STATS:
31637 {
31638 ubspFwStats *ubspStatsfromFw;
31639
31640 fwStats.type = pHalFwstatsRsp->type;
31641 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31642 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31643 ubspStatsfromFw->ubsp_enter_cnt;
31644 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31645 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31646 }
31647 break;
31648 default:
31649 {
31650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31651 "%s: No handling for stats type %d", __func__,
31652 pHalFwstatsRsp->type);
31653 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31654 NULL, pWDICtx->pRspCBUserData);
31655 return WDI_STATUS_E_FAILURE;
31656 }
31657 }
31658 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31659 }
31660 else
31661 {
31662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31663 "%s: Length = 0 for type %d return failure ", __func__,
31664 pHalFwstatsRsp->type);
31665 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31666 NULL, pWDICtx->pRspCBUserData);
31667 return WDI_STATUS_E_FAILURE;
31668 }
31669 return WDI_STATUS_SUCCESS;
31670}
31671
31672/*
31673 * FUNCTION: WDI_ProcessGetFwStatsReq
31674 * Request to WDI to get FW Stats.
31675 */
31676WDI_Status
31677 WDI_ProcessGetFwStatsReq
31678(
31679 WDI_ControlBlockType* pWDICtx,
31680 WDI_EventInfoType* pEventData
31681)
31682{
31683 wpt_uint8* pSendBuffer = NULL;
31684 wpt_uint16 usDataOffset = 0;
31685 wpt_uint16 usSendSize = 0;
31686 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31687 tHalfwStatsReqParams halFwStatsReq;
31688
31689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31690
31691 /*-------------------------------------------------------------------------
31692 Sanity check
31693 -------------------------------------------------------------------------*/
31694 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31695 ( NULL == pEventData->pCBfnc ) )
31696 {
31697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31698 "%s: Invalid parameters", __func__);
31699 WDI_ASSERT(0);
31700 return WDI_STATUS_E_FAILURE;
31701 }
31702
31703 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31704
31705 /*-----------------------------------------------------------------------
31706 Get message buffer
31707 -----------------------------------------------------------------------*/
31708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31709 pWDICtx, WDI_GET_FW_STATS_REQ,
31710 sizeof(tHalfwStatsReqParams),
31711 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31712 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31713 {
31714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31715 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31716 pEventData);
31717 WDI_ASSERT(0);
31718 return WDI_STATUS_E_FAILURE;
31719 }
31720
31721 pWDICtx->wdiReqStatusCB = NULL;
31722 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31723 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31724 wpalMemoryCopy( pSendBuffer+usDataOffset,
31725 &halFwStatsReq,
31726 sizeof(tHalfwStatsReqParams));
31727 /*-------------------------------------------------------------------------
31728 Send Get STA Request to HAL
31729 -------------------------------------------------------------------------*/
31730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31731 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31732}
31733
Sunil Duttbd736ed2014-05-26 21:19:41 +053031734#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31735
31736/**
31737 @brief WDI_LLStatsSetReq
31738 This API is called to set link layer stats request in FW
31739
31740 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31741 wdiLLStatsSetRspCb : set link layer stats resp callback
31742 usrData : Client context
31743 @see
31744 @return SUCCESS or FAIL
31745*/
31746WDI_Status
31747WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31748 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31749 void* pUserData)
31750{
31751 WDI_EventInfoType wdiEventData;
31752
31753 /*------------------------------------------------------------------------
31754 Sanity Check
31755 ------------------------------------------------------------------------*/
31756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31757 {
31758 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31759 "WDI API call before module is initialized - Fail request");
31760
31761 return WDI_STATUS_E_NOT_ALLOWED;
31762 }
31763
31764 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31765 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31766 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31767 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31768 wdiEventData.pUserData = pUserData;
31769
31770 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31771}
31772
31773/**
31774 @brief WDI_ProcessLLStatsSetReq -
31775 Set Link Layer Stats request to FW
31776
31777 @param pWDICtx : wdi context
31778 pEventData : indication data
31779
31780 @see
31781 @return none
31782*/
31783WDI_Status
31784WDI_ProcessLLStatsSetReq
31785(
31786 WDI_ControlBlockType* pWDICtx,
31787 WDI_EventInfoType* pEventData
31788)
31789{
31790 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31791 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31792 wpt_uint8* pSendBuffer = NULL;
31793 wpt_uint16 usSendSize = 0;
31794 wpt_uint16 usDataOffset = 0;
31795 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31796
31797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31798 ( NULL == pEventData->pCBfnc ))
31799 {
31800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31801 "%s: Invalid parameters", __func__);
31802 WDI_ASSERT(0);
31803 return WDI_STATUS_E_FAILURE;
31804 }
31805
31806 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31807 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31808
31809 /*-----------------------------------------------------------------------
31810 Get message buffer
31811 ! TO DO : proper conversion into the HAL Message Request Format
31812 -----------------------------------------------------------------------*/
31813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31814 pWDICtx,
31815 WDI_LL_STATS_SET_REQ,
31816 sizeof(tHalMacLlSetStatsReqParams),
31817 &pSendBuffer, &usDataOffset,
31818 &usSendSize))||
31819 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31820 {
31821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31822 "Unable to get send buffer in %s %p %p %p", __func__,
31823 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31824 WDI_ASSERT(0);
31825 return WDI_STATUS_E_FAILURE;
31826 }
31827
31828
Dino Mycled3d50022014-07-07 12:58:25 +053031829 /* Need to fill in the self STA Index */
31830 if ( WDI_STATUS_SUCCESS !=
31831 WDI_STATableFindStaidByAddr(pWDICtx,
31832 pwdiLLStatsSetReqParams->macAddr,
31833 &halLLStatsSetParams.sta_id))
31834 {
31835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31836 MAC_ADDRESS_STR
31837 ": This station does not exist in the WDI Station Table",
31838 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31839
31840 wpalMemoryFree(pSendBuffer);
31841 return WDI_STATUS_E_FAILURE;
31842 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031843
31844 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031845 halLLStatsSetParams.mpdu_size_threshold =
31846 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31847 halLLStatsSetParams.aggressive_statistics_gathering =
31848 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31849
31850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31851 " halLLStatsSetParams.req_id = %u",
31852 halLLStatsSetParams.req_id);
31853 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31854 " halLLStatsSetParams.sta_id = %u",
31855 halLLStatsSetParams.sta_id);
31856 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31857 " halLLStatsSetParams.mpdu_size_threshold = %u",
31858 halLLStatsSetParams.mpdu_size_threshold);
31859 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31860 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31861 halLLStatsSetParams.aggressive_statistics_gathering);
31862
31863 wpalMemoryCopy(pSendBuffer+usDataOffset,
31864 &halLLStatsSetParams,
31865 sizeof(halLLStatsSetParams));
31866
31867 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31868
31869 /*-------------------------------------------------------------------------
31870 Send Clear Link Layer Stats Request to HAL
31871 -------------------------------------------------------------------------*/
31872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31873 wdiLLStatsSetCb, pEventData->pUserData,
31874 WDI_LL_STATS_SET_RSP);
31875}
31876
31877/**
31878 @brief WDI_LLStatsGetReq
31879 This API is called to get link layer stats request in FW
31880
31881 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31882 wdiLLStatsGetRspCb : get link layer stats resp callback
31883 usrData : Client context
31884 @see
31885 @return SUCCESS or FAIL
31886*/
31887WDI_Status
31888WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31889 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31890 void* pUserData)
31891{
31892 WDI_EventInfoType wdiEventData;
31893
31894 /*------------------------------------------------------------------------
31895 Sanity Check
31896 ------------------------------------------------------------------------*/
31897 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31898 {
31899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31900 "WDI API call before module is initialized - Fail request");
31901
31902 return WDI_STATUS_E_NOT_ALLOWED;
31903 }
31904
31905 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31906 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31907 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31908 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31909 wdiEventData.pUserData = pUserData;
31910
31911 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31912}
31913
31914/**
31915 @brief WDI_ProcessLLStatsGetReq -
31916 Get Link Layer Stats request to FW
31917
31918 @param pWDICtx : wdi context
31919 pEventData : indication data
31920
31921 @see
31922 @return none
31923*/
31924WDI_Status
31925WDI_ProcessLLStatsGetReq
31926(
31927 WDI_ControlBlockType* pWDICtx,
31928 WDI_EventInfoType* pEventData
31929)
31930{
31931 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31932 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31933 wpt_uint8* pSendBuffer = NULL;
31934 wpt_uint16 usSendSize = 0;
31935 wpt_uint16 usDataOffset = 0;
31936 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31937
31938 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31939 ( NULL == pEventData->pCBfnc ))
31940 {
31941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31942 "%s: Invalid parameters", __func__);
31943 WDI_ASSERT(0);
31944 return WDI_STATUS_E_FAILURE;
31945 }
31946
31947 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31948 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31949
31950 /*-----------------------------------------------------------------------
31951 Get message buffer
31952 ! TO DO : proper conversion into the HAL Message Request Format
31953 -----------------------------------------------------------------------*/
31954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31955 pWDICtx,
31956 WDI_LL_STATS_GET_REQ,
31957 sizeof(tHalMacLlGetStatsReqParams),
31958 &pSendBuffer, &usDataOffset,
31959 &usSendSize))||
31960 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31961 {
31962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31963 "Unable to get send buffer in %s %p %p %p", __func__,
31964 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31965 WDI_ASSERT(0);
31966 return WDI_STATUS_E_FAILURE;
31967 }
Dino Mycled3d50022014-07-07 12:58:25 +053031968 /* Need to fill in the self STA Index */
31969 if ( WDI_STATUS_SUCCESS !=
31970 WDI_STATableFindStaidByAddr(pWDICtx,
31971 pwdiLLStatsGetReqParams->macAddr,
31972 &halLLStatsGetParams.sta_id))
31973 {
31974 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31975 MAC_ADDRESS_STR
31976 ": This station does not exist in the WDI Station Table",
31977 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31978
31979 wpalMemoryFree(pSendBuffer);
31980 return WDI_STATUS_E_FAILURE;
31981 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031982
31983 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031984 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31985
31986 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31987 " halLLStatsGetParams.req_id = %u",
31988 halLLStatsGetParams.req_id);
31989 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31990 " halLLStatsGetParams.staId = %u",
31991 halLLStatsGetParams.sta_id);
31992 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31993 " halLLStatsGetParams.Mask = %u",
31994 halLLStatsGetParams.param_id_mask);
31995
31996 wpalMemoryCopy(pSendBuffer+usDataOffset,
31997 &halLLStatsGetParams,
31998 sizeof(halLLStatsGetParams));
31999
32000 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32001
32002 /*-------------------------------------------------------------------------
32003 Send Clear Link Layer Stats Request to HAL
32004 -------------------------------------------------------------------------*/
32005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32006 wdiLLStatsGetCb, pEventData->pUserData,
32007 WDI_LL_STATS_GET_RSP);
32008}
32009
32010/**
32011 @brief WDI_LLStatsClearReq
32012 This API is called to clear link layer stats request in FW
32013
32014 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32015 wdiLLStatsSetRspCb : clear link layer stats resp callback
32016 usrData : Client context
32017 @see
32018 @return SUCCESS or FAIL
32019*/
32020WDI_Status
32021WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32022 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32023 void* pUserData)
32024{
32025 WDI_EventInfoType wdiEventData;
32026
32027 /*------------------------------------------------------------------------
32028 Sanity Check
32029 ------------------------------------------------------------------------*/
32030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32031 {
32032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32033 "WDI API call before module is initialized - Fail request");
32034
32035 return WDI_STATUS_E_NOT_ALLOWED;
32036 }
32037
32038 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32039 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32040 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32041 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32042 wdiEventData.pUserData = pUserData;
32043
32044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32045 "%s:%d Enter", __func__, __LINE__);
32046
32047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32048}
32049
32050/**
32051 @brief WDI_ProcessLLStatsClearReq -
32052 Clear Link Layer Stats request to FW
32053
32054 @param pWDICtx : wdi context
32055 pEventData : indication data
32056
32057 @see
32058 @return none
32059*/
32060WDI_Status
32061WDI_ProcessLLStatsClearReq
32062(
32063 WDI_ControlBlockType* pWDICtx,
32064 WDI_EventInfoType* pEventData
32065)
32066{
32067 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32068 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32069 wpt_uint8* pSendBuffer = NULL;
32070 wpt_uint16 usSendSize = 0;
32071 wpt_uint16 usDataOffset = 0;
32072 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32073
32074 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32075 ( NULL == pEventData->pCBfnc ))
32076 {
32077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32078 "%s: Invalid parameters", __func__);
32079 WDI_ASSERT(0);
32080 return WDI_STATUS_E_FAILURE;
32081 }
32082
32083 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32084 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32085
32086 /*-----------------------------------------------------------------------
32087 Get message buffer
32088 ! TO DO : proper conversion into the HAL Message Request Format
32089 -----------------------------------------------------------------------*/
32090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32091 pWDICtx,
32092 WDI_LL_STATS_CLEAR_REQ,
32093 sizeof(tHalMacLlClearStatsReqParams),
32094 &pSendBuffer, &usDataOffset,
32095 &usSendSize))||
32096 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32097 {
32098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32099 "Unable to get send buffer in %s %p %p %p", __func__,
32100 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32101 WDI_ASSERT(0);
32102 return WDI_STATUS_E_FAILURE;
32103 }
Dino Mycled3d50022014-07-07 12:58:25 +053032104 /* Need to fill in the self STA Index */
32105 if ( WDI_STATUS_SUCCESS !=
32106 WDI_STATableFindStaidByAddr(pWDICtx,
32107 pwdiLLStatsClearReqParams->macAddr,
32108 &halLLStatsClearParams.sta_id))
32109 {
32110 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32111 MAC_ADDRESS_STR
32112 ": This station does not exist in the WDI Station Table",
32113 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32114
32115 wpalMemoryFree(pSendBuffer);
32116 return WDI_STATUS_E_FAILURE;
32117 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032118
32119 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032120 halLLStatsClearParams.stats_clear_req_mask =
32121 pwdiLLStatsClearReqParams->statsClearReqMask;
32122 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32123
32124 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32125 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32126 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32127 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32128 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32129 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32130 halLLStatsClearParams.stats_clear_req_mask);
32131 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32132 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32133
32134 wpalMemoryCopy(pSendBuffer+usDataOffset,
32135 &halLLStatsClearParams,
32136 sizeof(halLLStatsClearParams));
32137
32138 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32139
32140 /*-------------------------------------------------------------------------
32141 Send Clear Link Layer Stats Request to HAL
32142 -------------------------------------------------------------------------*/
32143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32144 wdiLLStatsClearCb, pEventData->pUserData,
32145 WDI_LL_STATS_CLEAR_RSP);
32146}
32147#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032148
Abhishek Singh85b74712014-10-08 11:38:19 +053032149WDI_Status WDI_FWStatsGetReq( void* pUserData,
32150 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32151 wpt_uint32 stats)
32152{
32153 WDI_EventInfoType wdiEventData;
32154
32155 /*------------------------------------------------------------------------
32156 Sanity Check
32157 ------------------------------------------------------------------------*/
32158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32159 {
32160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32161 "WDI API call before module is initialized - Fail request");
32162 return WDI_STATUS_E_NOT_ALLOWED;
32163 }
32164 /*------------------------------------------------------------------------
32165 Fill in Event data and post to the Main FSM
32166 ------------------------------------------------------------------------*/
32167 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32168 wdiEventData.pEventData = (void *)&stats;
32169 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32170 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32171 wdiEventData.pUserData = pUserData;
32172
32173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32174
32175}
32176
Katya Nigamf0511f62015-05-05 16:40:57 +053032177WDI_Status
32178WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32179 WDI_MonStartRspCb wdiMonStartRspCb,
32180 void* pUserData)
32181{
32182 WDI_EventInfoType wdiEventData;
32183
32184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32185 "%s", __func__);
32186
32187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32188 {
32189 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32190 "WDI API call before module is initialized - Fail request");
32191
32192 return WDI_STATUS_E_NOT_ALLOWED;
32193 }
32194
32195 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32196 wdiEventData.pEventData = pwdiMonStartReqParams;
32197 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32198 wdiEventData.pCBfnc = wdiMonStartRspCb;
32199 wdiEventData.pUserData = pUserData;
32200
32201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32202}
32203
32204WDI_Status
32205WDI_ProcessMonStartReq
32206(
32207 WDI_ControlBlockType* pWDICtx,
32208 WDI_EventInfoType* pEventData
32209)
32210{
32211 WDI_MonStartReqType* pwdiMonStartReqParams;
32212 WDI_MonStartRspCb wdiMonStartCb;
32213 wpt_uint8* pSendBuffer = NULL;
32214 wpt_uint16 usSendSize = 0;
32215 wpt_uint16 usDataOffset = 0;
32216 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32217
32218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32219 "%s", __func__);
32220
32221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32222 ( NULL == pEventData->pCBfnc ))
32223 {
32224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32225 "%s: Invalid parameters", __func__);
32226 WDI_ASSERT(0);
32227 return WDI_STATUS_E_FAILURE;
32228 }
32229
32230 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32231 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32232
32233 /*-----------------------------------------------------------------------
32234 Get message buffer
32235 ! TO DO : proper conversion into the HAL Message Request Format
32236 -----------------------------------------------------------------------*/
32237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32238 pWDICtx,
32239 WDI_MON_START_REQ,
32240 sizeof(tHalEnableMonitorModeReqParams),
32241 &pSendBuffer, &usDataOffset,
32242 &usSendSize))||
32243 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32244 {
32245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32246 "Unable to get send buffer in %s %p %p %p", __func__,
32247 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32248 WDI_ASSERT(0);
32249 return WDI_STATUS_E_FAILURE;
32250 }
32251
32252 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32253 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32254 pwdiMonStartReqParams->ChannelBW);
32255 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32256 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32257 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32258 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32259 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32260 pwdiMonStartReqParams->mmFilters[0].macAddr,
32261 sizeof( wpt_macAddr ));
32262 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32263 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32264 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32265 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32266
32267 wpalMemoryCopy(pSendBuffer+usDataOffset,
32268 &halEnableMonitorModeParams,
32269 sizeof(halEnableMonitorModeParams));
32270
32271 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32272
32273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32274 wdiMonStartCb, pEventData->pUserData,
32275 WDI_MON_START_RSP);
32276}
32277
32278WDI_Status
32279WDI_ProcessMonStartRsp
32280(
32281 WDI_ControlBlockType* pWDICtx,
32282 WDI_EventInfoType* pEventData
32283)
32284{
32285 WDI_MonStartRspCb wdiMonStartRspCb;
32286
32287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32288 "%s: Enter ", __func__);
32289 /*-------------------------------------------------------------------------
32290 Sanity check
32291 -------------------------------------------------------------------------*/
32292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32293 ( NULL == pEventData->pEventData))
32294 {
32295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32296 "%s: Invalid parameters", __func__);
32297 WDI_ASSERT(0);
32298 return WDI_STATUS_E_FAILURE;
32299 }
32300
32301 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32302
32303 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32304
32305 return WDI_STATUS_SUCCESS;
32306}
32307
32308WDI_Status
32309WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32310 void* pUserData)
32311{
32312 WDI_EventInfoType wdiEventData;
32313
32314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32315 "%s", __func__);
32316
32317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32318 {
32319 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32320 "WDI API call before module is initialized - Fail request");
32321
32322 return WDI_STATUS_E_NOT_ALLOWED;
32323 }
32324
32325 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32326 wdiEventData.pEventData = NULL;
32327 wdiEventData.uEventDataSize = sizeof(NULL);
32328 wdiEventData.pCBfnc = wdiMonStopRspCb;
32329 wdiEventData.pUserData = pUserData;
32330
32331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32332}
32333
32334WDI_Status
32335WDI_ProcessMonStopReq
32336(
32337 WDI_ControlBlockType* pWDICtx,
32338 WDI_EventInfoType* pEventData
32339)
32340{
32341 WDI_MonStopRspCb wdiMonStopCb;
32342 wpt_uint8* pSendBuffer = NULL;
32343 wpt_uint16 usSendSize = 0;
32344 wpt_uint16 usDataOffset = 0;
32345 wpt_uint8 resetConfiguration;
32346
32347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32348 "%s", __func__);
32349
32350 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32351 {
32352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32353 "%s: Invalid parameters", __func__);
32354 WDI_ASSERT(0);
32355 return WDI_STATUS_E_FAILURE;
32356 }
32357
32358 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32359
32360 /*-----------------------------------------------------------------------
32361 Get message buffer
32362 ! TO DO : proper conversion into the HAL Message Request Format
32363 -----------------------------------------------------------------------*/
32364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32365 pWDICtx,
32366 WDI_MON_STOP_REQ,
32367 sizeof(wpt_uint8),
32368 &pSendBuffer, &usDataOffset,
32369 &usSendSize))||
32370 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32371 {
32372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32373 "Unable to get send buffer in %s %p %p", __func__,
32374 pEventData, wdiMonStopCb);
32375 WDI_ASSERT(0);
32376 return WDI_STATUS_E_FAILURE;
32377 }
32378
32379 wpalMemoryCopy(pSendBuffer+usDataOffset,
32380 &resetConfiguration,
32381 sizeof(wpt_uint8));
32382
32383 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32384
32385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32386 wdiMonStopCb, pEventData->pUserData,
32387 WDI_MON_STOP_RSP);
32388}
32389
32390WDI_Status
32391WDI_ProcessMonStopRsp
32392(
32393 WDI_ControlBlockType* pWDICtx,
32394 WDI_EventInfoType* pEventData
32395)
32396{
32397 WDI_MonStopRspCb wdiMonStopRspCb;
32398
32399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32400 "%s: Enter ", __func__);
32401 /*-------------------------------------------------------------------------
32402 Sanity check
32403 -------------------------------------------------------------------------*/
32404 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32405 {
32406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32407 "%s: Invalid parameters", __func__);
32408 WDI_ASSERT(0);
32409 return WDI_STATUS_E_FAILURE;
32410 }
32411
32412 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32413
32414 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32415
32416 return WDI_STATUS_SUCCESS;
32417}
32418
Dino Mycle41bdc942014-06-10 11:30:24 +053032419#ifdef WLAN_FEATURE_EXTSCAN
32420
32421/**
32422 @brief Process EXTSCAN BUffer full indication from FW
32423
32424 @param pWDICtx: pointer to the WLAN DAL context
32425 pEventData: pointer to the event information structure
32426
32427 @see
32428 @return Result of the function call
32429*/
32430WDI_Status
32431WDI_ProcessEXTScanProgressInd
32432(
32433 WDI_ControlBlockType* pWDICtx,
32434 WDI_EventInfoType* pEventData
32435)
32436{
32437 WDI_LowLevelIndType wdiInd;
32438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32439
32440 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32441 "%s: ", __func__);
32442
32443 /* sanity check */
32444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32445 ( NULL == pEventData->pEventData))
32446 {
32447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32448 "%s: Invalid parameters", __func__);
32449 WDI_ASSERT(0);
32450 return WDI_STATUS_E_FAILURE;
32451 }
32452
32453 /* Fill in the indication parameters */
32454 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32455
32456 /* extract response and send it to UMAC */
32457 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32458
32459 /* Notify UMAC */
32460 if (pWDICtx->wdiLowLevelIndCB)
32461 {
32462 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32463 }
32464 else
32465 {
Dino Mycled3d50022014-07-07 12:58:25 +053032466 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032467 "%s: WDILowLevelIndCb is null", __func__);
32468 WDI_ASSERT(0);
32469 return WDI_STATUS_E_FAILURE;
32470 }
32471 return WDI_STATUS_SUCCESS;
32472
32473} /* End of WDI_ProcessEXTScanProgressInd */
32474
32475
32476/**
32477 @brief Process EXTScan Scan Available indication from FW
32478
32479 @param pWDICtx: pointer to the WLAN DAL context
32480 pEventData: pointer to the event information structure
32481
32482 @see
32483 @return Result of the function call
32484*/
32485WDI_Status
32486WDI_ProcessEXTScanScanAvailableInd
32487(
32488 WDI_ControlBlockType* pWDICtx,
32489 WDI_EventInfoType* pEventData
32490)
32491{
32492 WDI_LowLevelIndType wdiInd;
32493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32494
32495 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32496 "%s: ", __func__);
32497
32498 /* sanity check */
32499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32500 ( NULL == pEventData->pEventData))
32501 {
32502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32503 "%s: Invalid parameters", __func__);
32504 WDI_ASSERT(0);
32505 return WDI_STATUS_E_FAILURE;
32506 }
32507
32508
32509
32510 /* Fill in the indication parameters */
32511 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32512
32513 /* extract response and send it to UMAC */
32514 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32515
32516 /* Notify UMAC */
32517 if (pWDICtx->wdiLowLevelIndCB)
32518 {
32519 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32520 }
32521 else
32522 {
32523 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32524 "%s: WDILowLevelIndCb is null", __func__);
32525 WDI_ASSERT(0);
32526 return WDI_STATUS_E_FAILURE;
32527 }
32528 return WDI_STATUS_SUCCESS;
32529} /* End of WDI_ProcessEXTScanScanDoneInd */
32530
32531/**
32532 @brief Process EXTScan Result Indication indication from FW
32533
32534 @param pWDICtx: pointer to the WLAN DAL context
32535 pEventData: pointer to the event information structure
32536
32537 @see
32538 @return Result of the function call
32539*/
32540WDI_Status
32541WDI_ProcessEXTScanResultInd
32542(
32543 WDI_ControlBlockType* pWDICtx,
32544 WDI_EventInfoType* pEventData
32545)
32546{
32547 WDI_LowLevelIndType wdiInd;
32548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32549
32550 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32551 "%s: ", __func__);
32552
32553 /* sanity check */
32554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32555 ( NULL == pEventData->pEventData))
32556 {
32557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32558 "%s: Invalid parameters", __func__);
32559 WDI_ASSERT(0);
32560 return WDI_STATUS_E_FAILURE;
32561 }
32562
32563 /* Fill in the indication parameters */
32564 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32565
32566 /* extract response and send it to UMAC */
32567 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32568
32569 /* Notify UMAC */
32570 if (pWDICtx->wdiLowLevelIndCB)
32571 {
32572 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32573 }
32574 else
32575 {
32576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32577 "%s: WDILowLevelIndCb is null", __func__);
32578 WDI_ASSERT(0);
32579 return WDI_STATUS_E_FAILURE;
32580 }
32581 return WDI_STATUS_SUCCESS;
32582} /* End of WDI_ProcessEXTScanResultInd */
32583
32584/**
32585 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32586
32587 @param pWDICtx: pointer to the WLAN DAL context
32588 pEventData: pointer to the event information structure
32589
32590 @see
32591 @return Result of the function call
32592*/
32593WDI_Status
32594WDI_ProcessEXTScanBssidHotListResultInd
32595(
32596 WDI_ControlBlockType* pWDICtx,
32597 WDI_EventInfoType* pEventData
32598)
32599{
32600 WDI_LowLevelIndType wdiInd;
32601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32602
32603 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32604 "%s: ", __func__);
32605
32606 /* sanity check */
32607 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32608 ( NULL == pEventData->pEventData))
32609 {
32610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32611 "%s: Invalid parameters", __func__);
32612 WDI_ASSERT(0);
32613 return WDI_STATUS_E_FAILURE;
32614 }
32615
32616 /* Fill in the indication parameters */
32617 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32618
32619 /* extract response and send it to UMAC */
32620 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32621
32622 /* Notify UMAC */
32623 if (pWDICtx->wdiLowLevelIndCB)
32624 {
32625 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32626 }
32627 else
32628 {
32629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32630 "%s: WDILowLevelIndCb is null", __func__);
32631 WDI_ASSERT(0);
32632 return WDI_STATUS_E_FAILURE;
32633 }
32634 return WDI_STATUS_SUCCESS;
32635} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32636
32637/**
32638 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32639
32640 @param pWDICtx: pointer to the WLAN DAL context
32641 pEventData: pointer to the event information structure
32642
32643 @see
32644 @return Result of the function call
32645*/
32646WDI_Status
32647WDI_ProcessEXTScanSignfRssiResultInd
32648(
32649 WDI_ControlBlockType* pWDICtx,
32650 WDI_EventInfoType* pEventData
32651)
32652{
32653 WDI_LowLevelIndType wdiInd;
32654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32655
32656 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32657 "%s: ", __func__);
32658
32659 /* sanity check */
32660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32661 ( NULL == pEventData->pEventData))
32662 {
32663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32664 "%s: Invalid parameters", __func__);
32665 WDI_ASSERT(0);
32666 return WDI_STATUS_E_FAILURE;
32667 }
32668
32669 /* Fill in the indication parameters */
32670 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32671
32672 /* extract response and send it to UMAC */
32673 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32674
32675 /* Notify UMAC */
32676 if (pWDICtx->wdiLowLevelIndCB)
32677 {
32678 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32679 }
32680 else
32681 {
32682 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32683 "%s: WDILowLevelIndCb is null", __func__);
32684 WDI_ASSERT(0);
32685 return WDI_STATUS_E_FAILURE;
32686 }
32687 return WDI_STATUS_SUCCESS;
32688} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32689
32690/**
32691 @brief WDI_EXTScanGetCapabilitiesReq
32692
32693 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32694 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32695 of the Req operation received from the device
32696 pUserData: user data will be passed back with the callback
32697
32698 @return SUCCESS or FAIL
32699*/
32700WDI_Status
32701WDI_EXTScanGetCapabilitiesReq(
32702 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32703 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32704 void* pUserData)
32705{
32706 WDI_EventInfoType wdiEventData;
32707
32708 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32709 "%s: %d ",__func__, __LINE__);
32710 /*------------------------------------------------------------------------
32711 Sanity Check
32712 ------------------------------------------------------------------------*/
32713 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32714 {
32715 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32716 "WDI API call before module is initialized - Fail request");
32717
32718 return WDI_STATUS_E_NOT_ALLOWED;
32719 }
32720
32721 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32722 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32723 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32724 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32725 wdiEventData.pUserData = pUserData;
32726
32727 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32728}
32729
32730/**
32731 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32732 Extended Scan Get Capability request to FW
32733
32734 @param pWDICtx : wdi context
32735 pEventData : indication data
32736
32737 @see
32738 @return none
32739*/
32740WDI_Status
32741WDI_ProcessEXTScanGetCapabilitiesReq
32742(
32743 WDI_ControlBlockType* pWDICtx,
32744 WDI_EventInfoType* pEventData
32745)
32746{
32747 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32748 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32749 wpt_uint8* pSendBuffer = NULL;
32750 wpt_uint16 usSendSize = 0;
32751 wpt_uint16 usDataOffset = 0;
32752 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32753
32754 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32755 "%s: %d Enter",__func__, __LINE__);
32756
32757 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32758 ( NULL == pEventData->pCBfnc ))
32759 {
32760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32761 "%s: Invalid parameters", __func__);
32762 WDI_ASSERT(0);
32763 return WDI_STATUS_E_FAILURE;
32764 }
32765
32766 pwdiEXTScanGetCapabilitiesReqParams =
32767 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32768 wdiEXTScanGetCapabilitiesRspCb =
32769 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32770
32771 /*-----------------------------------------------------------------------
32772 Get message buffer
32773 ! TO DO : proper conversion into the HAL Message Request Format
32774 -----------------------------------------------------------------------*/
32775 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32776 pWDICtx,
32777 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32778 sizeof(halEXTScanGetCapReqParams),
32779 &pSendBuffer, &usDataOffset,
32780 &usSendSize))||
32781 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32782 {
32783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32784 "Unable to get send buffer in %s %p %p %p", __func__,
32785 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32786 wdiEXTScanGetCapabilitiesRspCb);
32787 WDI_ASSERT(0);
32788 return WDI_STATUS_E_FAILURE;
32789 }
32790
32791 halEXTScanGetCapReqParams.requestId =
32792 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32793 halEXTScanGetCapReqParams.sessionId =
32794 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32795
32796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32797 " requestId %u "
32798 " sessionId %u ",
32799 halEXTScanGetCapReqParams.requestId,
32800 halEXTScanGetCapReqParams.sessionId);
32801
32802 wpalMemoryCopy(pSendBuffer+usDataOffset,
32803 &halEXTScanGetCapReqParams,
32804 sizeof(halEXTScanGetCapReqParams));
32805
32806 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32807
32808
32809 /*-------------------------------------------------------------------------
32810 Send EXTScan Stop Request to HAL
32811 -------------------------------------------------------------------------*/
32812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32813 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32814 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32815}
32816
32817/**
32818 @brief WDI_EXTScanGetCachedResultsReq
32819
32820 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32821 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32822 of the Req operation received from the device
32823 pUserData: user data will be passed back with the callback
32824
32825 @return SUCCESS or FAIL
32826*/
32827
32828WDI_Status
32829WDI_EXTScanGetCachedResultsReq(
32830 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32831 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32832 void* pUserData)
32833{
32834 WDI_EventInfoType wdiEventData;
32835
32836 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32837 "%s: %d Enter",__func__, __LINE__);
32838 /*------------------------------------------------------------------------
32839 Sanity Check
32840 ------------------------------------------------------------------------*/
32841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32842 {
32843 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32844 "WDI API call before module is initialized - Fail request");
32845
32846 return WDI_STATUS_E_NOT_ALLOWED;
32847 }
32848
32849 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32850 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32851 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32852 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32853 wdiEventData.pUserData = pUserData;
32854
32855 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32856}
32857
32858/**
32859 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32860 Extended Scan Get Cached Result request to FW
32861
32862 @param pWDICtx : wdi context
32863 pEventData : indication data
32864
32865 @see
32866 @return none
32867*/
32868WDI_Status
32869WDI_ProcessEXTScanGetCachedResultsReq
32870(
32871 WDI_ControlBlockType* pWDICtx,
32872 WDI_EventInfoType* pEventData
32873)
32874{
32875 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32876 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32877 wpt_uint8* pSendBuffer = NULL;
32878 wpt_uint16 usSendSize = 0;
32879 wpt_uint16 usDataOffset = 0;
32880 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32881
32882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32883 "%s: %d Enter",__func__, __LINE__);
32884
32885 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32886 ( NULL == pEventData->pCBfnc ))
32887 {
32888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32889 "%s: Invalid parameters", __func__);
32890 WDI_ASSERT(0);
32891 return WDI_STATUS_E_FAILURE;
32892 }
32893
32894 pwdiEXTScanGetCachedResultsReqParams =
32895 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32896 wdiEXTScanGetCachedResultsCb =
32897 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32898
32899 /*-----------------------------------------------------------------------
32900 Get message buffer
32901 ! TO DO : proper conversion into the HAL Message Request Format
32902 -----------------------------------------------------------------------*/
32903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32904 pWDICtx,
32905 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32906 sizeof(tHalExtScanGetScanReq),
32907 &pSendBuffer, &usDataOffset,
32908 &usSendSize))||
32909 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32910 {
32911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32912 "Unable to get send buffer in %s %p %p %p", __func__,
32913 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32914 wdiEXTScanGetCachedResultsCb);
32915 WDI_ASSERT(0);
32916 return WDI_STATUS_E_FAILURE;
32917 }
32918
32919 halEXTScanGetScanReqParams.requestId =
32920 pwdiEXTScanGetCachedResultsReqParams->requestId;
32921 halEXTScanGetScanReqParams.sessionId =
32922 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32923 halEXTScanGetScanReqParams.flush =
32924 pwdiEXTScanGetCachedResultsReqParams->flush;
32925
32926 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32927 " requestId %u "
32928 " sessionId %u "
32929 " flush %u ",
32930 halEXTScanGetScanReqParams.requestId,
32931 halEXTScanGetScanReqParams.sessionId,
32932 halEXTScanGetScanReqParams.flush);
32933
32934 wpalMemoryCopy(pSendBuffer+usDataOffset,
32935 &halEXTScanGetScanReqParams,
32936 sizeof(halEXTScanGetScanReqParams));
32937
32938 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32939
32940
32941 /*-------------------------------------------------------------------------
32942 Send EXTScan Stop Request to HAL
32943 -------------------------------------------------------------------------*/
32944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32945 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32946 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32947}
32948
32949/**
32950 @brief WDI_EXTScanStopReq
32951
32952 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32953 WDI_EXTScanStopRspCb: callback for passing back the response
32954 of the Req operation received from the device
32955 pUserData: user data will be passed back with the callback
32956
32957 @return SUCCESS or FAIL
32958*/
32959WDI_Status
32960WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32961 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32962 void* pUserData)
32963{
32964 WDI_EventInfoType wdiEventData;
32965
32966 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32967 "%s: %d ",__func__, __LINE__);
32968 /*------------------------------------------------------------------------
32969 Sanity Check
32970 ------------------------------------------------------------------------*/
32971 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32972 {
32973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32974 "WDI API call before module is initialized - Fail request");
32975
32976 return WDI_STATUS_E_NOT_ALLOWED;
32977 }
32978
32979 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32980 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32981 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32982 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32983 wdiEventData.pUserData = pUserData;
32984
32985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32986}
32987
32988/**
32989 @brief WDI_ProcessEXTScanStopReq -
32990 Extended Scan Stop request to FW
32991
32992 @param pWDICtx : wdi context
32993 pEventData : indication data
32994
32995 @see
32996 @return none
32997*/
32998WDI_Status
32999WDI_ProcessEXTScanStopReq
33000(
33001 WDI_ControlBlockType* pWDICtx,
33002 WDI_EventInfoType* pEventData
33003)
33004{
33005 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33006 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33007 wpt_uint8* pSendBuffer = NULL;
33008 wpt_uint16 usSendSize = 0;
33009 wpt_uint16 usDataOffset = 0;
33010 tHalExtScanStopReq halEXTScanStopReqParams;
33011
33012 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33013 "%s: %d ",__func__, __LINE__);
33014
33015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33016 ( NULL == pEventData->pCBfnc ))
33017 {
33018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33019 "%s: Invalid parameters", __func__);
33020 WDI_ASSERT(0);
33021 return WDI_STATUS_E_FAILURE;
33022 }
33023
33024 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33025 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33026
33027 /*-----------------------------------------------------------------------
33028 Get message buffer
33029 ! TO DO : proper conversion into the HAL Message Request Format
33030 -----------------------------------------------------------------------*/
33031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33032 pWDICtx,
33033 WDI_EXTSCAN_STOP_REQ,
33034 sizeof(tHalExtScanStopReq),
33035 &pSendBuffer, &usDataOffset,
33036 &usSendSize))||
33037 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33038 {
33039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33040 "Unable to get send buffer in %s %p %p %p", __func__,
33041 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33042 WDI_ASSERT(0);
33043 return WDI_STATUS_E_FAILURE;
33044 }
33045
33046 halEXTScanStopReqParams.requestId =
33047 pwdiEXTScanStopReqParams->requestId;
33048 halEXTScanStopReqParams.sessionId =
33049 pwdiEXTScanStopReqParams->sessionId;
33050
33051 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33052 " halEXTScanStopReqParams.requestId %u "
33053 " halEXTScanStopReqParams.sessionId %u ",
33054 halEXTScanStopReqParams.requestId,
33055 halEXTScanStopReqParams.sessionId);
33056
33057 wpalMemoryCopy(pSendBuffer+usDataOffset,
33058 &halEXTScanStopReqParams,
33059 sizeof(halEXTScanStopReqParams));
33060
33061 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33062
33063
33064 /*-------------------------------------------------------------------------
33065 Send EXTScan Stop Request to HAL
33066 -------------------------------------------------------------------------*/
33067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33068 wdiEXTScanStopCb, pEventData->pUserData,
33069 WDI_EXTSCAN_STOP_RSP);
33070}
33071
33072/**
33073 @brief WDI_EXTScanStartReq
33074
33075 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33076 WDI_EXTScanStartRspCb: callback for passing back the response
33077 of the Req operation received from the device
33078 pUserData: user data will be passed back with the callback
33079
33080 @return SUCCESS or FAIL
33081*/
33082WDI_Status
33083WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33084 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33085 void* pUserData)
33086{
33087 WDI_EventInfoType wdiEventData;
33088
33089 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33090 "%s: %d Enter",__func__, __LINE__);
33091 /*------------------------------------------------------------------------
33092 Sanity Check
33093 ------------------------------------------------------------------------*/
33094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33095 {
33096 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33097 "WDI API call before module is initialized - Fail request");
33098
33099 return WDI_STATUS_E_NOT_ALLOWED;
33100 }
33101
33102 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33103 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33104 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33105 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33106 wdiEventData.pUserData = pUserData;
33107
33108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33109}
33110
33111/**
33112 @brief WDI_ProcessEXTScanStartReq -
33113 Extended Scan Start Request to FW
33114
33115 @param pWDICtx : wdi context
33116 pEventData : indication data
33117
33118 @see
33119 @return none
33120*/
33121WDI_Status
33122WDI_ProcessEXTScanStartReq
33123(
33124 WDI_ControlBlockType* pWDICtx,
33125 WDI_EventInfoType* pEventData
33126)
33127{
33128 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33129 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33130 wpt_uint8* pSendBuffer = NULL;
33131 wpt_uint16 usSendSize = 0;
33132 wpt_uint16 usDataOffset = 0;
33133 tpHalExtScanStartReq pHalExtScanStartReqParams;
33134 int i = 0;
33135 int j = 0;
33136
33137 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33138 "%s: %d Enter",__func__, __LINE__);
33139
33140 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33141 ( NULL == pEventData->pCBfnc ))
33142 {
33143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33144 "%s: Invalid parameters", __func__);
33145 WDI_ASSERT(0);
33146 return WDI_STATUS_E_FAILURE;
33147 }
33148
33149 pwdiEXTScanStartReqParams =
33150 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33151 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33152
33153 /*-----------------------------------------------------------------------
33154 Get message buffer
33155 ! TO DO : proper conversion into the HAL Message Request Format
33156 -----------------------------------------------------------------------*/
33157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33158 pWDICtx,
33159 WDI_EXTSCAN_START_REQ,
33160 sizeof(tHalExtScanStartReq),
33161 &pSendBuffer, &usDataOffset,
33162 &usSendSize))||
33163 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33164 {
33165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33166 "Unable to get send buffer in %s %p %p %p", __func__,
33167 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33168 WDI_ASSERT(0);
33169 return WDI_STATUS_E_FAILURE;
33170 }
33171
33172 pHalExtScanStartReqParams =
33173 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33174
33175 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33176 pHalExtScanStartReqParams->maxApPerScan =
33177 pwdiEXTScanStartReqParams->maxAPperScan;
33178 pHalExtScanStartReqParams->reportThreshold =
33179 pwdiEXTScanStartReqParams->reportThreshold;
33180 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33181 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33182 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33183
33184 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33185 {
33186 pHalExtScanStartReqParams->bucketData[i].bucketId =
33187 pwdiEXTScanStartReqParams->buckets[i].bucket;
33188 pHalExtScanStartReqParams->bucketData[i].channelBand =
33189 pwdiEXTScanStartReqParams->buckets[i].band;
33190 pHalExtScanStartReqParams->bucketData[i].period =
33191 pwdiEXTScanStartReqParams->buckets[i].period;
33192 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33193 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33194 pHalExtScanStartReqParams->bucketData[i].numChannels =
33195 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33196
33197 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33198 {
33199 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33200 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33201 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33202 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33203 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33204 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33205 }
33206
33207 }
33208
33209
33210 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33211 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33212 " sessionId %u numBuckets%u ",
33213 pHalExtScanStartReqParams->basePeriod,
33214 pHalExtScanStartReqParams->maxApPerScan,
33215 pHalExtScanStartReqParams->reportThreshold,
33216 pHalExtScanStartReqParams->requestId,
33217 pHalExtScanStartReqParams->sessionId,
33218 pHalExtScanStartReqParams->numBuckets);
33219
33220 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33221 {
33222 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33223 " %d) bucketId %u channelBand %u period %u "
33224 " reportEvents %u numChannels %u ",i,
33225 pHalExtScanStartReqParams->bucketData[i].bucketId,
33226 pHalExtScanStartReqParams->bucketData[i].channelBand,
33227 pHalExtScanStartReqParams->bucketData[i].period,
33228 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33229 pHalExtScanStartReqParams->bucketData[i].numChannels);
33230
33231 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33232 {
33233 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33234 "%d) channel %u dwellTimeMs %u passive %u ",j,
33235 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33236 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33237 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33238 }
33239
33240 }
33241
Dino Mycle41bdc942014-06-10 11:30:24 +053033242 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33243
33244 /*-------------------------------------------------------------------------
33245 Send EXTSCAN Start Request to HAL
33246 -------------------------------------------------------------------------*/
33247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33248 wdiEXTScanStartCb, pEventData->pUserData,
33249 WDI_EXTSCAN_START_RSP);
33250}
33251
33252/**
33253 @brief WDI_EXTScanSetBSSIDHotlistReq
33254
33255 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33256 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33257 of the Req operation received from the device
33258 pUserData: user data will be passed back with the callback
33259
33260 @return SUCCESS or FAIL
33261*/
33262WDI_Status
33263WDI_EXTScanSetBSSIDHotlistReq(
33264 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33265 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33266 void* pUserData)
33267{
33268 WDI_EventInfoType wdiEventData;
33269
33270 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33271 "%s: %d Enter ",__func__, __LINE__);
33272 /*------------------------------------------------------------------------
33273 Sanity Check
33274 ------------------------------------------------------------------------*/
33275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33276 {
33277 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33278 "WDI API call before module is initialized - Fail request");
33279
33280 return WDI_STATUS_E_NOT_ALLOWED;
33281 }
33282
33283 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33284 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33285 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33286 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33287 wdiEventData.pUserData = pUserData;
33288
33289 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33290}
33291
33292/**
33293 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33294 Extended Scan Set BSSSID Hotlist Request to FW
33295
33296 @param pWDICtx : wdi context
33297 pEventData : indication data
33298
33299 @see
33300 @return none
33301*/
33302WDI_Status
33303WDI_ProcessEXTScanSetBSSIDHotlistReq
33304(
33305 WDI_ControlBlockType* pWDICtx,
33306 WDI_EventInfoType* pEventData
33307)
33308{
33309 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33310 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33311 wpt_uint8* pSendBuffer = NULL;
33312 wpt_uint16 usSendSize = 0;
33313 wpt_uint16 usDataOffset = 0;
33314 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33315 int i;
33316
33317 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33318 "%s: %d Enter",__func__, __LINE__);
33319
33320 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33321 ( NULL == pEventData->pCBfnc ))
33322 {
33323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33324 "%s: Invalid parameters", __func__);
33325 WDI_ASSERT(0);
33326 return WDI_STATUS_E_FAILURE;
33327 }
33328
33329 pwdiEXTScanSetBSSIDHotlistReqParams =
33330 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33331 wdiEXTScanSetBSSIDHotlistRspCb =
33332 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33333
33334 /*-----------------------------------------------------------------------
33335 Get message buffer
33336 ! TO DO : proper conversion into the HAL Message Request Format
33337 -----------------------------------------------------------------------*/
33338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33339 pWDICtx,
33340 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33341 sizeof(tHalBssidHotlistSetReq),
33342 &pSendBuffer, &usDataOffset,
33343 &usSendSize))||
33344 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33345 {
33346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33347 "Unable to get send buffer in %s %p %p %p", __func__,
33348 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33349 wdiEXTScanSetBSSIDHotlistRspCb);
33350 WDI_ASSERT(0);
33351 return WDI_STATUS_E_FAILURE;
33352 }
33353 pHalBssidHotlistSetReqParams =
33354 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33355
33356 pHalBssidHotlistSetReqParams->requestId =
33357 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33358
33359 pHalBssidHotlistSetReqParams->sessionId =
33360 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33361
33362 pHalBssidHotlistSetReqParams->numAp =
33363 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33364
33365 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33366
33367 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33368 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33369 WDI_MAC_ADDR_LEN);
33370
33371 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33372 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33373
33374 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33375 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33376
33377 pHalBssidHotlistSetReqParams->ap[i].channel =
33378 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33379
33380 }
33381
33382 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33383 "ReqID %u sessionId %u numAp %u ",
33384 pHalBssidHotlistSetReqParams->requestId,
33385 pHalBssidHotlistSetReqParams->sessionId,
33386 pHalBssidHotlistSetReqParams->numAp);
33387
33388 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33389
33390 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33391 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33392 __func__, __LINE__, i,
33393 pHalBssidHotlistSetReqParams->ap[i].bssid,
33394 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33395 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33396 pHalBssidHotlistSetReqParams->ap[i].channel);
33397
33398 }
33399
33400 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33401
33402
33403 /*-------------------------------------------------------------------------
33404 Send EXTScan Stop Request to HAL
33405 -------------------------------------------------------------------------*/
33406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33407 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33408 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33409}
33410
33411/**
33412 @brief WDI_EXTScanResetBSSIDHotlistReq
33413
33414 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33415 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33416 of the Req operation received from the device
33417 pUserData: user data will be passed back with the callback
33418
33419 @return SUCCESS or FAIL
33420*/
33421WDI_Status
33422WDI_EXTScanResetBSSIDHotlistReq(
33423 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33424 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33425 void* pUserData)
33426{
33427 WDI_EventInfoType wdiEventData;
33428
33429 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33430 "%s: %d",__func__, __LINE__);
33431 /*------------------------------------------------------------------------
33432 Sanity Check
33433 ------------------------------------------------------------------------*/
33434 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33435 {
33436 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33437 "WDI API call before module is initialized - Fail request");
33438
33439 return WDI_STATUS_E_NOT_ALLOWED;
33440 }
33441
33442 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33443 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33444 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33445 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33446 wdiEventData.pUserData = pUserData;
33447
33448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33449}
33450
33451/**
33452 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33453 Extended Scan reset BSSID hotlist Request to FW
33454
33455 @param pWDICtx : wdi context
33456 pEventData : indication data
33457
33458 @see
33459 @return none
33460*/
33461WDI_Status
33462WDI_ProcessEXTScanResetBSSIDHotlistReq
33463(
33464 WDI_ControlBlockType* pWDICtx,
33465 WDI_EventInfoType* pEventData
33466)
33467{
33468 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33469 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33470 wpt_uint8* pSendBuffer = NULL;
33471 wpt_uint16 usSendSize = 0;
33472 wpt_uint16 usDataOffset = 0;
33473 tpHalHotlistResetReq pHalHotlistResetReqParams;
33474
33475 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33476 "%s: %d",__func__, __LINE__);
33477
33478 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33479 ( NULL == pEventData->pCBfnc ))
33480 {
33481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33482 "%s: Invalid parameters", __func__);
33483 WDI_ASSERT(0);
33484 return WDI_STATUS_E_FAILURE;
33485 }
33486
33487 pwdiEXTScanResetBSSIDHotlistReqParams =
33488 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33489 wdiEXTScanResetBSSIDHotlistRspCb =
33490 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33491
33492 /*-----------------------------------------------------------------------
33493 Get message buffer
33494 ! TO DO : proper conversion into the HAL Message Request Format
33495 -----------------------------------------------------------------------*/
33496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33497 pWDICtx,
33498 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33499 sizeof(tHalHotlistResetReq),
33500 &pSendBuffer, &usDataOffset,
33501 &usSendSize))||
33502 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33503 {
33504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33505 "Unable to get send buffer in %s %p %p %p", __func__,
33506 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33507 wdiEXTScanResetBSSIDHotlistRspCb);
33508 WDI_ASSERT(0);
33509 return WDI_STATUS_E_FAILURE;
33510 }
33511 pHalHotlistResetReqParams =
33512 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33513
33514 pHalHotlistResetReqParams->requestId =
33515 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33516
33517 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33518
33519 /*-------------------------------------------------------------------------
33520 Send EXTScan Stop Request to HAL
33521 -------------------------------------------------------------------------*/
33522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33523 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33524 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33525}
33526
33527/**
33528 @brief WDI_EXTScanSetSignfRSSIChangeReq
33529
33530 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33531 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33532 of the Req operation received from the device
33533 pUserData: user data will be passed back with the callback
33534
33535 @return SUCCESS or FAIL
33536*/
33537WDI_Status
33538WDI_EXTScanSetSignfRSSIChangeReq(
33539 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33540 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33541 void* pUserData)
33542{
33543 WDI_EventInfoType wdiEventData;
33544
33545 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33546 "%s: %d ",__func__, __LINE__);
33547 /*------------------------------------------------------------------------
33548 Sanity Check
33549 ------------------------------------------------------------------------*/
33550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33551 {
33552 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33553 "WDI API call before module is initialized - Fail request");
33554
33555 return WDI_STATUS_E_NOT_ALLOWED;
33556 }
33557
33558 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33559 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33560 wdiEventData.uEventDataSize =
33561 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33562 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33563 wdiEventData.pUserData = pUserData;
33564
33565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33566}
33567
33568/**
33569 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33570 Extended Scan set Significant RSSI change Request to FW
33571
33572 @param pWDICtx : wdi context
33573 pEventData : indication data
33574
33575 @see
33576 @return none
33577*/
33578WDI_Status
33579WDI_ProcessEXTScanSetSignifRSSIChangeReq
33580(
33581 WDI_ControlBlockType* pWDICtx,
33582 WDI_EventInfoType* pEventData
33583)
33584{
33585 WDI_EXTScanSetSignfRSSIChangeReqParams*
33586 pwdiEXTScanSetSignfRSSIChangeReqParams;
33587 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33588 wpt_uint8* pSendBuffer = NULL;
33589 wpt_uint16 usSendSize = 0;
33590 wpt_uint16 usDataOffset = 0;
33591 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33592 int i;
33593
33594 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33595 "%s: %d Enter",__func__, __LINE__);
33596
33597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33598 ( NULL == pEventData->pCBfnc ))
33599 {
33600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33601 "%s: Invalid parameters", __func__);
33602 WDI_ASSERT(0);
33603 return WDI_STATUS_E_FAILURE;
33604 }
33605
33606 pwdiEXTScanSetSignfRSSIChangeReqParams =
33607 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33608 wdiEXTScanSetSignfRSSIChangeRspCb =
33609 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33610
33611 /*-----------------------------------------------------------------------
33612 Get message buffer
33613 ! TO DO : proper conversion into the HAL Message Request Format
33614 -----------------------------------------------------------------------*/
33615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33616 pWDICtx,
33617 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33618 sizeof(tHalSigRssiSetReq),
33619 &pSendBuffer, &usDataOffset,
33620 &usSendSize))||
33621 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33622 {
33623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33624 "Unable to get send buffer in %s %p %p %p", __func__,
33625 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33626 wdiEXTScanSetSignfRSSIChangeRspCb);
33627 WDI_ASSERT(0);
33628 return WDI_STATUS_E_FAILURE;
33629 }
33630
33631 pHalSigRssiSetReqParams =
33632 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33633
33634 pHalSigRssiSetReqParams->requestId =
33635 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33636 pHalSigRssiSetReqParams->sessionId =
33637 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33638 pHalSigRssiSetReqParams->rssiSampleSize =
33639 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33640 pHalSigRssiSetReqParams->lostApSampleSize =
33641 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33642 pHalSigRssiSetReqParams->minBreaching =
33643 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33644 pHalSigRssiSetReqParams->numAp =
33645 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33646
33647
33648 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33649
33650 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33651 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33652 WDI_MAC_ADDR_LEN);
33653
33654 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33655 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33656
33657 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33658 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33659
33660 pHalSigRssiSetReqParams->ap[i].channel =
33661 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33662
33663 }
33664
33665
33666 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33667 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33668 " minBreaching %u numAp %u ",
33669 pHalSigRssiSetReqParams->requestId,
33670 pHalSigRssiSetReqParams->sessionId,
33671 pHalSigRssiSetReqParams->rssiSampleSize,
33672 pHalSigRssiSetReqParams->lostApSampleSize,
33673 pHalSigRssiSetReqParams->minBreaching,
33674 pHalSigRssiSetReqParams->numAp);
33675
33676 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33677
33678 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33679 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33680 i,
33681 pHalSigRssiSetReqParams->ap[i].bssid,
33682 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33683 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33684 pHalSigRssiSetReqParams->ap[i].channel);
33685
33686 }
33687
33688 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33689
33690
33691 /*-------------------------------------------------------------------------
33692 Send EXTScan Stop Request to HAL
33693 -------------------------------------------------------------------------*/
33694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33695 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33696 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33697}
33698
33699/**
33700 @brief WDI_EXTScanResetSignfRSSIChangeReq
33701
33702 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33703 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33704 of the Req operation received from the device
33705 pUserData: user data will be passed back with the callback
33706
33707 @return SUCCESS or FAIL
33708*/
33709WDI_Status
33710WDI_EXTScanResetSignfRSSIChangeReq(
33711 WDI_EXTScanResetSignfRSSIChangeReqParams*
33712 pwdiEXTScanResetSignfRSSIChangeReqParams,
33713 WDI_EXTScanResetSignfRSSIChangeRspCb
33714 wdiEXTScanResetSignfRSSIChangeRspCb,
33715 void* pUserData)
33716{
33717 WDI_EventInfoType wdiEventData;
33718
33719 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33720 "%s: %d ",__func__, __LINE__);
33721 /*------------------------------------------------------------------------
33722 Sanity Check
33723 ------------------------------------------------------------------------*/
33724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33725 {
33726 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33727 "WDI API call before module is initialized - Fail request");
33728
33729 return WDI_STATUS_E_NOT_ALLOWED;
33730 }
33731
33732 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33733 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33734 wdiEventData.uEventDataSize =
33735 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33736 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33737 wdiEventData.pUserData = pUserData;
33738
33739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33740}
33741
33742/**
33743 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33744 Extended Scana reset Significant RSSI change Request to FW
33745
33746 @param pWDICtx : wdi context
33747 pEventData : indication data
33748
33749 @see
33750 @return none
33751*/
33752WDI_Status
33753WDI_ProcessEXTScanResetSignfRSSIChangeReq
33754(
33755 WDI_ControlBlockType* pWDICtx,
33756 WDI_EventInfoType* pEventData
33757)
33758{
33759 WDI_EXTScanResetSignfRSSIChangeReqParams*
33760 pwdiEXTScanResetSignfRSSIChangeReqParams;
33761 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33762 wpt_uint8* pSendBuffer = NULL;
33763 wpt_uint16 usSendSize = 0;
33764 wpt_uint16 usDataOffset = 0;
33765 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33766
33767 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33768 "%s: %d ",__func__, __LINE__);
33769
33770 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33771 ( NULL == pEventData->pCBfnc ))
33772 {
33773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33774 "%s: Invalid parameters", __func__);
33775 WDI_ASSERT(0);
33776 return WDI_STATUS_E_FAILURE;
33777 }
33778
33779 pwdiEXTScanResetSignfRSSIChangeReqParams =
33780 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33781 wdiEXTScanResetSignfRSSIChangeRspCb =
33782 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33783
33784 /*-----------------------------------------------------------------------
33785 Get message buffer
33786 ! TO DO : proper conversion into the HAL Message Request Format
33787 -----------------------------------------------------------------------*/
33788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33789 pWDICtx,
33790 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33791 sizeof(tHalSigRssiResetReq),
33792 &pSendBuffer, &usDataOffset,
33793 &usSendSize))||
33794 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33795 {
33796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33797 "Unable to get send buffer in %s %p %p %p", __func__,
33798 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33799 wdiEXTScanResetSignfRSSIChangeRspCb);
33800 WDI_ASSERT(0);
33801 return WDI_STATUS_E_FAILURE;
33802 }
33803 pHalSigRssiResetReqParams =
33804 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33805
33806 pHalSigRssiResetReqParams->requestId =
33807 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33808
33809 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33810
33811
33812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33813 wdiEXTScanResetSignfRSSIChangeRspCb,
33814 pEventData->pUserData,
33815 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33816}
33817
33818/**
33819 @brief Process Extended Scan Start Rsp function (called when a response
33820 is being received over the bus from HAL)
33821
33822 @param pWDICtx: pointer to the WLAN DAL context
33823 pEventData: pointer to the event information structure
33824
33825 @see
33826 @return Result of the function call
33827*/
33828WDI_Status
33829WDI_ProcessEXTScanStartRsp
33830(
33831 WDI_ControlBlockType* pWDICtx,
33832 WDI_EventInfoType* pEventData
33833)
33834{
33835 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33836
33837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33838 "%s: %d",__func__, __LINE__);
33839 /*-------------------------------------------------------------------------
33840 Sanity check
33841 -------------------------------------------------------------------------*/
33842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33843 ( NULL == pEventData->pEventData))
33844 {
33845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33846 "%s: Invalid parameters", __func__);
33847 WDI_ASSERT(0);
33848 return WDI_STATUS_E_FAILURE;
33849 }
33850
33851 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33852 if ( NULL == wdiEXTScanStartRspCb)
33853 {
33854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33855 "%s: Callback function Invalid", __func__);
33856 WDI_ASSERT(0);
33857 return WDI_STATUS_E_FAILURE;
33858 }
33859
33860 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33861
33862 return WDI_STATUS_SUCCESS;
33863}
33864
33865
33866/**
33867 @brief Process Extended Scan Stop Rsp function (called when a response
33868 is being received over the bus from HAL)
33869
33870 @param pWDICtx: pointer to the WLAN DAL context
33871 pEventData: pointer to the event information structure
33872
33873 @see
33874 @return Result of the function call
33875*/
33876WDI_Status
33877WDI_ProcessEXTScanStopRsp
33878(
33879 WDI_ControlBlockType* pWDICtx,
33880 WDI_EventInfoType* pEventData
33881)
33882{
33883 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33884
33885 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33886 "%s: %d",__func__, __LINE__);
33887
33888
33889 /*-------------------------------------------------------------------------
33890 Sanity check
33891 -------------------------------------------------------------------------*/
33892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33893 ( NULL == pEventData->pEventData))
33894 {
33895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33896 "%s: Invalid parameters", __func__);
33897 WDI_ASSERT(0);
33898 return WDI_STATUS_E_FAILURE;
33899 }
33900
33901 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33902 if ( NULL == wdiEXTScanStopRspCb)
33903 {
33904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33905 "%s: Callback function Invalid", __func__);
33906 WDI_ASSERT(0);
33907 return WDI_STATUS_E_FAILURE;
33908 }
33909
33910 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33911
33912 return WDI_STATUS_SUCCESS;
33913}
33914
33915/**
33916 @brief Process Extended Scan Get Cached Rsp function (called when a response
33917 is being received over the bus from HAL)
33918
33919 @param pWDICtx: pointer to the WLAN DAL context
33920 pEventData: pointer to the event information structure
33921
33922 @see
33923 @return Result of the function call
33924*/
33925WDI_Status
33926WDI_ProcessEXTScanGetCachedResultsRsp
33927(
33928 WDI_ControlBlockType* pWDICtx,
33929 WDI_EventInfoType* pEventData
33930)
33931{
33932 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33933
33934 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33935 "%s: %d Enter",__func__, __LINE__);
33936
33937
33938 /*-------------------------------------------------------------------------
33939 Sanity check
33940 -------------------------------------------------------------------------*/
33941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33942 ( NULL == pEventData->pEventData))
33943 {
33944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33945 "%s: Invalid parameters", __func__);
33946 WDI_ASSERT(0);
33947 return WDI_STATUS_E_FAILURE;
33948 }
33949
33950 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33951 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33952 {
33953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33954 "%s: Callback function Invalid", __func__);
33955 WDI_ASSERT(0);
33956 return WDI_STATUS_E_FAILURE;
33957 }
33958
33959 wdiEXTScanGetCachedResultsRspCb(
33960 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33961
33962 return WDI_STATUS_SUCCESS;
33963}
33964
33965/**
33966 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33967 is being received over the bus from HAL)
33968
33969 @param pWDICtx: pointer to the WLAN DAL context
33970 pEventData: pointer to the event information structure
33971
33972 @see
33973 @return Result of the function call
33974*/
33975WDI_Status
33976WDI_ProcessEXTScanGetCapabilitiesRsp
33977(
33978 WDI_ControlBlockType* pWDICtx,
33979 WDI_EventInfoType* pEventData
33980)
33981{
33982 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33983
33984 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33985 "%s: %d ",__func__, __LINE__);
33986
33987
33988 /*-------------------------------------------------------------------------
33989 Sanity check
33990 -------------------------------------------------------------------------*/
33991 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33992 ( NULL == pEventData->pEventData))
33993 {
33994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33995 "%s: Invalid parameters", __func__);
33996 WDI_ASSERT(0);
33997 return WDI_STATUS_E_FAILURE;
33998 }
33999
34000 wdiEXTScanGetCapabilitiesRspCb =
34001 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34002 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34003 {
34004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34005 "%s: Callback function Invalid", __func__);
34006 WDI_ASSERT(0);
34007 return WDI_STATUS_E_FAILURE;
34008 }
34009
34010 wdiEXTScanGetCapabilitiesRspCb(
34011 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34012
34013 return WDI_STATUS_SUCCESS;
34014}
34015
34016/**
34017 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34018 response is being received over the bus from HAL)
34019
34020 @param pWDICtx: pointer to the WLAN DAL context
34021 pEventData: pointer to the event information structure
34022
34023 @see
34024 @return Result of the function call
34025*/
34026WDI_Status
34027WDI_ProcessEXTScanSetHotlistBSSIDRsp
34028(
34029 WDI_ControlBlockType* pWDICtx,
34030 WDI_EventInfoType* pEventData
34031)
34032{
34033 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34034
34035 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34036 "%s: %d ",__func__, __LINE__);
34037
34038
34039 /*-------------------------------------------------------------------------
34040 Sanity check
34041 -------------------------------------------------------------------------*/
34042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34043 ( NULL == pEventData->pEventData))
34044 {
34045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34046 "%s: Invalid parameters", __func__);
34047 WDI_ASSERT(0);
34048 return WDI_STATUS_E_FAILURE;
34049 }
34050
34051 wdiEXTScanSetBSSIDHotlistRspCb =
34052 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34053 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34054 {
34055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34056 "%s: Callback function Invalid", __func__);
34057 WDI_ASSERT(0);
34058 return WDI_STATUS_E_FAILURE;
34059 }
34060
34061 wdiEXTScanSetBSSIDHotlistRspCb(
34062 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34063
34064 return WDI_STATUS_SUCCESS;
34065}
34066
34067/**
34068 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34069 when a response is being received over the bus from HAL)
34070
34071 @param pWDICtx: pointer to the WLAN DAL context
34072 pEventData: pointer to the event information structure
34073
34074 @see
34075 @return Result of the function call
34076*/
34077WDI_Status
34078WDI_ProcessEXTScanResetHotlistBSSIDRsp
34079(
34080 WDI_ControlBlockType* pWDICtx,
34081 WDI_EventInfoType* pEventData
34082)
34083{
34084 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34085
34086 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34087 "%s: %d ",__func__, __LINE__);
34088
34089
34090 /*-------------------------------------------------------------------------
34091 Sanity check
34092 -------------------------------------------------------------------------*/
34093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34094 ( NULL == pEventData->pEventData))
34095 {
34096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34097 "%s: Invalid parameters", __func__);
34098 WDI_ASSERT(0);
34099 return WDI_STATUS_E_FAILURE;
34100 }
34101
34102 wdiEXTScanResetBSSIDHotlistRspCb =
34103 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34104 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34105 {
34106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34107 "%s: Callback function Invalid", __func__);
34108 WDI_ASSERT(0);
34109 return WDI_STATUS_E_FAILURE;
34110 }
34111
34112 wdiEXTScanResetBSSIDHotlistRspCb(
34113 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34114
34115 return WDI_STATUS_SUCCESS;
34116}
34117
34118/**
34119 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34120 when a response is being received over the bus from HAL)
34121
34122 @param pWDICtx: pointer to the WLAN DAL context
34123 pEventData: pointer to the event information structure
34124
34125 @see
34126 @return Result of the function call
34127*/
34128WDI_Status
34129WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34130(
34131 WDI_ControlBlockType* pWDICtx,
34132 WDI_EventInfoType* pEventData
34133)
34134{
34135 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34136
34137 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34138 "%s: %d",__func__, __LINE__);
34139
34140
34141 /*-------------------------------------------------------------------------
34142 Sanity check
34143 -------------------------------------------------------------------------*/
34144 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34145 ( NULL == pEventData->pEventData))
34146 {
34147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34148 "%s: Invalid parameters", __func__);
34149 WDI_ASSERT(0);
34150 return WDI_STATUS_E_FAILURE;
34151 }
34152
34153 wdiEXTScanSetSignfRSSIChangeRspCb =
34154 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34155 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34156 {
34157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34158 "%s: Callback function Invalid", __func__);
34159 WDI_ASSERT(0);
34160 return WDI_STATUS_E_FAILURE;
34161 }
34162
34163 wdiEXTScanSetSignfRSSIChangeRspCb(
34164 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34165
34166 return WDI_STATUS_SUCCESS;
34167}
34168
34169/**
34170 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34171 (called when a response is being received over the bus from HAL)
34172
34173 @param pWDICtx: pointer to the WLAN DAL context
34174 pEventData: pointer to the event information structure
34175
34176 @see
34177 @return Result of the function call
34178*/
34179WDI_Status
34180WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34181(
34182 WDI_ControlBlockType* pWDICtx,
34183 WDI_EventInfoType* pEventData
34184)
34185{
34186 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34187
34188 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34189 "%s: %d Enter",__func__, __LINE__);
34190
34191
34192 /*-------------------------------------------------------------------------
34193 Sanity check
34194 -------------------------------------------------------------------------*/
34195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34196 ( NULL == pEventData->pEventData))
34197 {
34198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34199 "%s: Invalid parameters", __func__);
34200 WDI_ASSERT(0);
34201 return WDI_STATUS_E_FAILURE;
34202 }
34203
34204 wdiEXTScanResetSignfRSSIChangeRspCb =
34205 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34206 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34207 {
34208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34209 "%s: Callback function Invalid", __func__);
34210 WDI_ASSERT(0);
34211 return WDI_STATUS_E_FAILURE;
34212 }
34213
34214 wdiEXTScanResetSignfRSSIChangeRspCb(
34215 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34216
34217 return WDI_STATUS_SUCCESS;
34218}
34219#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034220
34221/**
34222 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34223
34224 @param None
34225
34226 @see
34227
34228 @return Status of the request
34229*/
34230WDI_Status
34231WDI_SetSpoofMacAddrReq
34232(
34233 WDI_SpoofMacAddrInfoType* pWdiReq,
34234 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34235 void* pUserData)
34236{
34237 WDI_EventInfoType wdiEventData;
34238
34239 /*-------------------------------------------------------------------------
34240 Sanity Check
34241 ------------------------------------------------------------------------*/
34242 if (eWLAN_PAL_FALSE == gWDIInitialized)
34243 {
34244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34245 "WDI API call before module is initialized - Fail request!");
34246
34247 return WDI_STATUS_E_NOT_ALLOWED;
34248 }
34249
34250 /*-------------------------------------------------------------------------
34251 Fill in Event data and post to the Main FSM
34252 ------------------------------------------------------------------------*/
34253 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34254 wdiEventData.pEventData = pWdiReq;
34255 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34256 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34257 wdiEventData.pUserData = pUserData;
34258
34259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34260}
34261
34262/**
34263 @brief Process SpoofMacAddr Request
34264
34265 @param pWDICtx: pointer to the WLAN DAL context
34266 pEventData: pointer to the event information structure
34267
34268 @see
34269 @return Result of the function call
34270*/
34271WDI_Status
34272WDI_ProcessSpoofMacAddrReq
34273(
34274 WDI_ControlBlockType* pWDICtx,
34275 WDI_EventInfoType* pEventData
34276)
34277{
34278 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34279 wpt_uint8* pSendBuffer = NULL;
34280 wpt_uint16 usDataOffset = 0;
34281 wpt_uint16 usSendSize = 0;
34282 WDI_Status wdiStatus;
34283 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34284 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34285
34286
34287 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34288 "%s: %d Enter",__func__, __LINE__);
34289
34290 /*-------------------------------------------------------------------------
34291 Sanity check
34292 -------------------------------------------------------------------------*/
34293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34294 ( NULL == pEventData->pEventData))
34295 {
34296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34297 "%s: Invalid parameters", __func__);
34298 WDI_ASSERT(0);
34299 return WDI_STATUS_E_FAILURE;
34300 }
34301 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34302
34303 /*-----------------------------------------------------------------------
34304 Get message buffer
34305 -----------------------------------------------------------------------*/
34306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34307 WDI_SPOOF_MAC_ADDR_REQ,
34308 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34309 &pSendBuffer, &usDataOffset, &usSendSize))||
34310 (usSendSize < (usDataOffset +
34311 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34312 {
34313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34314 "Unable to get send buffer in Process Spoof Mac Addr Req");
34315 WDI_ASSERT(0);
34316 return WDI_STATUS_E_FAILURE;
34317 }
34318
34319 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34320 wdiSpoofMacAddr->macAddr,
34321 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34322
34323 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34324
34325 wpalMemoryCopy( pSendBuffer+usDataOffset,
34326 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34327 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34328
34329 /*-------------------------------------------------------------------------
34330 Send Suspend Request to HAL
34331 -------------------------------------------------------------------------*/
34332 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34333 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34334
34335 return wdiStatus;
34336}
34337
34338/**
34339 @brief Process Spoof Mac Address Rsp function
34340 (called when a response is being received over the bus from HAL)
34341
34342 @param pWDICtx: pointer to the WLAN DAL context
34343 pEventData: pointer to the event information structure
34344
34345 @see
34346 @return Result of the function call
34347*/
34348WDI_Status
34349WDI_ProcessSpoofMacAddrRsp
34350(
34351 WDI_ControlBlockType* pWDICtx,
34352 WDI_EventInfoType* pEventData
34353)
34354{
34355 tMacSpoofedScanResp halRsp;
34356 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34357 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34358
34359 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34360 "%s: %d Enter",__func__, __LINE__);
34361
34362 /*-------------------------------------------------------------------------
34363 Sanity check
34364 -------------------------------------------------------------------------*/
34365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34366 ( NULL == pEventData->pEventData))
34367 {
34368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34369 "%s: Invalid parameters", __func__);
34370 WDI_ASSERT(0);
34371 return WDI_STATUS_E_FAILURE;
34372 }
34373 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34374
34375 /*-------------------------------------------------------------------------
34376 Extract response and send it to UMAC
34377 -------------------------------------------------------------------------*/
34378 wpalMemoryCopy( &halRsp,
34379 pEventData->pEventData, sizeof(halRsp));
34380
34381 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34382
34383 /*Notify UMAC*/
34384 wdiSpoofMacAddrRspCb(
34385 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34386
34387 return WDI_STATUS_SUCCESS;
34388}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034389
34390/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034391 @brief Process Get Frame Log Rsp function
34392 (called when a response is being received over the bus from HAL)
34393
34394 @param pWDICtx: pointer to the WLAN DAL context
34395 pEventData: pointer to the event information structure
34396
34397 @see
34398 @return Result of the function call
34399*/
34400WDI_Status
34401WDI_ProcessGetFrameLogRsp
34402(
34403 WDI_ControlBlockType* pWDICtx,
34404 WDI_EventInfoType* pEventData
34405)
34406{
34407 tGetFrameLogResp halRsp;
34408 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34409 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34410
34411 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34412 "%s: %d Enter",__func__, __LINE__);
34413
34414 /*-------------------------------------------------------------------------
34415 Sanity check
34416 -------------------------------------------------------------------------*/
34417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34418 ( NULL == pEventData->pEventData))
34419 {
34420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34421 "%s: Invalid parameters", __func__);
34422 WDI_ASSERT(0);
34423 return WDI_STATUS_E_FAILURE;
34424 }
34425
34426 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34427
34428 /*-------------------------------------------------------------------------
34429 Extract response and send it to UMAC
34430 -------------------------------------------------------------------------*/
34431 wpalMemoryCopy( &halRsp,
34432 pEventData->pEventData, sizeof(halRsp));
34433
34434 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34435
34436 /*Notify UMAC*/
34437 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34438
34439 return WDI_STATUS_SUCCESS;
34440}
34441/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034442 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034443
34444 @param pWDICtx: pointer to the WLAN DAL context
34445 pEventData: pointer to the event information structure
34446
34447 @see
34448 @return Result of the function call
34449*/
34450WDI_Status
34451WDI_ProcessGetFrameLogReq
34452(
34453 WDI_ControlBlockType* pWDICtx,
34454 WDI_EventInfoType* pEventData
34455)
34456{
34457 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34458 wpt_uint8* pSendBuffer = NULL;
34459 wpt_uint16 usDataOffset = 0;
34460 wpt_uint16 usSendSize = 0;
34461 WDI_Status wdiStatus;
34462 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034463 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034464
34465
34466 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34467 "%s: %d Enter",__func__, __LINE__);
34468
34469 /*-------------------------------------------------------------------------
34470 Sanity check
34471 ------------------------------------------------------------------------*/
34472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34473 ( NULL == pEventData->pEventData))
34474 {
34475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34476 "%s: Invalid parameters", __func__);
34477 WDI_ASSERT(0);
34478 return WDI_STATUS_E_FAILURE;
34479 }
34480
34481 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34482
34483 /*-----------------------------------------------------------------------
34484 Get message buffer
34485 -----------------------------------------------------------------------*/
34486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34487 WDI_GET_FRAME_LOG_REQ,
34488 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34489 &pSendBuffer, &usDataOffset, &usSendSize))||
34490 (usSendSize < (usDataOffset +
34491 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34492 {
34493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34494 "Unable to get send buffer in GetFrameLog Req");
34495 WDI_ASSERT(0);
34496 return WDI_STATUS_E_FAILURE;
34497 }
34498
34499 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34500 wdiGetFrameLogReq->flags;
34501
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034502 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034503
34504 wpalMemoryCopy( pSendBuffer+usDataOffset,
34505 &halGetFrameLogReq.tGetFrameLogReqParams,
34506 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34507
34508 /*-------------------------------------------------------------------------
34509 Send Suspend Request to HAL
34510 ------------------------------------------------------------------------*/
34511 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34512 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34513
34514 return wdiStatus;
34515}
34516/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034517 @brief Process MgmtFrame Logging Init Rsp function
34518 (called when a response is being received over the bus from HAL)
34519
34520 @param pWDICtx: pointer to the WLAN DAL context
34521 pEventData: pointer to the event information structure
34522
34523 @see
34524 @return Result of the function call
34525*/
34526WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034527WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034528(
34529 WDI_ControlBlockType* pWDICtx,
34530 WDI_EventInfoType* pEventData
34531)
34532{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034533 tFWLoggingInitResp halRsp;
34534 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34535 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034536
34537 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34538 "%s: %d Enter",__func__, __LINE__);
34539
34540 /*-------------------------------------------------------------------------
34541 Sanity check
34542 -------------------------------------------------------------------------*/
34543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34544 ( NULL == pEventData->pEventData))
34545 {
34546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34547 "%s: Invalid parameters", __func__);
34548 WDI_ASSERT(0);
34549 return WDI_STATUS_E_FAILURE;
34550 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034551 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034552
34553 /*-------------------------------------------------------------------------
34554 Extract response and send it to UMAC
34555 -------------------------------------------------------------------------*/
34556 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34557
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034558 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034559
34560 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034561 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034562
34563 return WDI_STATUS_SUCCESS;
34564}
34565
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034566WDI_Status
34567WDI_ProcessFWLoggingDXEdoneInd
34568(
34569 WDI_ControlBlockType* pWDICtx,
34570 WDI_EventInfoType* pEventData
34571)
34572{
34573 wpt_uint8* pSendBuffer = NULL;
34574 wpt_uint16 usDataOffset = 0;
34575 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034576 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034577 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034578 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34579
34580
34581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34582
34583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34584 "%s", __func__);
34585
34586 /*-------------------------------------------------------------------------
34587 Sanity check
34588 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034589 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034590 {
34591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34592 "%s: Invalid parameters", __func__);
34593 WDI_ASSERT(0);
34594 return WDI_STATUS_E_FAILURE;
34595 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034596 pLoggingSession = (WDI_DS_LoggingSessionType *)
34597 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34598 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034599 /*-----------------------------------------------------------------------
34600 Get message buffer
34601 -----------------------------------------------------------------------*/
34602
34603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34604 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034605 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034606 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034607 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034608 {
34609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34610 "Unable to get send buffer in RTS CTS ind %p ",
34611 pEventData);
34612 WDI_ASSERT(0);
34613 return WDI_STATUS_E_FAILURE;
34614 }
34615 FWLoggingDxeDoneIndParams =
34616 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34617
34618 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034619 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034620 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034621
34622 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34623
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034624 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034625 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034626 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34627
34628 pWDICtx->pReqStatusUserData = NULL;
34629 pWDICtx->pfncRspCB = NULL;
34630 /*-------------------------------------------------------------------------
34631 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34632 -------------------------------------------------------------------------*/
34633 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34634 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34635}
34636
Sachin Ahuja715aafc2015-07-21 23:35:10 +053034637
34638/**
34639 @brief Process Fatal Event Logs Rsp function
34640 (called when a response is being received over the bus from HAL)
34641
34642 @param pWDICtx: pointer to the WLAN DAL context
34643 pEventData: pointer to the event information structure
34644
34645 @see
34646 @return Result of the function call
34647*/
34648WDI_Status
34649WDI_ProcessFatalEventLogsRsp
34650(
34651 WDI_ControlBlockType* pWDICtx,
34652 WDI_EventInfoType* pEventData
34653)
34654{
34655 tHalFatalEventLoggingRspParams halRsp;
34656 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34657 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
34658
34659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34660 "%s: %d Enter",__func__, __LINE__);
34661
34662 /*-------------------------------------------------------------------------
34663 Sanity check
34664 -------------------------------------------------------------------------*/
34665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34666 ( NULL == pEventData->pEventData))
34667 {
34668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34669 "%s: Invalid parameters", __func__);
34670 WDI_ASSERT(0);
34671 return WDI_STATUS_E_FAILURE;
34672 }
34673 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
34674
34675 /*-------------------------------------------------------------------------
34676 Extract response and send it to UMAC
34677 -------------------------------------------------------------------------*/
34678 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34679
34680 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34681
34682 /*Notify UMAC*/
34683 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
34684 pWDICtx->pRspCBUserData);
34685
34686 return WDI_STATUS_SUCCESS;
34687}
34688
34689/**
34690 @brief Process FatalEventLogs Request
34691
34692 @param pWDICtx: pointer to the WLAN DAL context
34693 pEventData: pointer to the event information structure
34694
34695 @see
34696 @return Result of the function call
34697*/
34698
34699WDI_Status
34700WDI_ProcessFatalEventLogsReq
34701
34702(
34703 WDI_ControlBlockType* pWDICtx,
34704 WDI_EventInfoType* pEventData
34705)
34706{
34707 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
34708 wpt_uint8* pSendBuffer = NULL;
34709 wpt_uint16 usDataOffset = 0;
34710 wpt_uint16 usSendSize = 0;
34711 WDI_Status wdiStatus;
34712 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
34713 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34714
34715
34716 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34717 "%s: %d Enter",__func__, __LINE__);
34718
34719 /*-------------------------------------------------------------------------
34720 Sanity check
34721 ------------------------------------------------------------------------*/
34722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34723 ( NULL == pEventData->pEventData))
34724 {
34725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34726 "%s: Invalid parameters", __func__);
34727 WDI_ASSERT(0);
34728 return WDI_STATUS_E_FAILURE;
34729 }
34730 wdiFatalEventLogsReq =
34731 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
34732
34733 /*-----------------------------------------------------------------------
34734 Get message buffer
34735 -----------------------------------------------------------------------*/
34736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34737 WDI_FATAL_EVENT_LOGGING_REQ,
34738 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
34739 &pSendBuffer, &usDataOffset, &usSendSize))||
34740 (usSendSize < (usDataOffset +
34741 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
34742 {
34743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34744 "Unable to get send buffer in Fatal Event Req");
34745 WDI_ASSERT(0);
34746 return WDI_STATUS_E_FAILURE;
34747 }
34748 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
34749 wdiFatalEventLogsReq->reason_code;
34750
34751 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
34752
34753 wpalMemoryCopy( pSendBuffer+usDataOffset,
34754 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
34755 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
34756
34757 /*-------------------------------------------------------------------------
34758 Send Mgmt Logging Init Request to HAL
34759 ------------------------------------------------------------------------*/
34760 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34761 wdiFatalEventLogsRspCb, pEventData->pUserData,
34762 WDI_FATAL_EVENT_LOGGING_RSP);
34763
34764 return wdiStatus;
34765
34766
34767}
34768
34769
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034770/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034771 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034772
34773 @param pWDICtx: pointer to the WLAN DAL context
34774 pEventData: pointer to the event information structure
34775
34776 @see
34777 @return Result of the function call
34778*/
34779WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034780WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034781(
34782 WDI_ControlBlockType* pWDICtx,
34783 WDI_EventInfoType* pEventData
34784)
34785{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034786 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034787 wpt_uint8* pSendBuffer = NULL;
34788 wpt_uint16 usDataOffset = 0;
34789 wpt_uint16 usSendSize = 0;
34790 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034791 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34792 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034793
34794
34795 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34796 "%s: %d Enter",__func__, __LINE__);
34797
34798 /*-------------------------------------------------------------------------
34799 Sanity check
34800 ------------------------------------------------------------------------*/
34801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34802 ( NULL == pEventData->pEventData))
34803 {
34804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34805 "%s: Invalid parameters", __func__);
34806 WDI_ASSERT(0);
34807 return WDI_STATUS_E_FAILURE;
34808 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034809 wdiFWLoggingInitReq =
34810 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034811
34812 /*-----------------------------------------------------------------------
34813 Get message buffer
34814 -----------------------------------------------------------------------*/
34815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034816 WDI_FW_LOGGING_INIT_REQ,
34817 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034818 &pSendBuffer, &usDataOffset, &usSendSize))||
34819 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034820 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034821 {
34822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34823 "Unable to get send buffer in Process Mgmt Logging Init Req");
34824 WDI_ASSERT(0);
34825 return WDI_STATUS_E_FAILURE;
34826 }
34827
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034828 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34829 wdiFWLoggingInitReq->enableFlag;
34830 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34831 wdiFWLoggingInitReq->frameSize;
34832 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34833 wdiFWLoggingInitReq->frameType;
34834 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34835 wdiFWLoggingInitReq->bufferMode;
34836 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34837 wdiFWLoggingInitReq->continuousFrameLogging;
34838 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34839 wdiFWLoggingInitReq->minLogBufferSize;
34840 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34841 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034842 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34843 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34844 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34845 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034846
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034847 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034848
34849 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034850 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34851 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034852
34853 /*-------------------------------------------------------------------------
34854 Send Mgmt Logging Init Request to HAL
34855 ------------------------------------------------------------------------*/
34856 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034857 wdiFWLoggingInitRspCb, pEventData->pUserData,
34858 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034859
34860 return wdiStatus;
34861}
34862
34863/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034864 @brief WDI_EncryptMsgReq
34865
34866 @param pwdiEncryptMsgParams: Req parameter for the FW
34867 wdiEncryptMsgCbRsp: callback for passing back the response
34868 of the Req operation received from the device
34869 pUserData: user data will be passed back with the callback
34870
34871 @return SUCCESS or FAIL
34872*/
34873WDI_Status
34874WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34875 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34876 void* pUserData)
34877{
34878 WDI_EventInfoType wdiEventData;
34879
34880 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34881 "%s: %d Enter" ,__func__, __LINE__);
34882 /*------------------------------------------------------------------------
34883 Sanity Check
34884 ------------------------------------------------------------------------*/
34885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34886 {
34887 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34888 "WDI API call before module is initialized - Fail request");
34889
34890 return WDI_STATUS_E_NOT_ALLOWED;
34891 }
34892
34893 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34894 wdiEventData.pEventData = pwdiEncryptMsgParams;
34895 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34896 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34897 wdiEventData.pUserData = pUserData;
34898
34899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34900}
34901
34902/*
34903 * FUNCTION: WDI_ProcessEncryptMsgReq
34904 * Request to WDI to encrypt the given message.
34905 *
34906 * @param pWDICtx: pointer to the WLAN DAL context
34907 * pEventData: pointer to the event information structure
34908 *
34909 * @return Result of the function call
34910 */
34911
34912WDI_Status
34913WDI_ProcessEncryptMsgReq
34914(
34915 WDI_ControlBlockType* pWDICtx,
34916 WDI_EventInfoType* pEventData
34917)
34918{
34919 wpt_uint8* pSendBuffer = NULL;
34920 wpt_uint16 usDataOffset = 0;
34921 wpt_uint16 usSendSize = 0;
34922 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34923 tSetEncryptedDataParams *pHalEncryptDataReq;
34924 wpt_pkt80211 *pkt = NULL;
34925
34926 /*-------------------------------------------------------------------------
34927 Sanity check
34928 -------------------------------------------------------------------------*/
34929 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34930 ( NULL == pEventData->pCBfnc ) )
34931 {
34932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34933 "%s: Invalid parameters", __func__);
34934 WDI_ASSERT(0);
34935 return WDI_STATUS_E_FAILURE;
34936 }
34937
34938 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34939
34940 /*-----------------------------------------------------------------------
34941 Get message buffer
34942 -----------------------------------------------------------------------*/
34943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34944 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34945 sizeof(tSetEncryptedDataReqMsg),
34946 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34947 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34948 {
34949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34950 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34951 pEventData);
34952 WDI_ASSERT(0);
34953 return WDI_STATUS_E_FAILURE;
34954 }
34955
34956 pWDICtx->wdiReqStatusCB = NULL;
34957 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34958 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34959
34960 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34961 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34962
34963 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34964
34965 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34966 pkt->encParams.keyParams.key[0].keyId;
34967
34968 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34969 &pkt->encParams.keyParams.key[0].key[0], 16);
34970
34971 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34972
34973 pHalEncryptDataReq->data.length = pkt->data.length;
34974 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34975
34976 /*-------------------------------------------------------------------------
34977 Send Get STA Request to HAL
34978 -------------------------------------------------------------------------*/
34979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34980 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34981}
34982
34983/*
34984 * FUNCTION: WDI_ProcessEncryptMsgRsp
34985 * Receives the encrypted message from the firmware
34986 * @param pWDICtx: pointer to the WLAN DAL context
34987 * pEventData: pointer to the event information structure
34988 *
34989 * @return Result of the function call
34990 */
34991WDI_Status
34992WDI_ProcessEncryptMsgRsp
34993(
34994 WDI_ControlBlockType* pWDICtx,
34995 WDI_EventInfoType* pEventData
34996)
34997{
34998 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34999 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35000
35001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35002 "In %s",__func__);
35003
35004 /*-------------------------------------------------------------------------
35005 Sanity check
35006 -------------------------------------------------------------------------*/
35007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35008 ( NULL == pEventData->pEventData))
35009 {
35010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35011 "%s: Invalid parameters", __func__);
35012 WDI_ASSERT(0);
35013 return WDI_STATUS_E_FAILURE;
35014 }
35015
35016 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35017
35018 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35019
35020 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35021 pEventData->pEventData,
35022 pWDICtx->pRspCBUserData);
35023 return WDI_STATUS_SUCCESS;
35024}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035025
35026WDI_Status
35027WDI_NanRequest
35028(
35029 WDI_NanRequestType *pwdiNanRequest,
35030 void *usrData
35031)
35032{
35033 WDI_EventInfoType wdiEventData;
35034
35035 /*------------------------------------------------------------------------
35036 Sanity Check
35037 ------------------------------------------------------------------------*/
35038 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35039 {
35040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35041 "WDI API call before module is initialized - Fail request");
35042
35043 return WDI_STATUS_E_NOT_ALLOWED;
35044 }
35045
35046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35047 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35048 pwdiNanRequest->request_data_len);
35049
35050 /*------------------------------------------------------------------------
35051 Fill in Event data and post to the Main FSM
35052 ------------------------------------------------------------------------*/
35053 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35054 wdiEventData.pEventData = pwdiNanRequest;
35055 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35056 + pwdiNanRequest->request_data_len;
35057 wdiEventData.pUserData = usrData;
35058 wdiEventData.pCBfnc = NULL;
35059
35060
35061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35062}
35063
35064WDI_Status
35065WDI_ProcessNanRequest
35066(
35067 WDI_ControlBlockType* pWDICtx,
35068 WDI_EventInfoType* pEventData
35069)
35070{
35071 WDI_NanRequestType *pwdiNanRequest = NULL;
35072 wpt_uint8* pSendBuffer = NULL;
35073 wpt_uint16 usDataOffset = 0;
35074 wpt_uint16 usSendSize = 0;
35075
35076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35077 "WDI_ProcessNanRequest");
35078
35079 /*-------------------------------------------------------------------------
35080 Sanity check
35081 -------------------------------------------------------------------------*/
35082 if (( NULL == pEventData ) ||
35083 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35084 {
35085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35086 "%s: Invalid parameters", __FUNCTION__);
35087 WDI_ASSERT(0);
35088 return WDI_STATUS_E_FAILURE;
35089 }
35090
35091 /*-----------------------------------------------------------------------
35092 Get message buffer
35093 -----------------------------------------------------------------------*/
35094 if (( WDI_STATUS_SUCCESS
35095 != WDI_GetMessageBuffer( pWDICtx,
35096 WDI_NAN_REQUEST,
35097 pwdiNanRequest->request_data_len,
35098 &pSendBuffer,
35099 &usDataOffset,
35100 &usSendSize))||
35101 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35102 {
35103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35104 "Unable to get send buffer in NAN request %p %p",
35105 pEventData, pwdiNanRequest);
35106 WDI_ASSERT(0);
35107 return WDI_STATUS_E_FAILURE;
35108 }
35109
35110 wpalMemoryCopy( pSendBuffer+usDataOffset,
35111 pwdiNanRequest->request_data,
35112 pwdiNanRequest->request_data_len);
35113
35114 pWDICtx->pReqStatusUserData = NULL;
35115 pWDICtx->pfncRspCB = NULL;
35116 vos_mem_free( pEventData->pUserData);
35117
35118 /*-------------------------------------------------------------------------
35119 Send NAN Request to HAL
35120 -------------------------------------------------------------------------*/
35121 return WDI_SendMsg( pWDICtx,
35122 pSendBuffer,
35123 usSendSize,
35124 NULL,
35125 NULL,
35126 WDI_NAN_RESPONSE);
35127}
35128
35129/**
35130 @brief Process NAN Response function (called when a
35131 response is being received over the bus from HAL)
35132
35133 @param pWDICtx: pointer to the WLAN DAL context
35134 pEventData: pointer to the event information structure
35135
35136 @see
35137 @return Result of the function call
35138*/
35139WDI_Status
35140WDI_ProcessNanResponse
35141(
35142 WDI_ControlBlockType* pWDICtx,
35143 WDI_EventInfoType* pEventData
35144)
35145{
35146 WDI_Status wdiStatus;
35147 eHalStatus halStatus;
35148
35149 /*-------------------------------------------------------------------------
35150 Sanity check
35151 -------------------------------------------------------------------------*/
35152 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35153 ( NULL == pEventData->pEventData))
35154 {
35155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35156 "%s: Invalid parameters", __func__);
35157 WDI_ASSERT(0);
35158 return WDI_STATUS_E_FAILURE;
35159 }
35160
35161 halStatus = *((eHalStatus*)pEventData->pEventData);
35162 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35163
35164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35165 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35166
35167 return WDI_STATUS_SUCCESS;
35168}/*WDI_ProcessNanResponse*/
35169
35170
35171/**
35172 @brief Process NAN Event function (called when
35173 an indication is being received over the
35174 bus from HAL)
35175
35176 @param pWDICtx: pointer to the WLAN DAL context
35177 pEventData: pointer to the event information structure
35178
35179 @see
35180 @return Result of the function call
35181*/
35182WDI_Status
35183WDI_ProcessNanEvent
35184(
35185 WDI_ControlBlockType* pWDICtx,
35186 WDI_EventInfoType* pEventData
35187)
35188{
35189 WDI_LowLevelIndType wdiInd;
35190
35191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35192
35193 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35194 ( NULL == pEventData->pEventData ))
35195 {
35196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35197 "%s: Invalid parameters", __func__);
35198 WDI_ASSERT( 0 );
35199 return WDI_STATUS_E_FAILURE;
35200 }
35201
35202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35203 "%s: Received NAN event", __func__);
35204 /*-------------------------------------------------------------------------
35205 Extract indication and send it to UMAC
35206 -------------------------------------------------------------------------*/
35207 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35208 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35209 pEventData->uEventDataSize;
35210 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35211 pEventData->pEventData;
35212
35213 /*Notify UMAC*/
35214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35215
35216 return WDI_STATUS_SUCCESS;
35217}/*WDI_ProcessNanEvent*/
35218
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035219
35220
35221WDI_Status
35222WDI_Process_LostLinkParamInd
35223(
35224 WDI_ControlBlockType* pWDICtx,
35225 WDI_EventInfoType* pEventData
35226)
35227{
35228 WDI_LowLevelIndType wdiInd;
35229 tHalLostLinkParametersIndParams halLostLinkParamInd;
35230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35231
35232 /*-------------------------------------------------------------------------
35233 Sanity check
35234 -------------------------------------------------------------------------*/
35235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35236 ( NULL == pEventData->pEventData))
35237 {
35238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35239 "%s: Invalid parameters", __func__);
35240 WDI_ASSERT(0);
35241 return WDI_STATUS_E_FAILURE;
35242 }
35243
35244 /*-------------------------------------------------------------------------
35245 Extract indication and send it to UMAC
35246 -------------------------------------------------------------------------*/
35247 wpalMemoryCopy( (void *)&halLostLinkParamInd,
35248 pEventData->pEventData,
35249 sizeof(tHalLostLinkParametersIndParams));
35250
35251
35252 /*Fill in the indication parameters*/
35253 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
35254 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
35255 (void *)&halLostLinkParamInd,
35256 sizeof(WDI_LostLinkParamsIndType));
35257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35258 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
35259 "linkFlTx : %d,lastDataRate : %d", __func__,
35260 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
35261 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
35262 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
35263 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
35264 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
35265 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
35266 /*Notify UMAC*/
35267 if (pWDICtx->wdiLowLevelIndCB)
35268 {
35269 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
35270 }
35271
35272 return WDI_STATUS_SUCCESS;
35273
35274}
35275
Abhishek Singh41988ba2015-05-25 19:42:29 +053035276WDI_Status
35277WDI_ProcessSetRtsCtsHtvhtInd
35278(
35279 WDI_ControlBlockType* pWDICtx,
35280 WDI_EventInfoType* pEventData
35281)
35282{
35283 wpt_uint8* pSendBuffer = NULL;
35284 wpt_uint16 usDataOffset = 0;
35285 wpt_uint16 usSendSize = 0;
35286 wpt_uint32 *rtsCtsVal;
35287 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35288 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35289
35290
35291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35292
35293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35294 "%s", __func__);
35295
35296 /*-------------------------------------------------------------------------
35297 Sanity check
35298 -------------------------------------------------------------------------*/
35299 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35300 {
35301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35302 "%s: Invalid parameters", __func__);
35303 WDI_ASSERT(0);
35304 return WDI_STATUS_E_FAILURE;
35305 }
35306 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35307 /*-----------------------------------------------------------------------
35308 Get message buffer
35309 -----------------------------------------------------------------------*/
35310
35311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35312 WDI_SET_RTS_CTS_HTVHT_IND,
35313 sizeof(tHalRtsCtsHtvhtIndParams),
35314 &pSendBuffer, &usDataOffset, &usSendSize))||
35315 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35316 {
35317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35318 "Unable to get send buffer in RTS CTS ind %p ",
35319 pEventData);
35320 WDI_ASSERT(0);
35321 return WDI_STATUS_E_FAILURE;
35322 }
35323 rtsCtsHtvhtIndParams =
35324 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35325 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35326
35327 pWDICtx->pReqStatusUserData = NULL;
35328 pWDICtx->pfncRspCB = NULL;
35329 /*-------------------------------------------------------------------------
35330 Send SET_RTS_CTS_HTVHT Indication to HAL
35331 -------------------------------------------------------------------------*/
35332 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35333 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35334}
35335
35336WDI_Status
35337WDI_SetRtsCtsHTVhtInd
35338(
35339 wpt_uint32 rtsCtsVal
35340)
35341{
35342 WDI_EventInfoType wdiEventData;
35343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35344
35345 /*------------------------------------------------------------------------
35346 Sanity Check
35347 ------------------------------------------------------------------------*/
35348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35349 {
35350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35351 "WDI API call before module is initialized - Fail request");
35352 return WDI_STATUS_E_NOT_ALLOWED;
35353 }
35354
35355 /*------------------------------------------------------------------------
35356 Fill in Event data and post to the Main FSM
35357 ------------------------------------------------------------------------*/
35358 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35359 wdiEventData.pEventData = (void *) &rtsCtsVal;
35360 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35361 wdiEventData.pCBfnc = NULL;
35362 wdiEventData.pUserData = NULL;
35363
35364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35365
35366}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053035367
35368WDI_Status
35369WDI_ProcessEnableDisableCAEventInd
35370(
35371 WDI_ControlBlockType* pWDICtx,
35372 WDI_EventInfoType* pEventData
35373)
35374{
35375 wpt_uint8* pSendBuffer = NULL;
35376 wpt_uint16 usDataOffset = 0;
35377 wpt_uint16 usSendSize = 0;
35378 wpt_uint32 *val;
35379 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
35380 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35381
35382
35383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35384
35385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35386 "%s", __func__);
35387
35388 /*-------------------------------------------------------------------------
35389 Sanity check
35390 -------------------------------------------------------------------------*/
35391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35392 {
35393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35394 "%s: Invalid parameters", __func__);
35395 WDI_ASSERT(0);
35396 return WDI_STATUS_E_FAILURE;
35397 }
35398 val = (wpt_uint32*)pEventData->pEventData;
35399 /*-----------------------------------------------------------------------
35400 Get message buffer
35401 -----------------------------------------------------------------------*/
35402
35403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35404 WDI_SEND_FREQ_RANGE_CONTROL_IND,
35405 sizeof(tHalAvoidFreqRangeCtrlParam),
35406 &pSendBuffer, &usDataOffset, &usSendSize))||
35407 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
35408 {
35409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35410 "Unable to get send buffer in Channel Avoidance Ind %p ",
35411 pEventData);
35412 WDI_ASSERT(0);
35413 return WDI_STATUS_E_FAILURE;
35414 }
35415 avoidFreqRangeCtrlParam =
35416 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
35417 avoidFreqRangeCtrlParam->status = *val;
35418
35419 pWDICtx->pReqStatusUserData = NULL;
35420 pWDICtx->pfncRspCB = NULL;
35421 /*-------------------------------------------------------------------------
35422 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
35423 -------------------------------------------------------------------------*/
35424 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35425 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35426}
35427
35428WDI_Status
35429WDI_EnableDisableCAEventInd
35430(
35431 wpt_uint32 val
35432)
35433{
35434 WDI_EventInfoType wdiEventData;
35435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35436
35437 /*------------------------------------------------------------------------
35438 Sanity Check
35439 ------------------------------------------------------------------------*/
35440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35441 {
35442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35443 "WDI API call before module is initialized - Fail request");
35444 return WDI_STATUS_E_NOT_ALLOWED;
35445 }
35446
35447 /*------------------------------------------------------------------------
35448 Fill in Event data and post to the Main FSM
35449 ------------------------------------------------------------------------*/
35450 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
35451 wdiEventData.pEventData = (void *) &val;
35452 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35453 wdiEventData.pCBfnc = NULL;
35454 wdiEventData.pUserData = NULL;
35455
35456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35457
35458} /* WDI_EnableDisableCAEventInd */